- public PreLithiumTransactionContextImpl(String transactionPath, ActorSelection actor, TransactionIdentifier identifier,
- ActorContext actorContext, SchemaContext schemaContext, boolean isTxActorLocal,
- short remoteTransactionVersion, OperationCompleter operationCompleter) {
- super(transactionPath, actor, identifier, actorContext, schemaContext, isTxActorLocal,
- remoteTransactionVersion, operationCompleter);
+ private final String transactionPath;
+
+ public PreLithiumTransactionContextImpl(TransactionIdentifier identifier, String transactionPath, ActorSelection actor,
+ ActorContext actorContext, boolean isTxActorLocal,
+ short remoteTransactionVersion, OperationLimiter limiter) {
+ super(identifier, actor, actorContext, isTxActorLocal, remoteTransactionVersion, limiter);
+ this.transactionPath = transactionPath;
+ }
+
+ @Override
+ public void executeModification(AbstractModification modification) {
+ final short remoteTransactionVersion = getRemoteTransactionVersion();
+ final YangInstanceIdentifier path = modification.getPath();
+ VersionedExternalizableMessage msg = null;
+
+ if(modification instanceof DeleteModification) {
+ msg = new DeleteData(path, remoteTransactionVersion);
+ } else if(modification instanceof WriteModification) {
+ final NormalizedNode<?, ?> data = ((WriteModification) modification).getData();
+
+ // be sure to check for Merge before Write, since Merge is a subclass of Write
+ if(modification instanceof MergeModification) {
+ msg = new MergeData(path, data, remoteTransactionVersion);
+ } else {
+ msg = new WriteData(path, data, remoteTransactionVersion);
+ }
+ } else {
+ LOG.error("Invalid modification type " + modification.getClass().getName());
+ }
+
+ if(msg != null) {
+ executeOperationAsync(msg);
+ }
+ }
+
+ @Override
+ public Future<ActorSelection> readyTransaction() {
+ LOG.debug("Tx {} readyTransaction called", getIdentifier());
+
+ // Send the ReadyTransaction message to the Tx actor.
+
+ Future<Object> lastReplyFuture = executeOperationAsync(ReadyTransaction.INSTANCE);
+
+ return transformReadyReply(lastReplyFuture);