X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=blobdiff_plain;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FShardTransactionChain.java;h=aedc6c42b862d0cc2ffd94fc9082b82d38f2aa2e;hp=8ba613958a9a5dfc1e0e2a9b45b921c3b6243b4e;hb=daaef05cbf70e6cbec9af181258faead6d9620a6;hpb=3f153e5fa694fe4147e72e615edbb5c263e5a394 diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionChain.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionChain.java index 8ba613958a..aedc6c42b8 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionChain.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/ShardTransactionChain.java @@ -8,6 +8,7 @@ package org.opendaylight.controller.cluster.datastore; +import com.google.common.base.Preconditions; import akka.actor.ActorRef; import akka.actor.Props; import akka.japi.Creator; @@ -17,7 +18,6 @@ import org.opendaylight.controller.cluster.datastore.messages.CloseTransactionCh import org.opendaylight.controller.cluster.datastore.messages.CloseTransactionChainReply; import org.opendaylight.controller.cluster.datastore.messages.CreateTransaction; import org.opendaylight.controller.cluster.datastore.messages.CreateTransactionReply; -import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain; import org.opendaylight.yangtools.yang.model.api.SchemaContext; /** @@ -25,16 +25,14 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; */ public class ShardTransactionChain extends AbstractUntypedActor { - private final DOMStoreTransactionChain chain; + private final ShardDataTreeTransactionChain chain; private final DatastoreContext datastoreContext; - private final SchemaContext schemaContext; private final ShardStats shardStats; - public ShardTransactionChain(DOMStoreTransactionChain chain, SchemaContext schemaContext, - DatastoreContext datastoreContext, ShardStats shardStats) { - this.chain = chain; + public ShardTransactionChain(ShardDataTreeTransactionChain chain, DatastoreContext datastoreContext, + ShardStats shardStats) { + this.chain = Preconditions.checkNotNull(chain); this.datastoreContext = datastoreContext; - this.schemaContext = schemaContext; this.shardStats = shardStats; } @@ -57,32 +55,25 @@ public class ShardTransactionChain extends AbstractUntypedActor { private ActorRef createTypedTransactionActor(CreateTransaction createTransaction) { String transactionName = "shard-" + createTransaction.getTransactionId(); - if(createTransaction.getTransactionType() == - TransactionProxy.TransactionType.READ_ONLY.ordinal()) { - return getContext().actorOf( - ShardTransaction.props( chain.newReadOnlyTransaction(), getShardActor(), - schemaContext, datastoreContext, shardStats, - createTransaction.getTransactionId(), - createTransaction.getVersion()), transactionName); - } else if (createTransaction.getTransactionType() == - TransactionProxy.TransactionType.READ_WRITE.ordinal()) { - return getContext().actorOf( - ShardTransaction.props( chain.newReadWriteTransaction(), getShardActor(), - schemaContext, datastoreContext, shardStats, - createTransaction.getTransactionId(), - createTransaction.getVersion()), transactionName); - } else if (createTransaction.getTransactionType() == - TransactionProxy.TransactionType.WRITE_ONLY.ordinal()) { - return getContext().actorOf( - ShardTransaction.props( chain.newWriteOnlyTransaction(), getShardActor(), - schemaContext, datastoreContext, shardStats, - createTransaction.getTransactionId(), - createTransaction.getVersion()), transactionName); - } else { - throw new IllegalArgumentException ( - "CreateTransaction message has unidentified transaction type=" + - createTransaction.getTransactionType()); + + final TransactionType type = TransactionType.fromInt(createTransaction.getTransactionType()); + final AbstractShardDataTreeTransaction transaction; + switch (type) { + case READ_ONLY: + transaction = chain.newReadOnlyTransaction(transactionName); + break; + case READ_WRITE: + case WRITE_ONLY: + transaction = chain.newReadWriteTransaction(transactionName); + break; + default: + throw new IllegalArgumentException("Unhandled transaction type " + type); } + + return getContext().actorOf( + ShardTransaction.props(type, transaction, getShardActor(), + datastoreContext, shardStats, createTransaction.getTransactionId(), + createTransaction.getVersion()), transactionName); } private void createTransaction(CreateTransaction createTransaction) { @@ -92,32 +83,28 @@ public class ShardTransactionChain extends AbstractUntypedActor { createTransaction.getTransactionId()).toSerializable(), getSelf()); } - public static Props props(DOMStoreTransactionChain chain, SchemaContext schemaContext, + public static Props props(ShardDataTreeTransactionChain chain, SchemaContext schemaContext, DatastoreContext datastoreContext, ShardStats shardStats) { - return Props.create(new ShardTransactionChainCreator(chain, schemaContext, - datastoreContext, shardStats)); + return Props.create(new ShardTransactionChainCreator(chain, datastoreContext, shardStats)); } private static class ShardTransactionChainCreator implements Creator { private static final long serialVersionUID = 1L; - final DOMStoreTransactionChain chain; + final ShardDataTreeTransactionChain chain; final DatastoreContext datastoreContext; - final SchemaContext schemaContext; final ShardStats shardStats; - - ShardTransactionChainCreator(DOMStoreTransactionChain chain, SchemaContext schemaContext, - DatastoreContext datastoreContext, ShardStats shardStats) { + ShardTransactionChainCreator(ShardDataTreeTransactionChain chain, DatastoreContext datastoreContext, + ShardStats shardStats) { this.chain = chain; this.datastoreContext = datastoreContext; - this.schemaContext = schemaContext; this.shardStats = shardStats; } @Override public ShardTransactionChain create() throws Exception { - return new ShardTransactionChain(chain, schemaContext, datastoreContext, shardStats); + return new ShardTransactionChain(chain, datastoreContext, shardStats); } } }