Search in sources :

Example 46 with UserTransaction

use of jakarta.transaction.UserTransaction in project spring-framework by spring-projects.

the class JndiJtaTransactionManagerTests method jtaTransactionManagerWithCustomJndiLookups.

@Test
public void jtaTransactionManagerWithCustomJndiLookups() throws Exception {
    UserTransaction ut = mock(UserTransaction.class);
    given(ut.getStatus()).willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE);
    TransactionManager tm = mock(TransactionManager.class);
    JtaTransactionManager ptm = new JtaTransactionManager();
    ptm.setUserTransactionName("jndi-ut");
    ptm.setTransactionManagerName("jndi-tm");
    ExpectedLookupTemplate jndiTemplate = new ExpectedLookupTemplate();
    jndiTemplate.addObject("jndi-ut", ut);
    jndiTemplate.addObject("jndi-tm", tm);
    ptm.setJndiTemplate(jndiTemplate);
    ptm.afterPropertiesSet();
    assertThat(ptm.getUserTransaction()).isEqualTo(ut);
    assertThat(ptm.getTransactionManager()).isEqualTo(tm);
    TransactionTemplate tt = new TransactionTemplate(ptm);
    boolean condition1 = !TransactionSynchronizationManager.isSynchronizationActive();
    assertThat(condition1).isTrue();
    assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
    tt.execute(new TransactionCallbackWithoutResult() {

        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {
            // something transactional
            assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
            assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
        }
    });
    boolean condition = !TransactionSynchronizationManager.isSynchronizationActive();
    assertThat(condition).isTrue();
    assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
    verify(ut).begin();
    verify(ut).commit();
}
Also used : UserTransaction(jakarta.transaction.UserTransaction) JtaTransactionManager(org.springframework.transaction.jta.JtaTransactionManager) JtaTransactionManager(org.springframework.transaction.jta.JtaTransactionManager) TransactionManager(jakarta.transaction.TransactionManager) TransactionTemplate(org.springframework.transaction.support.TransactionTemplate) ExpectedLookupTemplate(org.springframework.context.testfixture.jndi.ExpectedLookupTemplate) TransactionCallbackWithoutResult(org.springframework.transaction.support.TransactionCallbackWithoutResult) Test(org.junit.jupiter.api.Test)

Example 47 with UserTransaction

use of jakarta.transaction.UserTransaction in project spring-framework by spring-projects.

the class JndiJtaTransactionManagerTests method doTestJtaTransactionManagerWithDefaultJndiLookups.

private void doTestJtaTransactionManagerWithDefaultJndiLookups(String tmName, boolean tmFound, boolean defaultUt) throws Exception {
    UserTransaction ut = mock(UserTransaction.class);
    TransactionManager tm = mock(TransactionManager.class);
    if (defaultUt) {
        given(ut.getStatus()).willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE);
    } else {
        given(tm.getStatus()).willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE);
    }
    JtaTransactionManager ptm = new JtaTransactionManager();
    ExpectedLookupTemplate jndiTemplate = new ExpectedLookupTemplate();
    if (defaultUt) {
        jndiTemplate.addObject("java:comp/UserTransaction", ut);
    }
    jndiTemplate.addObject(tmName, tm);
    ptm.setJndiTemplate(jndiTemplate);
    ptm.afterPropertiesSet();
    if (tmFound) {
        assertThat(ptm.getTransactionManager()).isEqualTo(tm);
    } else {
        assertThat(ptm.getTransactionManager()).isNull();
    }
    if (defaultUt) {
        assertThat(ptm.getUserTransaction()).isEqualTo(ut);
    } else {
        boolean condition = ptm.getUserTransaction() instanceof UserTransactionAdapter;
        assertThat(condition).isTrue();
        UserTransactionAdapter uta = (UserTransactionAdapter) ptm.getUserTransaction();
        assertThat(uta.getTransactionManager()).isEqualTo(tm);
    }
    TransactionTemplate tt = new TransactionTemplate(ptm);
    boolean condition1 = !TransactionSynchronizationManager.isSynchronizationActive();
    assertThat(condition1).isTrue();
    assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
    tt.execute(new TransactionCallbackWithoutResult() {

        @Override
        protected void doInTransactionWithoutResult(TransactionStatus status) {
            // something transactional
            assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
            assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
        }
    });
    boolean condition = !TransactionSynchronizationManager.isSynchronizationActive();
    assertThat(condition).isTrue();
    assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
    if (defaultUt) {
        verify(ut).begin();
        verify(ut).commit();
    } else {
        verify(tm).begin();
        verify(tm).commit();
    }
}
Also used : UserTransaction(jakarta.transaction.UserTransaction) JtaTransactionManager(org.springframework.transaction.jta.JtaTransactionManager) JtaTransactionManager(org.springframework.transaction.jta.JtaTransactionManager) TransactionManager(jakarta.transaction.TransactionManager) TransactionTemplate(org.springframework.transaction.support.TransactionTemplate) ExpectedLookupTemplate(org.springframework.context.testfixture.jndi.ExpectedLookupTemplate) TransactionCallbackWithoutResult(org.springframework.transaction.support.TransactionCallbackWithoutResult) UserTransactionAdapter(org.springframework.transaction.jta.UserTransactionAdapter)

Aggregations

UserTransaction (jakarta.transaction.UserTransaction)47 JtaTransactionManager (org.springframework.transaction.jta.JtaTransactionManager)46 Test (org.junit.jupiter.api.Test)44 TransactionCallbackWithoutResult (org.springframework.transaction.support.TransactionCallbackWithoutResult)42 TransactionTemplate (org.springframework.transaction.support.TransactionTemplate)42 TransactionSynchronization (org.springframework.transaction.support.TransactionSynchronization)20 TransactionManager (jakarta.transaction.TransactionManager)9 SystemException (jakarta.transaction.SystemException)7 Transaction (jakarta.transaction.Transaction)4 DefaultTransactionDefinition (org.springframework.transaction.support.DefaultTransactionDefinition)4 Assertions.assertThatIllegalStateException (org.assertj.core.api.Assertions.assertThatIllegalStateException)3 ExpectedLookupTemplate (org.springframework.context.testfixture.jndi.ExpectedLookupTemplate)3 HeuristicRollbackException (jakarta.transaction.HeuristicRollbackException)2 HeuristicMixedException (jakarta.transaction.HeuristicMixedException)1 NotSupportedException (jakarta.transaction.NotSupportedException)1 RollbackException (jakarta.transaction.RollbackException)1 NamingException (javax.naming.NamingException)1 SimpleNamingContextBuilder (org.springframework.context.testfixture.jndi.SimpleNamingContextBuilder)1 OptimisticLockingFailureException (org.springframework.dao.OptimisticLockingFailureException)1 Nullable (org.springframework.lang.Nullable)1