[CORD-313] Handles uncaught exceptions when device is not configured

Includes following minor changes
    - Move DeviceConfiguration and DeviceProperties to config package
    - Create DeviceConfigNotFoundException

Change-Id: I32455d88c712bb65cd7f71dab9472ae003303de2
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultTransitGroupHandler.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultTransitGroupHandler.java
index b009e86..8e1b6a8 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultTransitGroupHandler.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/grouphandler/DefaultTransitGroupHandler.java
@@ -23,6 +23,8 @@
 import org.onosproject.net.Link;
 import org.onosproject.net.flowobjective.FlowObjectiveService;
 import org.onosproject.net.link.LinkService;
+import org.onosproject.segmentrouting.config.DeviceConfigNotFoundException;
+import org.onosproject.segmentrouting.config.DeviceProperties;
 import org.onosproject.store.service.EventuallyConsistentMap;
 
 /**
@@ -171,7 +173,15 @@
             if (deviceSubSet.size() > 1) {
                 boolean avoidEdgeRouterPairing = true;
                 for (DeviceId device : deviceSubSet) {
-                    if (!deviceConfig.isEdgeDevice(device)) {
+                    boolean isEdge;
+                    try {
+                        isEdge = deviceConfig.isEdgeDevice(device);
+                    } catch (DeviceConfigNotFoundException e) {
+                        log.warn(e.getMessage() + " Skipping filterEdgeRouterOnlyPairings on this device.");
+                        continue;
+                    }
+
+                    if (!isEdge) {
                         avoidEdgeRouterPairing = false;
                         break;
                     }