@Override public ReadWriteTransaction newReadWriteTransaction() { final DOMDataReadWriteTransaction delegateTx = delegate.newReadWriteTransaction(); return new BindingDOMReadWriteTransactionAdapter(delegateTx, codec) { @Override public CheckedFuture<Void, TransactionCommitFailedException> submit() { return listenForFailure(this,super.submit()); } }; }
@Override public DOMDataReadWriteTransaction newReadWriteTransaction() { return delegate().newReadWriteTransaction(); }
@Override public DOMDataReadWriteTransaction newReadWriteTransaction() { return delegate().newReadWriteTransaction(); }
@Override public DOMDataTreeReadWriteTransaction newReadWriteTransaction() { final DOMDataReadWriteTransaction tx = delegate.newReadWriteTransaction(); return track(tx, new DOMDataTreeReadWriteTransactionAdapter(tx) { @Override public boolean cancel() { untrack(delegate()); return super.cancel(); } @Override public void close() { untrack(delegate()); super.close(); } }); }
private synchronized PingPongTransaction slowAllocateTransaction() { Preconditions.checkState(shutdownTx == null, "Transaction chain %s has been shut down", this); if (deadTx != null) { throw new IllegalStateException(String.format( "Transaction chain %s has failed due to transaction %s being canceled", this, deadTx.getKey()), deadTx.getValue()); } final DOMDataReadWriteTransaction delegateTx = delegate.newReadWriteTransaction(); final PingPongTransaction newTx = new PingPongTransaction(delegateTx); if (!LOCKED_UPDATER.compareAndSet(this, null, newTx)) { delegateTx.cancel(); throw new IllegalStateException(String.format("New transaction %s raced with transacion %s", newTx, lockedTx)); } return newTx; }