MRI version bumpup for Aluminium
[netvirt.git] / vpnmanager / api / src / main / java / org / opendaylight / netvirt / vpnmanager / api / VpnHelper.java
index 0d605ced11603592f272e946663aa6c17e302fa8..70b039d7930c31ff38063de285b1c10931ec89fb 100644 (file)
@@ -5,29 +5,18 @@
  * terms of the Eclipse Public License v1.0 which accompanies this distribution,
  * and is available at http://www.eclipse.org/legal/epl-v10.html
  */
-
 package org.opendaylight.netvirt.vpnmanager.api;
 
-import com.google.common.base.Optional;
-
-import java.math.BigInteger;
 import java.util.ArrayList;
 import java.util.Collections;
 import java.util.List;
+import java.util.Optional;
 import java.util.concurrent.ExecutionException;
-
-import org.opendaylight.controller.md.sal.binding.api.DataBroker;
-import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;
-import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInstances;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInterfaces;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstance;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstanceKey;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterfaceKey;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.vpn._interface.VpnInstanceNames;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.vpn._interface.VpnInstanceNames.AssociatedSubnetType;
-import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.vpn._interface.VpnInstanceNamesBuilder;
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.jdt.annotation.Nullable;
+import org.opendaylight.mdsal.binding.api.DataBroker;
+import org.opendaylight.mdsal.binding.api.ReadTransaction;
+import org.opendaylight.mdsal.common.api.LogicalDatastoreType;
 import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.yang.types.rev130715.Uuid;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.VpnInstanceOpData;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.VpnInstanceToVpnId;
@@ -35,17 +24,29 @@ import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.VpnInstanceOpDataEntryKey;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.vpn.instance.op.data.entry.VpnToDpnList;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.vpn.instance.op.data.entry.VpnToDpnListKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.VpnInstances;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.VpnInterfaces;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstance;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.instances.VpnInstanceKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.interfaces.VpnInterface;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.interfaces.VpnInterfaceKey;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.interfaces.vpn._interface.VpnInstanceNames;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.interfaces.vpn._interface.VpnInstanceNames.AssociatedSubnetType;
+import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.l3vpn.rev200204.vpn.interfaces.vpn._interface.VpnInstanceNamesBuilder;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.Subnetmaps;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.Subnetmap;
 import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.neutronvpn.rev150602.subnetmaps.SubnetmapKey;
 import org.opendaylight.yangtools.yang.binding.DataObject;
 import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;
