[ONOS-3804] [ONOS-3805] Initial L3 flowrules setup for Compute/Gateway nodes and PNAT Handler for OpenstackRouting

 - Performs app refactoring (openstackrouting and openstackswitching)
 - Implements L3 REST call corresponding openstackRouter and openstackRouterInterface.
 - Implements initail L3 rules population to compute/gateway node.
 - Implements PNAT rules population corresponding packet-in event.
 - Fixs comments and javadocs.
 - Rebases on master.

Change-Id: I5ad68810f50dc977737d30c43150c892b978b7cb
diff --git a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouter.java b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouter.java
index 8e513f1..5230c18 100644
--- a/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouter.java
+++ b/apps/openstacknetworking/api/src/main/java/org/onosproject/openstacknetworking/OpenstackRouter.java
@@ -16,6 +16,7 @@
 package org.onosproject.openstacknetworking;
 
 import java.util.Objects;
+import static com.google.common.base.Preconditions.checkNotNull;
 
 /**
  * An Openstack Neutron Router Model.
@@ -31,9 +32,9 @@
     private final String tenantId;
     private final String id;
     private final String name;
-    private final RouterStatus status;
-    private final boolean adminStateUp;
-    private final OpenstackExternalGateway gatewayExternalInfo;
+    private RouterStatus status;
+    private boolean adminStateUp;
+    private OpenstackExternalGateway gatewayExternalInfo;
 
     private OpenstackRouter(String id, String tenantId, String name, RouterStatus status,
                            boolean adminStateUp, OpenstackExternalGateway gatewayExternalInfo) {
@@ -209,8 +210,8 @@
          * @return OpenstasckRouter object
          */
         public OpenstackRouter build() {
-            return new OpenstackRouter(id, tenantId, name, status,
-                    adminStateUp, gatewayExternalInfo);
+            return new OpenstackRouter(checkNotNull(id), checkNotNull(tenantId), name, checkNotNull(status),
+                    checkNotNull(adminStateUp), gatewayExternalInfo);
         }
     }