[CORD-200] Improves Segment Routing using Network Configuration Subsystem

The missing part of gerrit #5533

Change-Id: I0830aa80f9be0e9933a99e0c12518aef67008a53
diff --git a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/config/SegmentRoutingConfig.java b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/config/SegmentRoutingConfig.java
index 618ebbc..6dc3f0d 100644
--- a/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/config/SegmentRoutingConfig.java
+++ b/apps/segmentrouting/src/main/java/org/onosproject/segmentrouting/config/SegmentRoutingConfig.java
@@ -16,6 +16,7 @@
 
 package org.onosproject.segmentrouting.config;
 
+import com.fasterxml.jackson.databind.node.ArrayNode;
 import org.onlab.packet.Ip4Address;
 import org.onlab.packet.MacAddress;
 import org.onosproject.net.DeviceId;
@@ -35,6 +36,7 @@
     private static final String MAC = "routerMac";
     private static final String SID = "nodeSid";
     private static final String EDGE = "isEdgeRouter";
+    private static final String ADJSID = "adjacencySids";
 
     public Optional<String> getName() {
         String name = get(NAME, null);
@@ -79,22 +81,44 @@
         return (BasicElementConfig) setOrClear(EDGE, isEdgeRouter);
     }
 
-    // TODO extract array from JsonNode
     public List<AdjacencySid> getAdjacencySids() {
-        return new ArrayList<AdjacencySid>();
+        ArrayList<AdjacencySid> adjacencySids = new ArrayList<>();
+
+        if (!object.has(ADJSID)) {
+            return adjacencySids;
+        }
+
+        ArrayNode adjacencySidNodes = (ArrayNode) object.path(ADJSID);
+        adjacencySidNodes.forEach(adjacencySidNode -> {
+            int asid = adjacencySidNode.path(AdjacencySid.ASID).asInt();
+
+            ArrayList<Integer> ports = new ArrayList<Integer>();
+            ArrayNode portsNodes = (ArrayNode) adjacencySidNode.path(AdjacencySid.PORTS);
+            portsNodes.forEach(portNode -> {
+                ports.add(portNode.asInt());
+            });
+
+            AdjacencySid adjacencySid = new AdjacencySid(asid, ports);
+            adjacencySids.add(adjacencySid);
+        });
+
+        return adjacencySids;
     }
 
     public class AdjacencySid {
-        int sid;
+        private static final String ASID = "adjSid";
+        private static final String PORTS = "ports";
+
+        int asid;
         List<Integer> ports;
 
-        public AdjacencySid(int sid, List<Integer> ports) {
-            this.sid = sid;
+        public AdjacencySid(int asid, List<Integer> ports) {
+            this.asid = asid;
             this.ports = ports;
         }
 
-        public int getSid() {
-            return sid;
+        public int getAsid() {
+            return asid;
         }
 
         public List<Integer> getPorts() {