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;
* Proxy producer implementation that creates transactions that forward all calls to {@link DataStoreClient}.
*/
class ShardProxyProducer implements DOMDataTreeShardProducer {
-
private final DOMDataTreeIdentifier shardRoot;
private final Collection<DOMDataTreeIdentifier> prefixes;
- private final DataStoreClient client;
+ private final ClientLocalHistory history;
+ private DistributedShardModificationFactory modificationFactory;
- ShardProxyProducer(final DOMDataTreeIdentifier shardRoot, final Collection<DOMDataTreeIdentifier> prefixes,
- final DataStoreClient client) {
+ ShardProxyProducer(final DOMDataTreeIdentifier shardRoot,
+ final Collection<DOMDataTreeIdentifier> 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
@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);
}
}