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%2Fsharding%2FShardProxyProducer.java;h=602566bda652aa27fb7425ef3dccc55aba38dd99;hb=8da08c9f008d371c491cf6b35494ca36c2ebdcb9;hp=f97707635c929c86400d81c81d4101c22a4b86ae;hpb=877c428f2897f6e3b11efd25589a84aa0c660a31;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/ShardProxyProducer.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/ShardProxyProducer.java index f97707635c..602566bda6 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/ShardProxyProducer.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/sharding/ShardProxyProducer.java @@ -5,13 +5,13 @@ * terms of the Eclipse Public License v1.0 which accompanies this distribution, * and is available at http://www.eclipse.org/legal/epl-v10.html */ - package org.opendaylight.controller.cluster.sharding; -import com.google.common.base.Preconditions; +import static java.util.Objects.requireNonNull; + import com.google.common.collect.ImmutableList; import java.util.Collection; -import javax.annotation.Nonnull; +import org.opendaylight.controller.cluster.databroker.actors.dds.ClientLocalHistory; import org.opendaylight.controller.cluster.databroker.actors.dds.DataStoreClient; import org.opendaylight.mdsal.dom.api.DOMDataTreeIdentifier; import org.opendaylight.mdsal.dom.spi.shard.DOMDataTreeShardProducer; @@ -21,19 +21,21 @@ import org.opendaylight.mdsal.dom.spi.shard.DOMDataTreeShardWriteTransaction; * Proxy producer implementation that creates transactions that forward all calls to {@link DataStoreClient}. */ class ShardProxyProducer implements DOMDataTreeShardProducer { - private final DOMDataTreeIdentifier shardRoot; private final Collection prefixes; - private final DataStoreClient client; - - ShardProxyProducer(final DOMDataTreeIdentifier shardRoot, final Collection prefixes, - final DataStoreClient client) { - this.shardRoot = Preconditions.checkNotNull(shardRoot); - this.prefixes = ImmutableList.copyOf(Preconditions.checkNotNull(prefixes)); - this.client = Preconditions.checkNotNull(client); + private final ClientLocalHistory history; + private DistributedShardModificationFactory modificationFactory; + + ShardProxyProducer(final DOMDataTreeIdentifier shardRoot, + final Collection prefixes, + final DataStoreClient client, + final DistributedShardModificationFactory modificationFactory) { + this.shardRoot = requireNonNull(shardRoot); + this.prefixes = ImmutableList.copyOf(prefixes); + this.modificationFactory = requireNonNull(modificationFactory); + history = requireNonNull(client).createLocalHistory(); } - @Nonnull @Override public Collection getPrefixes() { return prefixes; @@ -41,7 +43,20 @@ class ShardProxyProducer implements DOMDataTreeShardProducer { @Override public DOMDataTreeShardWriteTransaction createTransaction() { - return new ShardProxyTransaction(shardRoot, prefixes, client); + return new ShardProxyTransaction(shardRoot, prefixes, + modificationFactory.createModification(history.createTransaction())); + } + + DistributedShardModificationFactory getModificationFactory() { + return modificationFactory; + } + + void setModificationFactory(final DistributedShardModificationFactory modificationFactory) { + this.modificationFactory = requireNonNull(modificationFactory); } -} + @Override + public void close() { + // FIXME: implement this + } +}