X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=elanmanager%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Felan%2Fl2gw%2Flisteners%2FHwvtepConfigNodeCache.java;h=839d53b627383b5b9022853e0584e1b8fb11edb5;hb=2f0569ed75ef8a1fb60f992d19c8bbdf92ff45bf;hp=401dee84d8a78af5b0a38385e34da4b7fb778d52;hpb=fffad3ab6e2bd0c6179ce5391a5d716746645aa1;p=netvirt.git diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/HwvtepConfigNodeCache.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/HwvtepConfigNodeCache.java index 401dee84d8..839d53b627 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/HwvtepConfigNodeCache.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/l2gw/listeners/HwvtepConfigNodeCache.java @@ -12,62 +12,61 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; import java.util.concurrent.ConcurrentHashMap; - -import javax.annotation.PostConstruct; +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.AsyncClusteredDataTreeChangeListenerBase; import org.opendaylight.genius.utils.hwvtep.HwvtepSouthboundConstants; +import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.NetworkTopology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.Topology; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.TopologyKey; import org.opendaylight.yang.gen.v1.urn.tbd.params.xml.ns.yang.network.topology.rev131021.network.topology.topology.Node; import org.opendaylight.yangtools.yang.binding.InstanceIdentifier; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; @Singleton -public class HwvtepConfigNodeCache extends AsyncClusteredDataTreeChangeListenerBase { +public class HwvtepConfigNodeCache extends AbstractClusteredAsyncDataTreeChangeListener { + private static final Logger LOG = LoggerFactory.getLogger(HwvtepConfigNodeCache.class); + private final DataBroker dataBroker; private final Map, Node> cache = new ConcurrentHashMap<>(); private final Map, List> waitList = new ConcurrentHashMap<>(); @Inject public HwvtepConfigNodeCache(final DataBroker dataBroker) { - super(Node.class, HwvtepConfigNodeCache.class); + super(dataBroker, LogicalDatastoreType.CONFIGURATION, InstanceIdentifier.create(NetworkTopology.class) + .child(Topology.class, new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID)) + .child(Node.class), Executors.newListeningSingleThreadExecutor("HwvtepConfigNodeCache", LOG)); this.dataBroker = dataBroker; } - @PostConstruct public void init() { - this.registerListener(LogicalDatastoreType.CONFIGURATION, dataBroker); - } - - @Override - protected InstanceIdentifier getWildCardPath() { - return InstanceIdentifier.create(NetworkTopology.class) - .child(Topology.class, new TopologyKey(HwvtepSouthboundConstants.HWVTEP_TOPOLOGY_ID)) - .child(Node.class); + LOG.info("{} init", getClass().getSimpleName()); } @Override - protected HwvtepConfigNodeCache getDataTreeChangeListener() { - return HwvtepConfigNodeCache.this; + @PreDestroy + public void close() { + super.close(); + Executors.shutdownAndAwaitTermination(getExecutorService()); } @Override - protected void remove(InstanceIdentifier key, Node deleted) { + public void remove(InstanceIdentifier key, Node deleted) { cache.remove(key); } @Override - protected void update(InstanceIdentifier key, Node old, Node added) { + public void update(InstanceIdentifier key, Node old, Node added) { cache.put(key, added); } @Override - protected synchronized void add(InstanceIdentifier key, Node added) { + public synchronized void add(InstanceIdentifier key, Node added) { cache.put(key, added); if (waitList.containsKey(key)) { waitList.remove(key).stream().forEach(runnable -> runnable.run());