X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=vpnmanager%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Fvpnmanager%2FVpnServiceElanDpnInterfacesListener.java;fp=vpnmanager%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Fvpnmanager%2FVpnServiceElanDpnInterfacesListener.java;h=f17a7cd16c2bb672a7014b47328d023497384d57;hb=2f0569ed75ef8a1fb60f992d19c8bbdf92ff45bf;hp=7fb640f5ed14b46d1d17776f6212f0aa0181b361;hpb=fffad3ab6e2bd0c6179ce5391a5d716746645aa1;p=netvirt.git diff --git a/vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnServiceElanDpnInterfacesListener.java b/vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnServiceElanDpnInterfacesListener.java index 7fb640f5ed..f17a7cd16c 100644 --- a/vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnServiceElanDpnInterfacesListener.java +++ b/vpnmanager/impl/src/main/java/org/opendaylight/netvirt/vpnmanager/VpnServiceElanDpnInterfacesListener.java @@ -8,40 +8,36 @@ package org.opendaylight.netvirt.vpnmanager; -import com.google.common.base.Optional; - import java.util.ArrayList; import java.util.Collections; import java.util.Iterator; import java.util.List; - -import javax.annotation.PostConstruct; +import java.util.Optional; +import javax.annotation.PreDestroy; import javax.inject.Inject; import javax.inject.Singleton; - -import org.opendaylight.controller.md.sal.binding.api.DataBroker; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.genius.datastoreutils.AsyncDataTreeChangeListenerBase; import org.opendaylight.genius.datastoreutils.SingleTransactionDataBroker; import org.opendaylight.genius.interfacemanager.interfaces.IInterfaceManager; import org.opendaylight.infrautils.jobcoordinator.JobCoordinator; +import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netvirt.fibmanager.api.IFibManager; import org.opendaylight.netvirt.vpnmanager.api.VpnHelper; +import org.opendaylight.serviceutils.tools.listener.AbstractAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.ElanDpnInterfaces; import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.dpn.interfaces.ElanDpnInterfacesList; import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.dpn.interfaces.elan.dpn.interfaces.list.DpnInterfaces; import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.elan.rev150602.elan.instances.ElanInstance; import org.opendaylight.yang.gen.v1.urn.opendaylight.netvirt.l3vpn.rev130911.vpn.instance.op.data.vpn.instance.op.data.entry.VpnToDpnList; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; - import org.opendaylight.yangtools.yang.common.Uint32; import org.opendaylight.yangtools.yang.common.Uint64; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Singleton -public class VpnServiceElanDpnInterfacesListener - extends AsyncDataTreeChangeListenerBase { +public class VpnServiceElanDpnInterfacesListener extends AbstractAsyncDataTreeChangeListener { private static final Logger LOG = LoggerFactory.getLogger(VpnServiceElanDpnInterfacesListener.class); private final DataBroker dataBroker; @@ -53,31 +49,36 @@ public class VpnServiceElanDpnInterfacesListener @Inject public VpnServiceElanDpnInterfacesListener(final DataBroker dataBroker, final IInterfaceManager interfaceManager, final IFibManager fibManager,final JobCoordinator jobCoordinator, VpnUtil vpnUtil) { + super(dataBroker, LogicalDatastoreType.OPERATIONAL, InstanceIdentifier.create(ElanDpnInterfaces.class) + .child(ElanDpnInterfacesList.class).child(DpnInterfaces.class), + Executors.newListeningSingleThreadExecutor("VpnServiceElanDpnInterfacesListener", LOG)); this.dataBroker = dataBroker; this.interfaceManager = interfaceManager; this.fibManager = fibManager; this.jobCoordinator = jobCoordinator; this.vpnUtil = vpnUtil; + start(); } - @PostConstruct public void start() { - registerListener(LogicalDatastoreType.OPERATIONAL, dataBroker); + LOG.info("{} start", getClass().getSimpleName()); } @Override - public InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.builder(ElanDpnInterfaces.class).child(ElanDpnInterfacesList.class) - .child(DpnInterfaces.class).build(); + @PreDestroy + public void close() { + super.close(); + Executors.shutdownAndAwaitTermination(getExecutorService()); } + @Override - protected void remove(InstanceIdentifier identifier, DpnInterfaces dpnInterfaces) { + public void remove(InstanceIdentifier identifier, DpnInterfaces dpnInterfaces) { } @Override - protected void update(InstanceIdentifier identifier, DpnInterfaces original, + public void update(InstanceIdentifier identifier, DpnInterfaces original, DpnInterfaces update) { LOG.info("received Dpninterfaces update event for dpn {}", update.getDpId()); Uint64 dpnId = update.getDpId(); @@ -123,7 +124,7 @@ public class VpnServiceElanDpnInterfacesListener } @Override - protected void add(InstanceIdentifier identifier, DpnInterfaces dpnInterfaces) { + public void add(InstanceIdentifier identifier, DpnInterfaces dpnInterfaces) { Uint64 dpnId = dpnInterfaces.getDpId(); String elanInstanceName = identifier.firstKeyOf(ElanDpnInterfacesList.class).getElanInstanceName(); ElanInstance elanInstance = vpnUtil.getElanInstanceByName(elanInstanceName); @@ -137,12 +138,6 @@ public class VpnServiceElanDpnInterfacesListener vpnUtil.addRouterPortToElanForVlanInDpn(vpnName, dpnId); } - @Override - protected VpnServiceElanDpnInterfacesListener getDataTreeChangeListener() { - return VpnServiceElanDpnInterfacesListener.this; - } - - public static List getUpdatedInterfaceList(List updatedInterfaceList, List currentInterfaceList) { if (updatedInterfaceList == null) {