@NotNull public Object getKey(@NotNull final Transaction transaction) throws IllegalArgumentException { return ((TransactionImple) transaction).get_uid(); }
public Object getResource(@NotNull final Transaction transaction, @NotNull final Object key) { return ((TransactionImple) transaction).getTxLocalResource(key); }
public void putResource(@NotNull final Transaction transaction, @NotNull final Object key, final Object value) throws IllegalArgumentException { ((TransactionImple) transaction).putTxLocalResource(key, value); }
int status = getStatus(); info = (TxInfo) _resources.get(xaRes); info = (TxInfo) _duplicateResources.get(xaRes); .xaStartParameters(XAResource.TMRESUME)); xaRes.start(info.xid(), xaStartResume); TxInfo existingRM = isNewRM(xaRes); xid = createXid(branchRequired, theModifier, xaRes); AbstractRecord abstractRecord = createRecord(xaRes, params, xid); markRollbackOnly(); return false; xid = createXid(true, theModifier, xaRes); markRollbackOnly(); markRollbackOnly(); markRollbackOnly(); markRollbackOnly();
throw new javax.transaction.SystemException( "TransactionImple.delistResource - " + jtaLogger.i18NLogger.get_transaction_arjunacore_nullres() ); int status = getStatus(); break; default: throw new IllegalStateException( jtaLogger.i18NLogger.get_transaction_arjunacore_inactive() ); info = (TxInfo) _resources.get(xaRes); info = (TxInfo) _duplicateResources.get(xaRes); jtaLogger.i18NLogger.warn_transaction_arjunacore_unknownresource("TransactionImple.delistResource"); xaRes.end(info.xid(), XAResource.TMFAIL); xaRes.rollback(info.xid()); xaRes.end(info.xid(), XAResource.TMSUCCESS); info.setState(TxInfo.NOT_ASSOCIATED); markRollbackOnly(); jtaLogger.i18NLogger.warn_transaction_arjunacore_delistresource("TransactionImple.delistResource", XAHelper.printXAErrorCode(exp), exp); markRollbackOnly();
public static final TransactionImple getTransaction() { TransactionImple tx = null; final BasicAction current = BasicAction.Current(); if (current != null) { final Uid txid = current.get_uid(); tx = (TransactionImple) _transactions.get(txid); if (tx == null) tx = new TransactionImple(current); } return tx; }
public boolean isAlive() { try { if(_theTransaction != null) { return _transactions.containsKey(this.get_uid()); } else { return false; } } catch(NullPointerException e) { return false; // there is no tx/action, therefore it's not alive. } }
switch (_theTransaction.status()) if (!endSuspendedRMs()) _theTransaction.preventCommit(); int status = _theTransaction.end(true); TransactionImple.removeTransaction(this); break; case ActionStatus.H_MIXED: throw addSuppressedThrowables(new javax.transaction.HeuristicMixedException()); case ActionStatus.H_HAZARD: throw addSuppressedThrowables(new javax.transaction.HeuristicMixedException()); case ActionStatus.H_ROLLBACK: case ActionStatus.ABORTED: RollbackException rollbackException = new RollbackException( jtaLogger.i18NLogger.get_transaction_arjunacore_commitwhenaborted() ); if (_theTransaction.getDeferredThrowable() != null) rollbackException.initCause(_theTransaction .getDeferredThrowable()); throw addSuppressedThrowables(rollbackException); default: throw new IllegalStateException( jtaLogger.i18NLogger.get_transaction_arjunacore_invalidstate() );
/** * @return the suspended transaction. */ public Transaction suspend() throws javax.transaction.SystemException { if (jtaLogger.logger.isTraceEnabled()) { jtaLogger.logger.trace("TransactionImpleManager.suspend"); } try { TransactionImple tx = TransactionImple.getTransaction(); if (tx != null) { tx.getAtomicAction().suspend(); } return tx; } catch (Exception e) { javax.transaction.SystemException systemException = new javax.transaction.SystemException(e.toString()); systemException.initCause(e); throw systemException; } }
javax.transaction.SystemException systemException = new javax.transaction.SystemException( e2.toString()); systemException.initCause(e2); throw systemException; TransactionImple.putTransaction(new TransactionImple(v));
switch (_theTransaction.status()) _theTransaction.abort(); // assure thread disassociation throw addSuppressedThrowables(new javax.transaction.RollbackException( jtaLogger.i18NLogger.get_transaction_arjunacore_inactive(_theTransaction.get_uid()) )); break; case ActionStatus.H_MIXED: throw addSuppressedThrowables(new javax.transaction.HeuristicMixedException()); case ActionStatus.H_HAZARD: throw addSuppressedThrowables(new javax.transaction.HeuristicMixedException()); case ActionStatus.H_ROLLBACK: case ActionStatus.ABORTED: case ActionStatus.ABORTING: RollbackException rollbackException = addSuppressedThrowables(new RollbackException( jtaLogger.i18NLogger.get_transaction_arjunacore_commitwhenaborted() )); rollbackException.initCause(preexistingRollbackOnlyCallerStacktrace); } else if(_theTransaction.getDeferredThrowable() != null) { throw addSuppressedThrowables(new InvalidTerminationStateException( jtaLogger.i18NLogger.get_transaction_arjunacore_invalidstate() )); throw addSuppressedThrowables(new IllegalStateException( jtaLogger.i18NLogger.get_transaction_arjunacore_inactive() )); TransactionImple.removeTransaction(this);
if(_theTransaction.status() == ActionStatus.RUNNING || _theTransaction.status() == ActionStatus.ABORT_ONLY) { int outcome = _theTransaction.abort(); // assure thread disassociation, even if tx is already done. break; default: throw new InactiveTransactionException( jtaLogger.i18NLogger.get_transaction_arjunacore_rollbackstatus() + ActionStatus.stringForm(outcome)); throw new IllegalStateException( jtaLogger.i18NLogger.get_transaction_arjunacore_inactive() ); TransactionImple.removeTransaction(this);
public Void call() throws InvalidTransactionException, javax.transaction.RollbackException, javax.transaction.HeuristicMixedException, javax.transaction.HeuristicRollbackException, java.lang.SecurityException, javax.transaction.SystemException, java.lang.IllegalStateException { if (AtomicAction.suspend() != null) { System.err .println("WARNING - A PREVIOUS TRANSACTION WAS ON THE THREAD UNSUSPENDED"); } if (!AtomicAction.resume(theTransaction.getAtomicAction())) throw new InvalidTransactionException(); theTransaction.commitAndDisassociate(); return null; } });
public Future<Void> commitAsync() { final TransactionImple theTransaction = TransactionImple .getTransaction(); if (theTransaction == null) throw new IllegalStateException("BaseTransaction.commit - " + jtaLogger.i18NLogger.get_transaction_arjunacore_notx()); AtomicAction.suspend(); return wrap(new Callable<Void>() { public Void call() throws InvalidTransactionException, javax.transaction.RollbackException, javax.transaction.HeuristicMixedException, javax.transaction.HeuristicRollbackException, java.lang.SecurityException, javax.transaction.SystemException, java.lang.IllegalStateException { if (AtomicAction.suspend() != null) { System.err .println("WARNING - A PREVIOUS TRANSACTION WAS ON THE THREAD UNSUSPENDED"); } if (!AtomicAction.resume(theTransaction.getAtomicAction())) throw new InvalidTransactionException(); theTransaction.commitAndDisassociate(); return null; } }); }
public void setRollbackOnly() throws java.lang.IllegalStateException, javax.transaction.SystemException { if (jtaLogger.logger.isTraceEnabled()) { jtaLogger.logger.trace("BaseTransaction.setRollbackOnly"); } TransactionImple theTransaction = TransactionImple.getTransaction(); if (theTransaction == null) throw new IllegalStateException( jtaLogger.i18NLogger.get_transaction_arjunacore_nosuchtx()); theTransaction.setRollbackOnly(); }
public int getStatus() throws javax.transaction.SystemException { TransactionImple theTransaction = TransactionImple.getTransaction(); if (theTransaction == null) return javax.transaction.Status.STATUS_NO_TRANSACTION; else return theTransaction.getStatus(); }
if (!_theTransaction.preventCommit()) switch (getStatus()) case Status.STATUS_PREPARING: case Status.STATUS_PREPARED: throw new InvalidTerminationStateException( jtaLogger.i18NLogger.get_transaction_arjunacore_invalidstate() ); default: throw new InactiveTransactionException( jtaLogger.i18NLogger.get_transaction_arjunacore_inactive(_theTransaction.get_uid()) ); throw new IllegalStateException( jtaLogger.i18NLogger.get_transaction_arjunacore_inactive() );
public void rollback() throws java.lang.IllegalStateException, java.lang.SecurityException, javax.transaction.SystemException { if (jtaLogger.logger.isTraceEnabled()) { jtaLogger.logger.trace("BaseTransaction.rollback"); } TransactionImple theTransaction = TransactionImple.getTransaction(); if (theTransaction == null) throw new IllegalStateException( "BaseTransaction.rollback - " + jtaLogger.i18NLogger.get_transaction_arjunacore_notx()); theTransaction.rollbackAndDisassociate(); }
@Test public void test() throws Exception { UserTransactionImple ut = new UserTransactionImple(); ut.begin(); TransactionImple current = TransactionImple.getTransaction(); TestResource res1, res2; current.enlistResource( res1 = new TestResource() ); current.enlistResource( res2 = new TestResource() ); current.delistResource( res2, XAResource.TMSUCCESS ); current.delistResource( res1, XAResource.TMSUCCESS ); Future<Void> commitAsync = ut.commitAsync(); commitAsync.get(); } }