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%2Fdatastore%2FShardTransactionChain.java;h=e7a181865e70c54917a272a6268704316111d13c;hb=67d58d1ab50f3c3bbe19a96fb6f0d9d94211829f;hp=c508255ea490ee09b370dae8a49320495166c820;hpb=bc7b4edec3c868a14e0a0de3a3b8e1af2406448b;p=controller.git 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 c508255ea4..e7a181865e 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 @@ -11,6 +11,7 @@ package org.opendaylight.controller.cluster.datastore; import akka.actor.ActorRef; import akka.actor.Props; import akka.japi.Creator; + import org.opendaylight.controller.cluster.datastore.messages.CloseTransactionChain; import org.opendaylight.controller.cluster.datastore.messages.CloseTransactionChainReply; import org.opendaylight.controller.cluster.datastore.messages.CreateTransaction; @@ -24,11 +25,16 @@ import org.opendaylight.yangtools.yang.model.api.SchemaContext; public class ShardTransactionChain extends AbstractUntypedActor { private final DOMStoreTransactionChain chain; + private final DatastoreContext datastoreContext; private final SchemaContext schemaContext; + private final String shardName; - public ShardTransactionChain(DOMStoreTransactionChain chain, SchemaContext schemaContext) { + public ShardTransactionChain(DOMStoreTransactionChain chain, SchemaContext schemaContext, + DatastoreContext datastoreContext,String shardName) { this.chain = chain; + this.datastoreContext = datastoreContext; this.schemaContext = schemaContext; + this.shardName = shardName; } @Override @@ -48,23 +54,29 @@ public class ShardTransactionChain extends AbstractUntypedActor { return getContext().parent(); } - private ActorRef createTypedTransactionActor(CreateTransaction createTransaction,String transactionId){ - if(createTransaction.getTransactionType()== TransactionProxy.TransactionType.READ_ONLY.ordinal()){ - return getContext().actorOf( - ShardTransaction.props( chain.newReadOnlyTransaction(), getShardActor(), schemaContext), transactionId); - - }else if (createTransaction.getTransactionType()== TransactionProxy.TransactionType.READ_WRITE.ordinal()){ - return getContext().actorOf( - ShardTransaction.props( chain.newReadWriteTransaction(), getShardActor(), schemaContext), transactionId); - - - }else if (createTransaction.getTransactionType()== TransactionProxy.TransactionType.WRITE_ONLY.ordinal()){ - return getContext().actorOf( - ShardTransaction.props( chain.newWriteOnlyTransaction(), getShardActor(), schemaContext), transactionId); - }else{ - throw new IllegalArgumentException ("CreateTransaction message has unidentified transaction type="+createTransaction.getTransactionType()) ; + private ActorRef createTypedTransactionActor(CreateTransaction createTransaction, + String transactionId) { + if(createTransaction.getTransactionType() == + TransactionProxy.TransactionType.READ_ONLY.ordinal()) { + return getContext().actorOf( + ShardTransaction.props( chain.newReadOnlyTransaction(), getShardActor(), + schemaContext, datastoreContext,shardName), transactionId); + } else if (createTransaction.getTransactionType() == + TransactionProxy.TransactionType.READ_WRITE.ordinal()) { + return getContext().actorOf( + ShardTransaction.props( chain.newReadWriteTransaction(), getShardActor(), + schemaContext, datastoreContext,shardName), transactionId); + } else if (createTransaction.getTransactionType() == + TransactionProxy.TransactionType.WRITE_ONLY.ordinal()) { + return getContext().actorOf( + ShardTransaction.props( chain.newWriteOnlyTransaction(), getShardActor(), + schemaContext, datastoreContext,shardName), transactionId); + } else { + throw new IllegalArgumentException ( + "CreateTransaction message has unidentified transaction type=" + + createTransaction.getTransactionType()); + } } - } private void createTransaction(CreateTransaction createTransaction) { @@ -74,13 +86,31 @@ public class ShardTransactionChain extends AbstractUntypedActor { getSelf()); } - public static Props props(final DOMStoreTransactionChain chain, final SchemaContext schemaContext) { - return Props.create(new Creator() { + public static Props props(DOMStoreTransactionChain chain, SchemaContext schemaContext, + DatastoreContext datastoreContext, String shardName) { + return Props.create(new ShardTransactionChainCreator(chain, schemaContext, datastoreContext, shardName)); + } + + private static class ShardTransactionChainCreator implements Creator { + private static final long serialVersionUID = 1L; + + final DOMStoreTransactionChain chain; + final DatastoreContext datastoreContext; + final SchemaContext schemaContext; + final String shardName; + - @Override - public ShardTransactionChain create() throws Exception { - return new ShardTransactionChain(chain, schemaContext); - } - }); + ShardTransactionChainCreator(DOMStoreTransactionChain chain, SchemaContext schemaContext, + DatastoreContext datastoreContext, String shardName) { + this.chain = chain; + this.datastoreContext = datastoreContext; + this.schemaContext = schemaContext; + this.shardName = shardName; + } + + @Override + public ShardTransactionChain create() throws Exception { + return new ShardTransactionChain(chain, schemaContext, datastoreContext,shardName); + } } }