fix obstacle constraint to support edge links

support paths including edge links (e.g., compilation result of
hostToHostIntent) for the obstacle constraint

Change-Id: I0f82e3cb8e4b88ffd30a9275e5e7dcaf5fbae122
diff --git a/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java b/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java
index 7908b58..0b0c414 100644
--- a/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java
+++ b/core/api/src/main/java/org/onosproject/net/intent/constraint/ObstacleConstraint.java
@@ -64,10 +64,29 @@
     }
 
     private boolean isValid(Link link) {
-        DeviceId src = link.src().deviceId();
-        DeviceId dst = link.dst().deviceId();
+        if (link.type() != Link.Type.EDGE) {
+            DeviceId src = link.src().deviceId();
+            DeviceId dst = link.dst().deviceId();
 
-        return !(obstacles.contains(src) || obstacles.contains(dst));
+            return !(obstacles.contains(src) || obstacles.contains(dst));
+
+        } else {
+
+            boolean isSrc = true;
+            if (link.src().elementId() instanceof DeviceId) {
+
+                DeviceId src = link.src().deviceId();
+                isSrc = !(obstacles.contains(src));
+            }
+
+            boolean isDst = true;
+            if (link.dst().elementId() instanceof DeviceId) {
+                DeviceId dst = link.dst().deviceId();
+                isDst = !(obstacles.contains(dst));
+            }
+
+            return isSrc || isDst;
+        }
     }
 
     @Override