diff --git a/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java b/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
index b766448..303f198 100644
--- a/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
+++ b/src/main/java/net/onrc/onos/apps/bgproute/BgpRoute.java
@@ -1255,6 +1255,9 @@
                                         update.getPrefix(), update.getRibEntry().getNextHop());
                             }
                             break;
+                        default:
+                            log.error("Unknown operation {}", update.getOperation());
+                            break;
                     }
                 } catch (InterruptedException e) {
                     log.debug("Interrupted while taking from updates queue", e);
diff --git a/src/main/java/net/onrc/onos/core/intent/IntentMap.java b/src/main/java/net/onrc/onos/core/intent/IntentMap.java
index 25b98a5..e72cb13 100644
--- a/src/main/java/net/onrc/onos/core/intent/IntentMap.java
+++ b/src/main/java/net/onrc/onos/core/intent/IntentMap.java
@@ -9,6 +9,8 @@
 
 import net.onrc.onos.core.intent.Intent.IntentState;
 import net.onrc.onos.core.intent.runtime.IntentStateList;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
 
 /**
  * @author Toshio Koide (t-koide@onlab.us)
@@ -17,6 +19,7 @@
     private HashSet<ChangedListener> listeners = new HashSet<>();
     private HashMap<String, Intent> intents = new HashMap<>();
     private LinkedList<ChangedEvent> events = new LinkedList<>();
+    private static final Logger log = LoggerFactory.getLogger(IntentMap.class);
 
     public enum ChangedEventType {
         /**
@@ -88,6 +91,9 @@
                 case ERROR:
                     handleErrorOperation(operation);
                     break;
+                default:
+                    log.error("Unknown intent operation {}", operation.operator);
+                    break;
             }
         }
         notifyEvents();
@@ -203,6 +209,9 @@
             case DEL_ACK:
                 // do nothing
                 break;
+            default:
+                log.error("Unknown intent state {}", targetIntent.getState());
+                break;
         }
     }
 
diff --git a/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java b/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
index ee28b4b..e4966f6 100644
--- a/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
+++ b/src/main/java/net/onrc/onos/core/intent/runtime/PathCalcRuntime.java
@@ -132,6 +132,9 @@
                 case ERROR:
                     // just ignore
                     break;
+                default:
+                    log.error("Unknown intent operator {}", intentOp.operator);
+                    break;
             }
         }
         // TODO optimize locking of NetworkGraph
diff --git a/src/main/java/net/onrc/onos/core/packet/DHCPPacketType.java b/src/main/java/net/onrc/onos/core/packet/DHCPPacketType.java
index 7c4cdb8..eb43d34 100644
--- a/src/main/java/net/onrc/onos/core/packet/DHCPPacketType.java
+++ b/src/main/java/net/onrc/onos/core/packet/DHCPPacketType.java
@@ -77,9 +77,9 @@
                 return "DHCPLEASEUNKNOWN";
             case 13:
                 return "DHCPLEASEACTIVE";
+            default:
+                return "DHCP_UnknownType(" + value + ")";
         }
-
-        return "DHCP_UnknownType(" + value + ")";
     }
 
     public static DHCPPacketType getType(int value) {
@@ -110,8 +110,8 @@
                 return DHCPLEASEUNKNOWN;
             case 13:
                 return DHCPLEASEACTIVE;
+            default:
+                return null;
         }
-
-        return null;
     }
 }
diff --git a/src/main/java/net/onrc/onos/core/topology/TopologyManager.java b/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
index 580e785..869b282 100644
--- a/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
+++ b/src/main/java/net/onrc/onos/core/topology/TopologyManager.java
@@ -263,6 +263,9 @@
                             reorderedAddedDeviceEvents.remove(id);
                         }
                         break;
+                    default:
+                        log.error("Unknown topology event {}",
+                                  event.eventType());
                 }
             }
 
diff --git a/src/main/java/net/onrc/onos/core/util/FlowEntryAction.java b/src/main/java/net/onrc/onos/core/util/FlowEntryAction.java
index 0290924..16b9d27 100644
--- a/src/main/java/net/onrc/onos/core/util/FlowEntryAction.java
+++ b/src/main/java/net/onrc/onos/core/util/FlowEntryAction.java
@@ -1611,6 +1611,9 @@
             case ACTION_VENDOR:
                 ret += " action=VENDOR";
                 break;
+            default:
+                ret += " action=unknown";
+                break;
         }
         ret += "]";
 
@@ -1711,9 +1714,11 @@
                 case ACTION_VENDOR:
                     // TODO: Handle it as appropriate
                     break;
+                default:
+                    throw new IllegalArgumentException("Invalid action string");
             }
         } catch (IllegalArgumentException e) {
-            throw new IllegalArgumentException("Invalid action string");
+            throw new IllegalArgumentException("Invalid action type", e);
         }
     }
 }
