From 9d08010e2f1a79fa24190696b7cb55096cf55f1c Mon Sep 17 00:00:00 2001 From: Robert Varga Date: Wed, 11 Jul 2018 15:01:25 +0200 Subject: [PATCH] Use ClassToInstanceMap for extensions Using a plain map was an API design mistake, make sure implementations are serving a ClassToInstanceMap before embarking on migration. Change-Id: I2609d08d9df9f0da8d4f23fdeb5007979db80d72 Signed-off-by: Robert Varga --- .../cluster/databroker/AbstractDOMBroker.java | 10 ++++++---- .../databroker/compat/LegacyDOMDataBrokerAdapter.java | 9 +++++---- .../sharding/DistributedShardedDOMDataTree.java | 4 ++-- 3 files changed, 13 insertions(+), 10 deletions(-) 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 799e94a3ca..c2c604e1f7 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,8 +10,9 @@ 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; @@ -39,13 +40,14 @@ public abstract class AbstractDOMBroker extends AbstractDOMTransactionFactory, 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 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/compat/LegacyDOMDataBrokerAdapter.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/compat/LegacyDOMDataBrokerAdapter.java index 24554668c9..4555b87b62 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/compat/LegacyDOMDataBrokerAdapter.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/databroker/compat/LegacyDOMDataBrokerAdapter.java @@ -9,9 +9,10 @@ package org.opendaylight.controller.cluster.databroker.compat; import com.google.common.base.Optional; import com.google.common.base.Preconditions; +import com.google.common.collect.ClassToInstanceMap; import com.google.common.collect.ForwardingObject; -import com.google.common.collect.ImmutableMap; -import com.google.common.collect.ImmutableMap.Builder; +import com.google.common.collect.ImmutableClassToInstanceMap; +import com.google.common.collect.ImmutableClassToInstanceMap.Builder; import com.google.common.util.concurrent.CheckedFuture; import com.google.common.util.concurrent.FluentFuture; import com.google.common.util.concurrent.FutureCallback; @@ -78,7 +79,7 @@ public class LegacyDOMDataBrokerAdapter extends ForwardingObject implements DOMD }; private final AbstractDOMBroker delegate; - private final Map, DOMDataBrokerExtension> extensions; + private final ClassToInstanceMap extensions; public LegacyDOMDataBrokerAdapter(AbstractDOMBroker delegate) { this.delegate = delegate; @@ -87,7 +88,7 @@ public class LegacyDOMDataBrokerAdapter extends ForwardingObject implements DOMD org.opendaylight.mdsal.dom.api.DOMDataBrokerExtension> delegateExtensions = delegate.getSupportedExtensions(); - Builder, DOMDataBrokerExtension> extBuilder = ImmutableMap.builder(); + Builder extBuilder = ImmutableClassToInstanceMap.builder(); final org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService delegateTreeChangeService = (org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService) delegateExtensions.get( org.opendaylight.mdsal.dom.api.DOMDataTreeChangeService.class); diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTree.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTree.java index 53d0270312..e61fc52e21 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTree.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/DistributedShardedDOMDataTree.java @@ -22,7 +22,7 @@ import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Throwables; import com.google.common.collect.ForwardingObject; -import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.util.concurrent.FutureCallback; import com.google.common.util.concurrent.Futures; import com.google.common.util.concurrent.ListenableFuture; @@ -289,7 +289,7 @@ public class DistributedShardedDOMDataTree implements DOMDataTreeService, DOMDat @Override public Map, DOMDataTreeServiceExtension> getSupportedExtensions() { - return ImmutableMap.of(); + return ImmutableClassToInstanceMap.of(); } @Nonnull -- 2.36.6