[ONOS-3793] Implements the Openstack Security Group REST call parser

Change-Id: Ie6665d4ebae26e363853db28fb2a535c55f1e2ec
diff --git a/apps/openstackswitching/api/src/main/java/org/onosproject/openstackswitching/OpenstackPort.java b/apps/openstackswitching/api/src/main/java/org/onosproject/openstackswitching/OpenstackPort.java
index b746b6c..f9a5916 100644
--- a/apps/openstackswitching/api/src/main/java/org/onosproject/openstackswitching/OpenstackPort.java
+++ b/apps/openstackswitching/api/src/main/java/org/onosproject/openstackswitching/OpenstackPort.java
@@ -15,13 +15,12 @@
  */
 package org.onosproject.openstackswitching;
 
-import com.google.common.collect.Lists;
 import org.onlab.packet.Ip4Address;
 import org.onlab.packet.MacAddress;
 
+import java.util.Collection;
 import java.util.Collections;
 import java.util.HashMap;
-import java.util.List;
 
 import static com.google.common.base.Preconditions.checkNotNull;
 
@@ -49,13 +48,13 @@
     // <subnet id, ip address>
     private HashMap<String, Ip4Address> fixedIps;
     private String id;
-    private List<String> securityGroups;
+    private Collection<String> securityGroups;
     private String deviceId;
 
     private OpenstackPort(PortStatus status, String name, boolean adminStateUp,
                           String networkId, String tenantId, String deviceOwner,
                           MacAddress macAddress, HashMap fixedIps, String id,
-                          List<String> securityGroups, String deviceId) {
+                          Collection<String> securityGroups, String deviceId) {
 
         this.status = status;
         this.name = name;
@@ -158,7 +157,7 @@
      *
      * @return security group info
      */
-    public List<String> securityGroups() {
+    public Collection<String> securityGroups() {
         return securityGroups;
     }
 
@@ -187,7 +186,7 @@
         OpenstackPort op = new OpenstackPort(this.status, this.name, this.adminStateUp,
                 this.networkId, this.tenantId, this.deviceOwner, this.macAddress,
                 (HashMap) this.fixedIps.clone(), this.id,
-                Collections.unmodifiableList(this.securityGroups), this.deviceId);
+                Collections.unmodifiableCollection(this.securityGroups), this.deviceId);
 
         return op;
     }
@@ -209,12 +208,11 @@
         // list  of hash map <subnet id, ip address>
         private HashMap<String, Ip4Address> fixedIps;
         private String id;
-        private List<String> securityGroups;
+        private Collection<String> securityGroups;
         private String deviceId;
 
         Builder() {
             fixedIps = new HashMap<>();
-            securityGroups = Lists.newArrayList();
         }
 
         /**
@@ -328,12 +326,11 @@
         /**
          * Sets security group of the port.
          *
-         * @param securityGroup security group of the port
+         * @param securityGroupList security group list of the port
          * @return Builder object
          */
-        public Builder securityGroup(String securityGroup) {
-            securityGroups.add(securityGroup);
-
+        public Builder securityGroup(Collection<String> securityGroupList) {
+            this.securityGroups = securityGroupList;
             return this;
         }
 
diff --git a/apps/openstackswitching/api/src/main/java/org/onosproject/openstackswitching/OpenstackSubnet.java b/apps/openstackswitching/api/src/main/java/org/onosproject/openstackswitching/OpenstackSubnet.java
index bc536e8..f832768 100644
--- a/apps/openstackswitching/api/src/main/java/org/onosproject/openstackswitching/OpenstackSubnet.java
+++ b/apps/openstackswitching/api/src/main/java/org/onosproject/openstackswitching/OpenstackSubnet.java
@@ -17,6 +17,8 @@
 
 import org.onlab.packet.Ip4Address;
 
+import java.util.Collection;
+import java.util.Collections;
 import java.util.List;
 
 import static com.google.common.base.Preconditions.checkNotNull;
@@ -34,10 +36,11 @@
     private String gatewayIp;
     private String cidr;
     private String id;
+    private Collection<String> securityGroups;
 
     private OpenstackSubnet(String name, boolean enableHhcp, String networkId,
                             String tenantId, List<Ip4Address> dnsNameservers, String gatewayIp,
-                            String cidr, String id) {
+                            String cidr, String id, Collection<String> securityGroups) {
         this.name = name;
         this.enableHhcp = enableHhcp;
         this.networkId = checkNotNull(networkId);
@@ -46,6 +49,7 @@
         this.gatewayIp = gatewayIp;
         this.cidr = checkNotNull(cidr);
         this.id = checkNotNull(id);
+        this.securityGroups = securityGroups;
     }
 
     /**
@@ -89,6 +93,10 @@
         return id;
     }
 
+    public Collection<String> securityGroups() {
+        return Collections.unmodifiableCollection(this.securityGroups);
+    }
+
     /**
      * OpenstackSubnet Builder class.
      *
@@ -102,6 +110,7 @@
         private String gatewayIp;
         private String cidr;
         private String id;
+        private Collection<String> securityGroups;
 
         Builder() {}
 
@@ -153,9 +162,15 @@
             return this;
         }
 
+        public Builder securityGroups(Collection<String> securityGroups) {
+            this.securityGroups = securityGroups;
+
+            return this;
+        }
+
         public OpenstackSubnet build() {
             return new OpenstackSubnet(name, enableDhcp, networkId, tenantId,
-                    dnsNameservers, gatewayIp, cidr, id);
+                    dnsNameservers, gatewayIp, cidr, id, securityGroups);
         }
     }
 }