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=3c8db5f23cab0730e112e6244d0c438d4db2b442;hb=b712eb01354ddb5878008e2a2e8f03fb19b92555;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..3c8db5f23c 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 @@ -11,26 +11,38 @@ package org.opendaylight.controller.cluster.sharding; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import java.util.Collection; +import java.util.concurrent.atomic.AtomicLong; 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; import org.opendaylight.mdsal.dom.spi.shard.DOMDataTreeShardWriteTransaction; +import org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataTreeShard; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * Proxy producer implementation that creates transactions that forward all calls to {@link DataStoreClient}. */ class ShardProxyProducer implements DOMDataTreeShardProducer { + private static final Logger LOG = LoggerFactory.getLogger(InMemoryDOMDataTreeShard.class); + private static final AtomicLong COUNTER = new AtomicLong(); + 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 +53,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); } }