Prevent XConnect loop

Change-Id: I65c52342840ebef944a65b8c6f65a33448da59cf
diff --git a/app/src/main/java/org/onosproject/segmentrouting/xconnect/api/XconnectService.java b/app/src/main/java/org/onosproject/segmentrouting/xconnect/api/XconnectService.java
index 25f1b01..4e82524 100644
--- a/app/src/main/java/org/onosproject/segmentrouting/xconnect/api/XconnectService.java
+++ b/app/src/main/java/org/onosproject/segmentrouting/xconnect/api/XconnectService.java
@@ -22,6 +22,7 @@
 import org.onosproject.net.DeviceId;
 import org.onosproject.net.PortNumber;
 
+import java.util.List;
 import java.util.Set;
 
 /**
@@ -73,6 +74,24 @@
     boolean hasXconnect(ConnectPoint cp);
 
     /**
+     * Gives xconnect VLAN of given port of a device.
+     *
+     * @param deviceId Device ID
+     * @param port Port number
+     * @return true if given VLAN vlanId is XConnect VLAN on device deviceId.
+     */
+    List<VlanId> getXconnectVlans(DeviceId deviceId, PortNumber port);
+
+    /**
+     * Checks given VLAN is XConnect VLAN in given device.
+     *
+     * @param deviceId Device ID
+     * @param vlanId VLAN ID
+     * @return true if given VLAN vlanId is XConnect VLAN on device deviceId.
+     */
+    boolean isXconnectVlan(DeviceId deviceId, VlanId vlanId);
+
+    /**
      * Returns the Xconnect next objective store.
      *
      * @return current contents of the xconnectNextObjStore
@@ -86,4 +105,12 @@
      */
     void removeNextId(int nextId);
 
+    /**
+     * Returns Xconnect next objective ID associated with group device + vlan.
+     *
+     * @param deviceId - Device ID
+     * @param vlanId - VLAN ID
+     * @return Current associated group ID
+     */
+    int getNextId(DeviceId deviceId, VlanId vlanId);
 }