-
+import org.opendaylight.yangtools.yang.common.Uint64;
 
 public final class VpnHelper {
-    private VpnHelper() { }
+    private VpnHelper() {
+
+    }
 
     //FIXME: Implement caches for DS reads
+    @Nullable
     public static VpnInstance getVpnInstance(DataBroker broker, String vpnInstanceName) {
         InstanceIdentifier<VpnInstance> id = InstanceIdentifier.builder(VpnInstances.class).child(VpnInstance.class,
                 new VpnInstanceKey(vpnInstanceName)).build();
@@ -55,7 +56,7 @@ public final class VpnHelper {
 
     public static <T extends DataObject> Optional<T> read(DataBroker broker, LogicalDatastoreType datastoreType,
                                                           InstanceIdentifier<T> path) {
-        try (ReadOnlyTransaction tx = broker.newReadOnlyTransaction()) {
+        try (ReadTransaction tx = broker.newReadOnlyTransaction()) {
             return tx.read(datastoreType, path).get();
         } catch (InterruptedException | ExecutionException e) {
             throw new RuntimeException(e);
@@ -65,8 +66,8 @@ public final class VpnHelper {
     public static List<VpnInstance> getAllVpnInstances(DataBroker broker) {
         InstanceIdentifier<VpnInstances> id = InstanceIdentifier.builder(VpnInstances.class).build();
         Optional<VpnInstances> optVpnInstances = read(broker, LogicalDatastoreType.CONFIGURATION, id);
-        if (optVpnInstances.isPresent()) {
-            return optVpnInstances.get().getVpnInstance();
+        if (optVpnInstances.isPresent() && optVpnInstances.get().getVpnInstance() != null) {
+            return new ArrayList<VpnInstance>(optVpnInstances.get().getVpnInstance().values());
         } else {
             return Collections.emptyList();
         }
@@ -91,7 +92,7 @@ public final class VpnHelper {
                 = read(broker, LogicalDatastoreType.CONFIGURATION, id);
         long vpnId = -1;
         if (vpnInstance.isPresent()) {
-            vpnId = vpnInstance.get().getVpnId();
+            vpnId = vpnInstance.get().getVpnId().toJava();
         }
         return vpnId;
     }
@@ -104,6 +105,7 @@ public final class VpnHelper {
                         .VpnInstanceKey(vpnName)).build();
     }
 
+    @Nullable
     public static VpnInterface getVpnInterface(DataBroker broker, String vpnInterfaceName) {
         InstanceIdentifier<VpnInterface> id = getVpnInterfaceIdentifier(vpnInterfaceName);
         Optional<VpnInterface> vpnInterface = read(broker, LogicalDatastoreType.CONFIGURATION, id);
@@ -115,8 +117,9 @@ public final class VpnHelper {
                 .child(VpnInterface.class, new VpnInterfaceKey(vpnInterfaceName)).build();
     }
 
+    @Nullable
     public static String getFirstVpnNameFromVpnInterface(final VpnInterface original) {
-        List<VpnInstanceNames> optList = original.getVpnInstanceNames();
+        List<VpnInstanceNames> optList = new ArrayList<VpnInstanceNames>(original.getVpnInstanceNames().values());
         if (optList != null && !optList.isEmpty()) {
             return optList.get(0).getVpnName();
         } else {
@@ -124,10 +127,13 @@ public final class VpnHelper {
         }
     }
 
-    public static List<String> getVpnInterfaceVpnInstanceNamesString(List<VpnInstanceNames> vpnInstanceList) {
-        List listVpn = new ArrayList<String>();
-        for (VpnInstanceNames vpnInterfaceVpnInstance : vpnInstanceList) {
-            listVpn.add(vpnInterfaceVpnInstance.getVpnName());
+    @NonNull
+    public static List<String> getVpnInterfaceVpnInstanceNamesString(@Nullable List<VpnInstanceNames> vpnInstanceList) {
+        List<String> listVpn = new ArrayList<>();
+        if (vpnInstanceList != null) {
+            for (VpnInstanceNames vpnInterfaceVpnInstance : vpnInstanceList) {
+                listVpn.add(vpnInterfaceVpnInstance.getVpnName());
+            }
         }
         return listVpn;
     }
@@ -138,14 +144,18 @@ public final class VpnHelper {
 
     public static void removeVpnInterfaceVpnInstanceNamesFromList(String vpnName,
                                List<VpnInstanceNames> vpnInstanceList) {
-        vpnInstanceList.removeIf(instance -> instance.getVpnName().equals(vpnName));
+        if (vpnInstanceList != null) {
+            vpnInstanceList.removeIf(instance -> vpnName.equals(instance.getVpnName()));
+        }
     }
 
     public static boolean doesVpnInterfaceBelongToVpnInstance(String vpnName,
                                                           List<VpnInstanceNames> vpnInstanceList) {
-        for (VpnInstanceNames vpnInstance : vpnInstanceList) {
-            if (vpnInstance.getVpnName().equals(vpnName)) {
-                return true;
+        if (vpnInstanceList != null) {
+            for (VpnInstanceNames vpnInstance : vpnInstanceList) {
+                if (vpnName.equals(vpnInstance.getVpnName())) {
+                    return true;
+                }
             }
         }
         return false;
@@ -172,6 +182,7 @@ public final class VpnHelper {
      * @param subnetUuid the subnet's Uuid
      * @return the Subnetmap of Uuid or null if it is not found
      */
+    @Nullable
     public static Subnetmap getSubnetmapFromItsUuid(DataBroker broker, Uuid subnetUuid) {
         Subnetmap sn = null;
         InstanceIdentifier<Subnetmap> id = buildSubnetmapIdentifier(subnetUuid);
@@ -182,7 +193,7 @@ public final class VpnHelper {
         return sn;
     }
 
-    public static InstanceIdentifier<VpnToDpnList> getVpnToDpnListIdentifier(String rd, BigInteger dpnId) {
+    public static InstanceIdentifier<VpnToDpnList> getVpnToDpnListIdentifier(String rd, Uint64 dpnId) {
         return InstanceIdentifier.builder(VpnInstanceOpData.class)
                 .child(VpnInstanceOpDataEntry.class, new VpnInstanceOpDataEntryKey(rd))
                 .child(VpnToDpnList.class, new VpnToDpnListKey(dpnId)).build();