Search in sources :

Example 6 with TransactionSynchronization

use of org.springframework.transaction.support.TransactionSynchronization in project gocd by gocd.

the class TransactionContext method transactionPushed.

public void transactionPushed() {
    if (!isTransactionBodyExecuting()) {
        if (isInTransactionSurrounding() && txnFinished) {
            throw new RuntimeException(TOO_MANY_TXNS_IN_SURROUNDING);
        }
        txnFinished = false;
    }
    ensureCanPush(txnActive);
    txnActive--;
    if (!futureSynchronizations.isEmpty()) {
        for (TransactionSynchronization futureSynchronization : futureSynchronizations) {
            doRegisterSynchronization(futureSynchronization);
        }
        clearFutureSynchronizations();
    }
}
Also used : TransactionSynchronization(org.springframework.transaction.support.TransactionSynchronization)

Example 7 with TransactionSynchronization

use of org.springframework.transaction.support.TransactionSynchronization in project gocd by gocd.

the class TransactionSynchronizationManagerTest method shouldRegisterSynchronization.

@Test
public void shouldRegisterSynchronization() {
    final TransactionSynchronizationManager synchronizationManager = new TransactionSynchronizationManager();
    final TransactionSynchronization synchronization = mock(TransactionSynchronization.class);
    transactionTemplate.execute(new org.springframework.transaction.support.TransactionCallbackWithoutResult() {

        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {
            synchronizationManager.registerSynchronization(synchronization);
        }
    });
    verify(synchronization).afterCommit();
}
Also used : TransactionSynchronization(org.springframework.transaction.support.TransactionSynchronization) TransactionSynchronizationManager(com.thoughtworks.go.server.transaction.TransactionSynchronizationManager) TransactionStatus(org.springframework.transaction.TransactionStatus) Test(org.junit.Test)

Example 8 with TransactionSynchronization

use of org.springframework.transaction.support.TransactionSynchronization in project gocd by gocd.

the class TransactionSynchronizationManagerTest method shouldRegisterSynchronization_andNotCallItOnTransactionFailure.

@Test
public void shouldRegisterSynchronization_andNotCallItOnTransactionFailure() {
    final TransactionSynchronizationManager synchronizationManager = new TransactionSynchronizationManager();
    final TransactionSynchronization synchronization = mock(TransactionSynchronization.class);
    try {
        transactionTemplate.execute(new org.springframework.transaction.support.TransactionCallbackWithoutResult() {

            @Override
            protected void doInTransactionWithoutResult(TransactionStatus status) {
                synchronizationManager.registerSynchronization(synchronization);
                throw new RuntimeException();
            }
        });
    } catch (Exception e) {
    //ignore
    }
    verify(synchronization, never()).afterCommit();
}
Also used : TransactionSynchronization(org.springframework.transaction.support.TransactionSynchronization) TransactionSynchronizationManager(com.thoughtworks.go.server.transaction.TransactionSynchronizationManager) TransactionStatus(org.springframework.transaction.TransactionStatus) Test(org.junit.Test)

Example 9 with TransactionSynchronization

use of org.springframework.transaction.support.TransactionSynchronization in project spring-framework by spring-projects.

the class JtaTransactionManagerTests method jtaTransactionManagerWithExistingTransactionAndRollbackOnlyAndNoGlobalRollback.

@Test
public void jtaTransactionManagerWithExistingTransactionAndRollbackOnlyAndNoGlobalRollback() throws Exception {
    UserTransaction ut = mock(UserTransaction.class);
    given(ut.getStatus()).willReturn(Status.STATUS_ACTIVE);
    final TransactionSynchronization synch = mock(TransactionSynchronization.class);
    JtaTransactionManager ptm = newJtaTransactionManager(ut);
    ptm.setGlobalRollbackOnParticipationFailure(false);
    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());
    verify(ut).setRollbackOnly();
    verify(synch).beforeCompletion();
    verify(synch).afterCompletion(TransactionSynchronization.STATUS_UNKNOWN);
}
Also used : UserTransaction(javax.transaction.UserTransaction) JtaTransactionManager(org.springframework.transaction.jta.JtaTransactionManager) TransactionSynchronization(org.springframework.transaction.support.TransactionSynchronization) TransactionTemplate(org.springframework.transaction.support.TransactionTemplate) TransactionCallbackWithoutResult(org.springframework.transaction.support.TransactionCallbackWithoutResult) Test(org.junit.Test)

Example 10 with TransactionSynchronization

use of org.springframework.transaction.support.TransactionSynchronization in project spring-framework by spring-projects.

the class JtaTransactionManagerTests method jtaTransactionManagerWithPropagationSupports.

@Test
public void jtaTransactionManagerWithPropagationSupports() throws Exception {
    UserTransaction ut = mock(UserTransaction.class);
    given(ut.getStatus()).willReturn(Status.STATUS_NO_TRANSACTION);
    final TransactionSynchronization synch = mock(TransactionSynchronization.class);
    JtaTransactionManager ptm = newJtaTransactionManager(ut);
    TransactionTemplate tt = new TransactionTemplate(ptm);
    tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
    assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
    tt.execute(new TransactionCallbackWithoutResult() {

        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {
            assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
            TransactionSynchronizationManager.registerSynchronization(synch);
            status.setRollbackOnly();
        }
    });
    assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
    verify(synch).beforeCompletion();
    verify(synch).afterCompletion(TransactionSynchronization.STATUS_ROLLED_BACK);
}
Also used : UserTransaction(javax.transaction.UserTransaction) JtaTransactionManager(org.springframework.transaction.jta.JtaTransactionManager) TransactionSynchronization(org.springframework.transaction.support.TransactionSynchronization) TransactionTemplate(org.springframework.transaction.support.TransactionTemplate) TransactionCallbackWithoutResult(org.springframework.transaction.support.TransactionCallbackWithoutResult) Test(org.junit.Test)

Aggregations

TransactionSynchronization (org.springframework.transaction.support.TransactionSynchronization)18 Test (org.junit.Test)16 UserTransaction (javax.transaction.UserTransaction)13 JtaTransactionManager (org.springframework.transaction.jta.JtaTransactionManager)13 TransactionCallbackWithoutResult (org.springframework.transaction.support.TransactionCallbackWithoutResult)13 TransactionTemplate (org.springframework.transaction.support.TransactionTemplate)13 TransactionSynchronizationManager (com.thoughtworks.go.server.transaction.TransactionSynchronizationManager)2 TransactionStatus (org.springframework.transaction.TransactionStatus)2 Connection (javax.jms.Connection)1 JMSException (javax.jms.JMSException)1 Session (javax.jms.Session)1 TransactionManager (javax.transaction.TransactionManager)1 OptimisticLockingFailureException (org.springframework.dao.OptimisticLockingFailureException)1 SingleConnectionFactory (org.springframework.jms.connection.SingleConnectionFactory)1 TransactionAwareConnectionFactoryProxy (org.springframework.jms.connection.TransactionAwareConnectionFactoryProxy)1 MockJtaTransaction (org.springframework.tests.transaction.MockJtaTransaction)1