import org.opendaylight.controller.cluster.datastore.messages.CreateTransactionReply;
import org.opendaylight.controller.sal.core.spi.data.DOMStoreReadWriteTransaction;
import org.opendaylight.controller.sal.core.spi.data.DOMStoreTransactionChain;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
/**
* The ShardTransactionChain Actor represents a remote TransactionChain
public class ShardTransactionChain extends AbstractUntypedActor {
private final DOMStoreTransactionChain chain;
+ private final SchemaContext schemaContext;
- public ShardTransactionChain(DOMStoreTransactionChain chain) {
+ public ShardTransactionChain(DOMStoreTransactionChain chain, SchemaContext schemaContext) {
this.chain = chain;
+ this.schemaContext = schemaContext;
}
@Override
public void handleReceive(Object message) throws Exception {
- if (message instanceof CreateTransaction) {
- CreateTransaction createTransaction = (CreateTransaction) message;
+ if (message.getClass().equals(CreateTransaction.SERIALIZABLE_CLASS)) {
+ CreateTransaction createTransaction = CreateTransaction.fromSerializable( message);
createTransaction(createTransaction);
- } else if (message instanceof CloseTransactionChain) {
+ } else if (message.getClass().equals(CloseTransactionChain.SERIALIZABLE_CLASS)) {
chain.close();
- getSender().tell(new CloseTransactionChainReply(), getSelf());
+ getSender().tell(new CloseTransactionChainReply().toSerializable(), getSelf());
+ }else{
+ throw new Exception("Not recognized message recieved="+message);
}
}
DOMStoreReadWriteTransaction transaction =
chain.newReadWriteTransaction();
ActorRef transactionActor = getContext().actorOf(ShardTransaction
- .props(chain, transaction, getContext().parent()), "shard-" + createTransaction.getTransactionId());
+ .props(chain, transaction, getContext().parent(), schemaContext), "shard-" + createTransaction.getTransactionId());
getSender()
- .tell(new CreateTransactionReply(transactionActor.path(), createTransaction.getTransactionId()),
+ .tell(new CreateTransactionReply(transactionActor.path().toString(),createTransaction.getTransactionId()).toSerializable(),
getSelf());
}
- public static Props props(final DOMStoreTransactionChain chain) {
+ public static Props props(final DOMStoreTransactionChain chain, final SchemaContext schemaContext) {
return Props.create(new Creator<ShardTransactionChain>() {
@Override
public ShardTransactionChain create() throws Exception {
- return new ShardTransactionChain(chain);
+ return new ShardTransactionChain(chain, schemaContext);
}
});
}