X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=dom%2Fmdsal-dom-broker%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fmdsal%2Fdom%2Fbroker%2FShardedDOMDataTree.java;h=71e63d80942bd953d2e907b75450c9e79f870259;hb=c918566080795a6f03e354c5bf1cc66c2f2ba364;hp=df706739ac13a7ff1c3c3613058622b5d4271b43;hpb=67d0d71b7218015f5eaf311d732a0db1dd079021;p=mdsal.git diff --git a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTree.java b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTree.java index df706739ac..71e63d8094 100644 --- a/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTree.java +++ b/dom/mdsal-dom-broker/src/main/java/org/opendaylight/mdsal/dom/broker/ShardedDOMDataTree.java @@ -7,9 +7,13 @@ */ package org.opendaylight.mdsal.dom.broker; -import com.google.common.base.Preconditions; -import com.google.common.base.Verify; +import static com.google.common.base.Preconditions.checkArgument; +import static com.google.common.base.Verify.verifyNotNull; +import static java.util.Objects.requireNonNull; + import com.google.common.collect.ArrayListMultimap; +import com.google.common.collect.ClassToInstanceMap; +import com.google.common.collect.ImmutableClassToInstanceMap; import com.google.common.collect.ImmutableSet; import com.google.common.collect.Iterables; import com.google.common.collect.ListMultimap; @@ -24,6 +28,7 @@ import org.opendaylight.mdsal.dom.api.DOMDataTreeListener; import org.opendaylight.mdsal.dom.api.DOMDataTreeLoopException; import org.opendaylight.mdsal.dom.api.DOMDataTreeProducer; import org.opendaylight.mdsal.dom.api.DOMDataTreeService; +import org.opendaylight.mdsal.dom.api.DOMDataTreeServiceExtension; import org.opendaylight.mdsal.dom.api.DOMDataTreeShard; import org.opendaylight.mdsal.dom.api.DOMDataTreeShardingConflictException; import org.opendaylight.mdsal.dom.api.DOMDataTreeShardingService; @@ -69,12 +74,13 @@ public final class ShardedDOMDataTree implements DOMDataTreeService, DOMDataTree public DOMDataTreeShardRegistration registerDataTreeShard( final DOMDataTreeIdentifier prefix, final T shard, final DOMDataTreeProducer producer) throws DOMDataTreeShardingConflictException { + checkArgument(producer instanceof ShardedDOMDataTreeProducer, "Unsupported producer %s", producer); + final ShardedDOMDataTreeProducer prod = (ShardedDOMDataTreeProducer) producer; - final DOMDataTreeIdentifier firstSubtree = Iterables.getOnlyElement((( - ShardedDOMDataTreeProducer) producer).getSubtrees()); - Preconditions.checkArgument(firstSubtree != null, "Producer that is used to verify namespace claim can" + final DOMDataTreeIdentifier firstSubtree = Iterables.getOnlyElement(prod.getSubtrees()); + checkArgument(firstSubtree != null, "Producer that is used to verify namespace claim can" + " only claim a single namespace"); - Preconditions.checkArgument(prefix.equals(firstSubtree), "Trying to register shard to a different namespace" + checkArgument(prefix.equals(firstSubtree), "Trying to register shard to a different namespace" + " than the producer has claimed"); final DOMDataTreeShardRegistration reg; @@ -103,7 +109,7 @@ public final class ShardedDOMDataTree implements DOMDataTreeService, DOMDataTree shards.store(prefix, reg); - ((ShardedDOMDataTreeProducer) producer).subshardAdded(Collections.singletonMap(prefix, shard)); + prod.subshardAdded(Collections.singletonMap(prefix, shard)); } // Notify the parent shard @@ -130,6 +136,11 @@ public final class ShardedDOMDataTree implements DOMDataTreeService, DOMDataTree } } + @Override + public ClassToInstanceMap getExtensions() { + return ImmutableClassToInstanceMap.of(); + } + @GuardedBy("this") private DOMDataTreeProducer createProducer(final Collection subtrees, final Map shardMap) { @@ -144,13 +155,13 @@ public final class ShardedDOMDataTree implements DOMDataTreeService, DOMDataTree @Override public synchronized DOMDataTreeProducer createProducer(final Collection subtrees) { - Preconditions.checkArgument(!subtrees.isEmpty(), "Subtrees may not be empty"); + checkArgument(!subtrees.isEmpty(), "Subtrees may not be empty"); final Map shardMap = new HashMap<>(); for (final DOMDataTreeIdentifier subtree : subtrees) { // Attempting to create a disconnected producer -- all subtrees have to be unclaimed final DOMDataTreeProducer producer = findProducer(subtree); - Preconditions.checkArgument(producer == null, "Subtree %s is attached to producer %s", subtree, producer); + checkArgument(producer == null, "Subtree %s is attached to producer %s", subtree, producer); final DOMDataTreePrefixTableEntry> possibleShardReg = shards.lookup(subtree); @@ -164,7 +175,7 @@ public final class ShardedDOMDataTree implements DOMDataTreeService, DOMDataTree synchronized DOMDataTreeProducer createProducer(final ShardedDOMDataTreeProducer parent, final Collection subtrees) { - Preconditions.checkNotNull(parent); + requireNonNull(parent); final Map shardMap = new HashMap<>(); for (final DOMDataTreeIdentifier s : subtrees) { @@ -179,7 +190,7 @@ public final class ShardedDOMDataTree implements DOMDataTreeService, DOMDataTree public synchronized ListenerRegistration registerListener(final T listener, final Collection subtrees, final boolean allowRxMerges, final Collection producers) throws DOMDataTreeLoopException { - Preconditions.checkNotNull(listener, "listener"); + requireNonNull(listener, "listener"); // Cross-check specified trees for exclusivity and eliminate duplicates, noDupSubtrees is effectively a Set final Collection noDupSubtrees; @@ -194,8 +205,8 @@ public final class ShardedDOMDataTree implements DOMDataTreeService, DOMDataTree for (DOMDataTreeIdentifier toCheck : subtrees) { for (DOMDataTreeIdentifier against : subtrees) { if (!toCheck.equals(against)) { - Preconditions.checkArgument(!toCheck.contains(against), "Subtree %s contains subtree %s", - toCheck, against); + checkArgument(!toCheck.contains(against), "Subtree %s contains subtree %s", toCheck, + against); } } } @@ -209,7 +220,7 @@ public final class ShardedDOMDataTree implements DOMDataTreeService, DOMDataTree final ListMultimap, DOMDataTreeIdentifier> needed = ArrayListMultimap.create(); for (final DOMDataTreeIdentifier subtree : subtrees) { - final DOMDataTreeShardRegistration reg = Verify.verifyNotNull(shards.lookup(subtree).getValue()); + final DOMDataTreeShardRegistration reg = verifyNotNull(shards.lookup(subtree).getValue()); needed.put(reg, subtree); } @@ -218,14 +229,14 @@ public final class ShardedDOMDataTree implements DOMDataTreeService, DOMDataTree // Sanity check: all selected shards have to support one of the listening interfaces needed.asMap().forEach((reg, trees) -> { final DOMDataTreeShard shard = reg.getInstance(); - Preconditions.checkArgument(shard instanceof ListenableDOMDataTreeShard + checkArgument(shard instanceof ListenableDOMDataTreeShard || shard instanceof DOMStoreTreeChangePublisher, "Subtrees %s do not point to listenable subtree.", trees); }); // Sanity check: all producers have to come from this implementation and must not form loops for (DOMDataTreeProducer producer : producers) { - Preconditions.checkArgument(producer instanceof ShardedDOMDataTreeProducer); + checkArgument(producer instanceof ShardedDOMDataTreeProducer); simpleLoopCheck(subtrees, ((ShardedDOMDataTreeProducer) producer).getSubtrees()); }