X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatabroker%2FAbstractDOMBroker.java;h=119ac79c7e41094d4a13e36c40b5bdc7c8046aba;hb=048d61c7408875c1483d912c5837ae36fd689304;hp=6e6ddf6204b97faef5256cc8294d4496d67cdf1e;hpb=8232a626b43fdd2f5799da0fbcfb0f02d3c8f4fb;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBroker.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBroker.java index 6e6ddf6204..119ac79c7e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBroker.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/AbstractDOMBroker.java @@ -10,45 +10,44 @@ package org.opendaylight.controller.cluster.databroker; import static com.google.common.base.Preconditions.checkState; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMap.Builder; +import com.google.common.collect.ClassToInstanceMap; +import com.google.common.collect.ImmutableClassToInstanceMap; +import com.google.common.collect.ImmutableClassToInstanceMap.Builder; import java.util.EnumMap; import java.util.Map; import java.util.concurrent.atomic.AtomicLong; -import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType; -import org.opendaylight.controller.md.sal.common.api.data.TransactionChainListener; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBroker; -import org.opendaylight.controller.md.sal.dom.api.DOMDataBrokerExtension; -import org.opendaylight.controller.md.sal.dom.api.DOMDataChangeListener; -import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener; -import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeService; -import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeCommitCohortRegistry; -import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeIdentifier; -import org.opendaylight.controller.md.sal.dom.api.DOMTransactionChain; -import org.opendaylight.controller.sal.core.spi.data.DOMStore; -import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain; -import org.opendaylight.controller.sal.core.spi.data.DOMStoreTreeChangePublisher; +import org.opendaylight.mdsal.common.api.LogicalDatastoreType; +import org.opendaylight.mdsal.common.api.TransactionChainListener; +import org.opendaylight.mdsal.dom.api.DOMDataBroker; +import org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension; +import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeListener; +import org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService; import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohort; import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohortRegistration; +import org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohortRegistry; +import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; +import org.opendaylight.mdsal.dom.api.DOMTransactionChain; +import org.opendaylight.mdsal.dom.spi.store.DOMStore; +import org.opendaylight.mdsal.dom.spi.store.DOMStoreTransactionChain; +import org.opendaylight.mdsal.dom.spi.store.DOMStoreTreeChangePublisher; import org.opendaylight.yangtools.concepts.ListenerRegistration; -import org.opendaylight.yangtools.yang.data.api.YangInstanceIdentifier; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -abstract class AbstractDOMBroker extends AbstractDOMTransactionFactory - implements DOMDataBroker { +public abstract class AbstractDOMBroker extends AbstractDOMTransactionFactory implements DOMDataBroker { private static final Logger LOG = LoggerFactory.getLogger(AbstractDOMBroker.class); private final AtomicLong txNum = new AtomicLong(); private final AtomicLong chainNum = new AtomicLong(); - private final Map, DOMDataBrokerExtension> extensions; + private final ClassToInstanceMap extensions; + private volatile AutoCloseable closeable; protected AbstractDOMBroker(final Map datastores) { super(datastores); - Builder, DOMDataBrokerExtension> extBuilder = ImmutableMap.builder(); + Builder extBuilder = ImmutableClassToInstanceMap.builder(); if (isSupported(datastores, DOMStoreTreeChangePublisher.class)) { extBuilder.put(DOMDataTreeChangeService.class, new DOMDataTreeChangeService() { @Override @@ -61,14 +60,13 @@ abstract class AbstractDOMBroker extends AbstractDOMTransactionFactory }); } - if (isSupported(datastores, org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohortRegistry.class)) { + if (isSupported(datastores, DOMDataTreeCommitCohortRegistry.class)) { extBuilder.put(DOMDataTreeCommitCohortRegistry.class, new DOMDataTreeCommitCohortRegistry() { @Override public DOMDataTreeCommitCohortRegistration registerCommitCohort( - org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier path, T cohort) { - DOMStore store = getDOMStore(toLegacy(path.getDatastoreType())); - return ((org.opendaylight.mdsal.dom.api.DOMDataTreeCommitCohortRegistry) store) - .registerCommitCohort(path, cohort); + final DOMDataTreeIdentifier path, final T cohort) { + DOMStore store = getDOMStore(path.getDatastoreType()); + return ((DOMDataTreeCommitCohortRegistry) store).registerCommitCohort(path, cohort); } }); } @@ -76,26 +74,9 @@ abstract class AbstractDOMBroker extends AbstractDOMTransactionFactory extensions = extBuilder.build(); } - private static LogicalDatastoreType toLegacy(org.opendaylight.mdsal.common.api.LogicalDatastoreType datastoreType) { - switch (datastoreType) { - case CONFIGURATION: - return LogicalDatastoreType.CONFIGURATION; - case OPERATIONAL: - return LogicalDatastoreType.OPERATIONAL; - default: - throw new IllegalArgumentException("Unsupported data store type: " + datastoreType); - } - } - - private static boolean isSupported(Map datastores, - Class expDOMStoreInterface) { - for (DOMStore ds : datastores.values()) { - if (!expDOMStoreInterface.isAssignableFrom(ds.getClass())) { - return false; - } - } - - return true; + private static boolean isSupported(final Map datastores, + final Class expDOMStoreInterface) { + return datastores.values().stream().allMatch(expDOMStoreInterface::isInstance); } public void setCloseable(final AutoCloseable closeable) { @@ -122,15 +103,13 @@ abstract class AbstractDOMBroker extends AbstractDOMTransactionFactory } @Override - public ListenerRegistration registerDataChangeListener(final LogicalDatastoreType store, - final YangInstanceIdentifier path, final DOMDataChangeListener listener, - final DataChangeScope triggeringScope) { - DOMStore potentialStore = getDOMStore(store); - return potentialStore.registerChangeListener(path, listener, triggeringScope); + @Deprecated + public Map, DOMDataBrokerExtension> getSupportedExtensions() { + return extensions; } @Override - public Map, DOMDataBrokerExtension> getSupportedExtensions() { + public ClassToInstanceMap getExtensions() { return extensions; }