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%2Fdatastore%2FShardDataTree.java;h=fd42740784a3334a0670bec9fcedf90951d4f4ad;hb=ffc46de334c8a903844b9f4aff73dc68b2401659;hp=d83dd22fcfe6766047b012f44938876ec9fdedd7;hpb=a54716c7a8c9a49a6b7b19eaedfbe522a2556b2b;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java index d83dd22fcf..fd42740784 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardDataTree.java @@ -7,18 +7,14 @@ */ package org.opendaylight.controller.cluster.datastore; -import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Optional; import com.google.common.base.Preconditions; import com.google.common.base.Strings; -import java.net.URI; import java.util.AbstractMap.SimpleEntry; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; -import java.util.Set; import javax.annotation.concurrent.NotThreadSafe; -import org.opendaylight.controller.cluster.datastore.node.utils.transformer.NormalizedNodePruner; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope; import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeListener; import org.opendaylight.controller.md.sal.dom.api.DOMDataTreeChangeListener; @@ -46,15 +42,14 @@ import org.slf4j.LoggerFactory; * This class is not part of the API contract and is subject to change at any time. */ @NotThreadSafe -public final class ShardDataTree extends ShardDataTreeTransactionParent { +public class ShardDataTree extends ShardDataTreeTransactionParent { private static final Logger LOG = LoggerFactory.getLogger(ShardDataTree.class); private static final ShardDataTreeNotificationManager MANAGER = new ShardDataTreeNotificationManager(); private final Map transactionChains = new HashMap<>(); private final ShardDataTreeChangePublisher treeChangePublisher = new ShardDataTreeChangePublisher(); private final ListenerTree listenerTree = ListenerTree.create(); private final TipProducingDataTree dataTree; - private Set validNamespaces; - private ShardDataTreeTransactionFactory transactionFactory = new RecoveryShardDataTreeTransactionFactory(); + private SchemaContext schemaContext; ShardDataTree(final SchemaContext schemaContext) { dataTree = InMemoryDataTreeFactory.getInstance().create(); @@ -66,10 +61,14 @@ public final class ShardDataTree extends ShardDataTreeTransactionParent { return dataTree; } + SchemaContext getSchemaContext() { + return schemaContext; + } + void updateSchemaContext(final SchemaContext schemaContext) { Preconditions.checkNotNull(schemaContext); + this.schemaContext = schemaContext; dataTree.setSchemaContext(schemaContext); - validNamespaces = NormalizedNodePruner.namespaces(schemaContext); } private ShardDataTreeTransactionChain ensureTransactionChain(final String chainId) { @@ -84,7 +83,7 @@ public final class ShardDataTree extends ShardDataTreeTransactionParent { ReadOnlyShardDataTreeTransaction newReadOnlyTransaction(final String txId, final String chainId) { if (Strings.isNullOrEmpty(chainId)) { - return transactionFactory.newReadOnlyTransaction(txId, chainId); + return new ReadOnlyShardDataTreeTransaction(txId, dataTree.takeSnapshot()); } return ensureTransactionChain(chainId).newReadOnlyTransaction(txId); @@ -92,7 +91,8 @@ public final class ShardDataTree extends ShardDataTreeTransactionParent { ReadWriteShardDataTreeTransaction newReadWriteTransaction(final String txId, final String chainId) { if (Strings.isNullOrEmpty(chainId)) { - return transactionFactory.newReadWriteTransaction(txId, chainId); + return new ReadWriteShardDataTreeTransaction(ShardDataTree.this, txId, dataTree.takeSnapshot() + .newModification()); } return ensureTransactionChain(chainId).newReadWriteTransaction(txId); @@ -180,54 +180,6 @@ public final class ShardDataTree extends ShardDataTreeTransactionParent { ShardDataTreeCohort finishTransaction(final ReadWriteShardDataTreeTransaction transaction) { final DataTreeModification snapshot = transaction.getSnapshot(); snapshot.ready(); - return new SimpleShardDataTreeCohort(this, snapshot); - } - - void recoveryDone(){ - transactionFactory = new RegularShardDataTreeTransactionFactory(); - } - - @VisibleForTesting - ShardDataTreeTransactionFactory getTransactionFactory(){ - return transactionFactory; - } - - @VisibleForTesting - static interface ShardDataTreeTransactionFactory { - ReadOnlyShardDataTreeTransaction newReadOnlyTransaction(final String txId, final String chainId); - - ReadWriteShardDataTreeTransaction newReadWriteTransaction(final String txId, final String chainId); - } - - @VisibleForTesting - class RecoveryShardDataTreeTransactionFactory implements ShardDataTreeTransactionFactory { - - @Override - public ReadOnlyShardDataTreeTransaction newReadOnlyTransaction(String txId, String chainId) { - return new ReadOnlyShardDataTreeTransaction(txId, - new PruningShardDataTreeSnapshot(dataTree.takeSnapshot(), validNamespaces)); - } - - @Override - public ReadWriteShardDataTreeTransaction newReadWriteTransaction(String txId, String chainId) { - return new ReadWriteShardDataTreeTransaction(ShardDataTree.this, txId, - new PruningShardDataTreeSnapshot(dataTree.takeSnapshot(), validNamespaces).newModification()); - } - } - - @VisibleForTesting - class RegularShardDataTreeTransactionFactory implements ShardDataTreeTransactionFactory { - - @Override - public ReadOnlyShardDataTreeTransaction newReadOnlyTransaction(String txId, String chainId) { - return new ReadOnlyShardDataTreeTransaction(txId, dataTree.takeSnapshot()); - - } - - @Override - public ReadWriteShardDataTreeTransaction newReadWriteTransaction(String txId, String chainId) { - return new ReadWriteShardDataTreeTransaction(ShardDataTree.this, txId, dataTree.takeSnapshot() - .newModification()); - } + return new SimpleShardDataTreeCohort(this, snapshot, transaction.getId()); } }