X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=elanmanager%2Fimpl%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fnetvirt%2Felan%2Finternal%2FElanGroupCache.java;h=6aa03009da7344a9f42af750a6b8106f01348202;hb=2f0569ed75ef8a1fb60f992d19c8bbdf92ff45bf;hp=0f63223db098a7829fa403928d130693f646d0a0;hpb=8804db1c57488e34ec17ef1045d2d3d1c386527b;p=netvirt.git diff --git a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanGroupCache.java b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanGroupCache.java index 0f63223db0..6aa03009da 100644 --- a/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanGroupCache.java +++ b/elanmanager/impl/src/main/java/org/opendaylight/netvirt/elan/internal/ElanGroupCache.java @@ -8,23 +8,22 @@ package org.opendaylight.netvirt.elan.internal; -import com.google.common.base.Optional; import java.util.ArrayList; import java.util.Collection; import java.util.Map; +import java.util.Optional; import java.util.concurrent.ConcurrentHashMap; +import java.util.concurrent.ExecutionException; import java.util.concurrent.TimeUnit; - -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.binding.api.ReadOnlyTransaction; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.ReadFailedException; -import org.opendaylight.genius.datastoreutils.AsyncClusteredDataTreeChangeListenerBase; +import org.opendaylight.infrautils.utils.concurrent.Executors; +import org.opendaylight.mdsal.binding.api.DataBroker; +import org.opendaylight.mdsal.binding.api.ReadTransaction; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; import org.opendaylight.netvirt.elan.utils.Scheduler; +import org.opendaylight.serviceutils.tools.listener.AbstractClusteredAsyncDataTreeChangeListener; import org.opendaylight.yang.gen.v1.urn.opendaylight.flow.inventory.rev130819.FlowCapableNode; import org.opendaylight.yang.gen.v1.urn.opendaylight.group.types.rev131018.groups.Group; import org.opendaylight.yang.gen.v1.urn.opendaylight.inventory.rev130819.Nodes; @@ -34,7 +33,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; @Singleton -public class ElanGroupCache extends AsyncClusteredDataTreeChangeListenerBase { +public class ElanGroupCache extends AbstractClusteredAsyncDataTreeChangeListener { private static final Logger LOG = LoggerFactory.getLogger(ElanGroupCache.class); private final DataBroker dataBroker; private final Scheduler scheduler; @@ -43,21 +42,15 @@ public class ElanGroupCache extends AsyncClusteredDataTreeChangeListenerBase getWildCardPath() { - return InstanceIdentifier.builder(Nodes.class) - .child(Node.class).augmentation(FlowCapableNode.class) - .child(Group.class).build(); + LOG.info("{} registered", getClass().getSimpleName()); } public synchronized void addJobToWaitList(InstanceIdentifier key, @@ -71,22 +64,17 @@ public class ElanGroupCache extends AsyncClusteredDataTreeChangeListenerBase key, Group deleted) { + public synchronized void remove(InstanceIdentifier key, Group deleted) { groupsById.remove(key); } @Override - protected void update(InstanceIdentifier key, Group old, Group updated) { + public void update(InstanceIdentifier key, Group old, Group updated) { add(key, updated); } @Override - protected synchronized void add(InstanceIdentifier key, Group added) { + public synchronized void add(InstanceIdentifier key, Group added) { if (groupsById.containsKey(key)) { groupsById.put(key, added); return; @@ -103,13 +91,21 @@ public class ElanGroupCache extends AsyncClusteredDataTreeChangeListenerBase getGroup(InstanceIdentifier key) throws ReadFailedException { + public Optional getGroup(InstanceIdentifier key) throws InterruptedException, ExecutionException { if (groupsById.containsKey(key)) { return Optional.of(groupsById.get(key)); } - ReadOnlyTransaction transaction = dataBroker.newReadOnlyTransaction(); - Optional optional = transaction.read(LogicalDatastoreType.CONFIGURATION, key).checkedGet(); + ReadTransaction transaction = dataBroker.newReadOnlyTransaction(); + Optional optional = transaction.read(LogicalDatastoreType.CONFIGURATION, key).get(); transaction.close(); return optional; } + + @Override + @PreDestroy + public void close() { + super.close(); + Executors.shutdownAndAwaitTermination(getExecutorService()); + } + }