Segment Routing refactor with flow objectives

Change-Id: I0b87f89bb8b18522b9d38bdf5e96f55485b6f1e3
diff --git a/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java b/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java
index d47c78f..ebfa635 100644
--- a/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java
+++ b/openflow/api/src/main/java/org/onosproject/openflow/controller/driver/AbstractOpenFlowSwitch.java
@@ -19,10 +19,11 @@
 import java.io.IOException;
 import java.net.InetSocketAddress;
 import java.net.SocketAddress;
-import java.util.Collections;
+import java.util.ArrayList;
 import java.util.List;
 import java.util.concurrent.RejectedExecutionException;
 import java.util.concurrent.atomic.AtomicInteger;
+import java.util.stream.Collectors;
 
 import org.jboss.netty.channel.Channel;
 import org.onlab.packet.IpAddress;
@@ -64,7 +65,7 @@
 
     private OFVersion ofVersion;
 
-    protected OFPortDescStatsReply ports;
+    protected List<OFPortDescStatsReply> ports = new ArrayList<>();
 
     protected boolean tableFull;
 
@@ -251,7 +252,12 @@
 
     @Override
     public void setPortDescReply(OFPortDescStatsReply portDescReply) {
-        this.ports = portDescReply;
+        this.ports.add(portDescReply);
+    }
+
+    @Override
+    public void setPortDescReplies(List<OFPortDescStatsReply> portDescReplies) {
+        this.ports.addAll(portDescReplies);
     }
 
     @Override
@@ -379,7 +385,10 @@
 
     @Override
     public List<OFPortDesc> getPorts() {
-        return Collections.unmodifiableList(ports.getEntries());
+        return this.ports.stream()
+                  .flatMap((portReply) -> (portReply.getEntries().stream()))
+                  .collect(Collectors.toList());
+        //return Collections.unmodifiableList(ports.getEntries());
     }
 
     @Override