X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;ds=inline;f=opendaylight%2Fmd-sal%2Fsal-distributed-datastore%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fcluster%2Fdatastore%2FTransactionProxy.java;h=e30076d09e05930f6441a9454b791a83cfd180d8;hb=1e59825dbec7b354d76bd7efa6a61e4ad802c802;hp=e65aab85a44b39dbfc97306c9a143df20142bbd0;hpb=f1c47fb514878ef2149e5f22d6098ff8c79dec1d;p=controller.git diff --git a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java index e65aab85a4..e30076d09e 100644 --- a/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java +++ b/opendaylight/md-sal/sal-distributed-datastore/src/main/java/org/opendaylight/controller/cluster/datastore/TransactionProxy.java @@ -15,7 +15,6 @@ import com.google.common.util.concurrent.ListenableFuture; import com.google.common.util.concurrent.ListenableFutureTask; import org.opendaylight.controller.cluster.datastore.messages.CloseTransaction; import org.opendaylight.controller.cluster.datastore.messages.CreateTransaction; -import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages.CreateTransactionReply; import org.opendaylight.controller.cluster.datastore.messages.DeleteData; import org.opendaylight.controller.cluster.datastore.messages.MergeData; import org.opendaylight.controller.cluster.datastore.messages.ReadData; @@ -24,10 +23,12 @@ import org.opendaylight.controller.cluster.datastore.messages.ReadyTransaction; import org.opendaylight.controller.cluster.datastore.messages.ReadyTransactionReply; import org.opendaylight.controller.cluster.datastore.messages.WriteData; import org.opendaylight.controller.cluster.datastore.utils.ActorContext; +import org.opendaylight.controller.protobuff.messages.transaction.ShardTransactionMessages.CreateTransactionReply; import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction; import org.opendaylight.controller.sal.core.spi.data.DOMStoreThreePhaseCommitCohort; import org.opendaylight.yangtools.yang.data.api.InstanceIdentifier; import org.opendaylight.yangtools.yang.data.api.schema.NormalizedNode; +import org.opendaylight.yangtools.yang.model.api.SchemaContext; import java.util.ArrayList; import java.util.HashMap; @@ -63,17 +64,20 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { private final Map remoteTransactionPaths = new HashMap<>(); private final String identifier; private final ExecutorService executor; + private final SchemaContext schemaContext; public TransactionProxy( ActorContext actorContext, TransactionType transactionType, - ExecutorService executor + ExecutorService executor, + SchemaContext schemaContext ) { this.identifier = "txn-" + counter.getAndIncrement(); this.transactionType = transactionType; this.actorContext = actorContext; this.executor = executor; + this.schemaContext = schemaContext; Object response = actorContext.executeShardOperation(Shard.DEFAULT_NAME, new CreateTransaction(identifier), ActorContext.ASK_DURATION); if(response instanceof CreateTransactionReply){ @@ -90,10 +94,10 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { @Override public Optional> call() throws Exception { Object response = actorContext - .executeRemoteOperation(remoteTransaction, new ReadData(path), + .executeRemoteOperation(remoteTransaction, new ReadData(path).toSerializable(), ActorContext.ASK_DURATION); - if(response instanceof ReadDataReply){ - ReadDataReply reply = (ReadDataReply) response; + if(response.getClass().equals(ReadDataReply.SERIALIZABLE_CLASS)){ + ReadDataReply reply = ReadDataReply.fromSerializable(schemaContext,path, response); if(reply.getNormalizedNode() == null){ return Optional.absent(); } @@ -116,19 +120,19 @@ public class TransactionProxy implements DOMStoreReadWriteTransaction { @Override public void write(InstanceIdentifier path, NormalizedNode data) { final ActorSelection remoteTransaction = remoteTransactionFromIdentifier(path); - remoteTransaction.tell(new WriteData(path, data), null); + remoteTransaction.tell(new WriteData(path, data, schemaContext).toSerializable(), null); } @Override public void merge(InstanceIdentifier path, NormalizedNode data) { final ActorSelection remoteTransaction = remoteTransactionFromIdentifier(path); - remoteTransaction.tell(new MergeData(path, data), null); + remoteTransaction.tell(new MergeData(path, data, schemaContext).toSerializable(), null); } @Override public void delete(InstanceIdentifier path) { final ActorSelection remoteTransaction = remoteTransactionFromIdentifier(path); - remoteTransaction.tell(new DeleteData(path), null); + remoteTransaction.tell(new DeleteData(path).toSerializable(), null); } @Override