X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fsharding%2FShardProxyProducer.java;h=b78836bfa6916d8106c90f6d1d0cf545501f591d;hb=f83b2d36fdd7e953ba72492ffb684cd112aa04a6;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..b78836bfa6 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 @@ -12,6 +12,7 @@ import com.google.common.base.Preconditions; 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,16 +22,19 @@ 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; + private final ClientLocalHistory history; + private DistributedShardModificationFactory modificationFactory; - ShardProxyProducer(final DOMDataTreeIdentifier shardRoot, final Collection prefixes, - final DataStoreClient client) { + ShardProxyProducer(final DOMDataTreeIdentifier shardRoot, + final Collection prefixes, + final DataStoreClient client, + final DistributedShardModificationFactory modificationFactory) { this.shardRoot = Preconditions.checkNotNull(shardRoot); this.prefixes = ImmutableList.copyOf(Preconditions.checkNotNull(prefixes)); - this.client = Preconditions.checkNotNull(client); + this.modificationFactory = Preconditions.checkNotNull(modificationFactory); + history = Preconditions.checkNotNull(client).createLocalHistory(); } @Nonnull @@ -41,7 +45,16 @@ 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 = Preconditions.checkNotNull(modificationFactory); } }