/** * Iterate over the list of Synchronizations to complete all the methods to be performed after * completion * * @param status int The status of the Global transaction associated with the transaction */ void notifyAfterCompletion(int status) throws SystemException { Iterator iterator = syncList.iterator(); while (iterator.hasNext()) { sync = ((Synchronization) iterator.next()); sync.afterCompletion(status); } }
/** * Iterate over the list of Synchronizations to complete all the methods to be performed before * completion */ boolean notifyBeforeCompletion() { Iterator iterator = syncList.iterator(); boolean result = true; while (iterator.hasNext()) { sync = ((Synchronization) iterator.next()); sync.beforeCompletion(); } return result; }
@Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { if ( "afterCompletion".equals( method.getName() ) ) { int status = args[2].equals(Boolean.TRUE) ? Status.STATUS_COMMITTED : Status.STATUS_UNKNOWN; synchronization.afterCompletion(status); } else if ( "beforeCompletion".equals( method.getName() ) ) { synchronization.beforeCompletion(); } else if ( "toString".equals( method.getName() ) ) { return synchronization.toString(); } return null; }
@Test public void jtaTransactionManagerWithExistingTransactionAndJtaSynchronization() throws Exception { UserTransaction ut = mock(UserTransaction.class); TransactionManager tm = mock(TransactionManager.class); MockJtaTransaction tx = new MockJtaTransaction(); given(ut.getStatus()).willReturn(Status.STATUS_ACTIVE); given(tm.getTransaction()).willReturn(tx); final TransactionSynchronization synch = mock(TransactionSynchronization.class); JtaTransactionManager ptm = newJtaTransactionManager(ut, tm); TransactionTemplate tt = new TransactionTemplate(ptm); assertFalse(TransactionSynchronizationManager.isSynchronizationActive()); tt.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { assertTrue(TransactionSynchronizationManager.isSynchronizationActive()); TransactionSynchronizationManager.registerSynchronization(synch); status.setRollbackOnly(); } }); assertFalse(TransactionSynchronizationManager.isSynchronizationActive()); assertNotNull(tx.getSynchronization()); tx.getSynchronization().beforeCompletion(); tx.getSynchronization().afterCompletion(Status.STATUS_ROLLEDBACK); verify(ut).setRollbackOnly(); verify(synch).beforeCompletion(); verify(synch).afterCompletion(TransactionSynchronization.STATUS_ROLLED_BACK); }
@Override public void notifySynchronizationsAfterTransactionCompletion(int status) { if ( synchronizations != null ) { for ( Synchronization synchronization : synchronizations ) { try { synchronization.afterCompletion( status ); } catch ( Throwable t ) { LOG.synchronizationFailed( synchronization, t ); } } } }
@Override public void notifySynchronizationsBeforeTransactionCompletion() { if ( synchronizations != null ) { for ( Synchronization synchronization : synchronizations ) { try { synchronization.beforeCompletion(); } catch ( Throwable t ) { LOG.synchronizationFailed( synchronization, t ); } } } }
public void end() { this.progress = false; for ( Synchronization sync : syncs ) { sync.beforeCompletion(); } for ( Synchronization sync : syncs ) { sync.afterCompletion( Status.STATUS_COMMITTED ); } } }
private void fireAfterCompletion(int status) { for (Synchronization synchronization : synchronizations) { synchronization.afterCompletion(status); } }
private void fireBeforeCompletion() { for (Synchronization synchronization : synchronizations) { synchronization.beforeCompletion(); } }
@Override public void afterCompletion(final int status) { try { NamespaceContextSelector.pushCurrentSelector(selector); synchronization.afterCompletion(status); } finally { NamespaceContextSelector.popCurrentSelector(); } }
@Override public void beforeCompletion() { try { NamespaceContextSelector.pushCurrentSelector(selector); synchronization.beforeCompletion(); } finally { NamespaceContextSelector.popCurrentSelector(); } }
@Override public void notifySynchronizationsAfterTransactionCompletion(int status) { log.tracef( "SynchronizationRegistryStandardImpl.notifySynchronizationsAfterTransactionCompletion(%s)", status ); if ( synchronizations != null ) { try { for ( Synchronization synchronization : synchronizations ) { try { synchronization.afterCompletion( status ); } catch (Throwable t) { log.synchronizationFailed( synchronization, t ); throw new LocalSynchronizationException( "Exception calling user Synchronization (afterCompletion): " + synchronization.getClass().getName(), t ); } } } finally { clearSynchronizations(); } } }
@Override public void notifySynchronizationsBeforeTransactionCompletion() { log.trace( "SynchronizationRegistryStandardImpl.notifySynchronizationsBeforeTransactionCompletion" ); if ( synchronizations != null ) { for ( Synchronization synchronization : synchronizations ) { try { synchronization.beforeCompletion(); } catch (Throwable t) { log.synchronizationFailed( synchronization, t ); throw new LocalSynchronizationException( "Exception calling user Synchronization (beforeCompletion): " + synchronization.getClass().getName(), t ); } } } }
preJcaSync.afterCompletion(status); } catch (Exception e) { jcaSync.afterCompletion(status); } catch (Exception e) {
+ preJcaSync); preJcaSync.beforeCompletion(); lastIndexProcessed = lastIndexProcessed + 1; + jcaSync); jcaSync.beforeCompletion(); lastIndexProcessed = lastIndexProcessed + 1;
public void afterCompletion(final int status) { try { if (importBacking()) try { sync.afterCompletion(status); } finally { unimportBacking(); } else { performConsumer(Synchronization::afterCompletion, sync, status); } } catch (SystemException e) { throw new SynchronizationException(e); } } }
public void beforeCompletion() { try { if (importBacking()) try { sync.beforeCompletion(); } finally { unimportBacking(); } else { performConsumer(Synchronization::beforeCompletion, sync); } } catch (SystemException e) { throw new SynchronizationException(e); } }
public void afterCompletion(int status) { for(Synchronization sync : otherSync) { sync.afterCompletion(status); } } }
/** * BeforeCompletion wrapper. Translates WAS proprietary call to a * javax.transaction.Synchronization call. */ public void beforeCompletion(int arg0, byte[] arg1) { if (_sync != null) { _sync.beforeCompletion(); } } }
public void afterCompletion(int status) { if (this.finishRequired) { try { this.delegate.afterCompletion(status); } catch (RuntimeException rex) { // ignore } finally { this.finishRequired = false; } } }