Handle nullable lists in vpnmanager
[netvirt.git] / vpnmanager / impl / src / main / java / org / opendaylight / netvirt / vpnmanager / VpnInterfaceOpListener.java
index b00a3f47aea5ed1c060b4d12e9c7db7c8fe1855e..4f0d7522f5cb17c648de0480878be724850c80c0 100644 (file)
@@ -7,6 +7,8 @@
  */
 package org.opendaylight.netvirt.vpnmanager;
 
+import static org.opendaylight.netvirt.vpnmanager.VpnUtil.requireNonNullElse;
+
 import com.google.common.base.Optional;
 import java.util.ArrayList;
 import java.util.Collections;
@@ -48,6 +50,7 @@ public class VpnInterfaceOpListener extends AsyncDataTreeChangeListenerBase<VpnI
     private final VpnFootprintService vpnFootprintService;
     private final JobCoordinator jobCoordinator;
     private final ExecutorService executorService = Executors.newSingleThreadExecutor();
+    private final VpnUtil vpnUtil;
 
     /*public VpnInterfaceOpListener(final DataBroker dataBroker) {
         super(VpnInterface.class);
@@ -56,13 +59,15 @@ public class VpnInterfaceOpListener extends AsyncDataTreeChangeListenerBase<VpnI
 
     @Inject
     public VpnInterfaceOpListener(final DataBroker dataBroker, final VpnInterfaceManager vpnInterfaceManager,
-        final VpnFootprintService vpnFootprintService, final JobCoordinator jobCoordinator) {
+        final VpnFootprintService vpnFootprintService, final JobCoordinator jobCoordinator,
+                                  final VpnUtil vpnUtil) {
         super(VpnInterfaceOpDataEntry.class, VpnInterfaceOpListener.class);
         this.dataBroker = dataBroker;
         this.txRunner = new ManagedNewTransactionRunnerImpl(dataBroker);
         this.vpnInterfaceManager = vpnInterfaceManager;
         this.vpnFootprintService = vpnFootprintService;
         this.jobCoordinator = jobCoordinator;
+        this.vpnUtil = vpnUtil;
     }
 
     @PostConstruct
@@ -120,7 +125,7 @@ public class VpnInterfaceOpListener extends AsyncDataTreeChangeListenerBase<VpnI
             if (vpnInstance.isPresent()) {
                 String rd = vpnInstance.get().getVrfId();
 
-                VpnInstanceOpDataEntry vpnInstOp = VpnUtil.getVpnInstanceOpData(dataBroker, rd);
+                VpnInstanceOpDataEntry vpnInstOp = vpnUtil.getVpnInstanceOpData(rd);
 
                 AdjacenciesOp adjs = del.augmentation(AdjacenciesOp.class);
                 List<Adjacency> adjList = adjs != null ? adjs.getAdjacency() : null;
@@ -150,7 +155,8 @@ public class VpnInterfaceOpListener extends AsyncDataTreeChangeListenerBase<VpnI
                             prefixToInterfaceLocal.add(prefix.get());
                         }
                         if (prefixToInterfaceLocal.isEmpty()) {
-                            for (String nh : adjacency.getNextHopIpList()) {
+                            for (String nh : requireNonNullElse(adjacency.getNextHopIpList(),
+                                    Collections.<String>emptyList())) {
                                 prefix = SingleTransactionDataBroker.syncReadOptional(dataBroker,
                                         LogicalDatastoreType.OPERATIONAL, VpnUtil.getPrefixToInterfaceIdentifier(
                                                 vpnInstOp.getVpnId(), VpnUtil.getIpPrefix(nh)));