Browse Source

Remove test prefixes and avoid warnings in JDBC and TX tests

pull/35641/head
Sam Brannen 2 months ago
parent
commit
c2ef11e1fc
  1. 64
      spring-jdbc/src/test/java/org/springframework/jdbc/datasource/DataSourceJtaTransactionTests.java
  2. 541
      spring-jdbc/src/test/java/org/springframework/jdbc/datasource/DataSourceTransactionManagerTests.java
  3. 53
      spring-jdbc/src/test/java/org/springframework/jdbc/support/JdbcTransactionManagerTests.java
  4. 24
      spring-tx/src/test/java/org/springframework/transaction/JndiJtaTransactionManagerTests.java
  5. 233
      spring-tx/src/test/java/org/springframework/transaction/JtaTransactionManagerTests.java
  6. 5
      spring-tx/src/test/java/org/springframework/transaction/support/TransactionSupportTests.java

64
spring-jdbc/src/test/java/org/springframework/jdbc/datasource/DataSourceJtaTransactionTests.java

@ -90,15 +90,16 @@ class DataSourceJtaTransactionTests {
@Test @Test
void testJtaTransactionCommit() throws Exception { void jtaTransactionCommit() throws Exception {
doTestJtaTransaction(false); doTestJtaTransaction(false);
} }
@Test @Test
void testJtaTransactionRollback() throws Exception { void jtaTransactionRollback() throws Exception {
doTestJtaTransaction(true); doTestJtaTransaction(true);
} }
@SuppressWarnings("deprecation")
private void doTestJtaTransaction(final boolean rollback) throws Exception { private void doTestJtaTransaction(final boolean rollback) throws Exception {
if (rollback) { if (rollback) {
given(userTransaction.getStatus()).willReturn( given(userTransaction.getStatus()).willReturn(
@ -145,55 +146,56 @@ class DataSourceJtaTransactionTests {
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNew() throws Exception { void jtaTransactionCommitWithPropagationRequiresNew() throws Exception {
doTestJtaTransactionWithPropagationRequiresNew(false, false, false, false); doTestJtaTransactionWithPropagationRequiresNew(false, false, false, false);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithAccessAfterResume() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithAccessAfterResume() throws Exception {
doTestJtaTransactionWithPropagationRequiresNew(false, false, true, false); doTestJtaTransactionWithPropagationRequiresNew(false, false, true, false);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnection() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnection() throws Exception {
doTestJtaTransactionWithPropagationRequiresNew(false, true, false, false); doTestJtaTransactionWithPropagationRequiresNew(false, true, false, false);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnectionAccessed() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnectionAccessed() throws Exception {
doTestJtaTransactionWithPropagationRequiresNew(false, true, true, false); doTestJtaTransactionWithPropagationRequiresNew(false, true, true, false);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithTransactionAwareDataSource() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithTransactionAwareDataSource() throws Exception {
doTestJtaTransactionWithPropagationRequiresNew(false, false, true, true); doTestJtaTransactionWithPropagationRequiresNew(false, false, true, true);
} }
@Test @Test
void testJtaTransactionRollbackWithPropagationRequiresNew() throws Exception { void jtaTransactionRollbackWithPropagationRequiresNew() throws Exception {
doTestJtaTransactionWithPropagationRequiresNew(true, false, false, false); doTestJtaTransactionWithPropagationRequiresNew(true, false, false, false);
} }
@Test @Test
void testJtaTransactionRollbackWithPropagationRequiresNewWithAccessAfterResume() throws Exception { void jtaTransactionRollbackWithPropagationRequiresNewWithAccessAfterResume() throws Exception {
doTestJtaTransactionWithPropagationRequiresNew(true, false, true, false); doTestJtaTransactionWithPropagationRequiresNew(true, false, true, false);
} }
@Test @Test
void testJtaTransactionRollbackWithPropagationRequiresNewWithOpenOuterConnection() throws Exception { void jtaTransactionRollbackWithPropagationRequiresNewWithOpenOuterConnection() throws Exception {
doTestJtaTransactionWithPropagationRequiresNew(true, true, false, false); doTestJtaTransactionWithPropagationRequiresNew(true, true, false, false);
} }
@Test @Test
void testJtaTransactionRollbackWithPropagationRequiresNewWithOpenOuterConnectionAccessed() throws Exception { void jtaTransactionRollbackWithPropagationRequiresNewWithOpenOuterConnectionAccessed() throws Exception {
doTestJtaTransactionWithPropagationRequiresNew(true, true, true, false); doTestJtaTransactionWithPropagationRequiresNew(true, true, true, false);
} }
@Test @Test
void testJtaTransactionRollbackWithPropagationRequiresNewWithTransactionAwareDataSource() throws Exception { void jtaTransactionRollbackWithPropagationRequiresNewWithTransactionAwareDataSource() throws Exception {
doTestJtaTransactionWithPropagationRequiresNew(true, false, true, true); doTestJtaTransactionWithPropagationRequiresNew(true, false, true, true);
} }
@SuppressWarnings("deprecation")
private void doTestJtaTransactionWithPropagationRequiresNew( private void doTestJtaTransactionWithPropagationRequiresNew(
final boolean rollback, final boolean openOuterConnection, final boolean accessAfterResume, final boolean rollback, final boolean openOuterConnection, final boolean accessAfterResume,
final boolean useTransactionAwareDataSource) throws Exception { final boolean useTransactionAwareDataSource) throws Exception {
@ -316,25 +318,26 @@ class DataSourceJtaTransactionTests {
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiredWithinSupports() throws Exception { void jtaTransactionCommitWithPropagationRequiredWithinSupports() throws Exception {
doTestJtaTransactionCommitWithNewTransactionWithinEmptyTransaction(false, false); doTestJtaTransactionCommitWithNewTransactionWithinEmptyTransaction(false, false);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiredWithinNotSupported() throws Exception { void jtaTransactionCommitWithPropagationRequiredWithinNotSupported() throws Exception {
doTestJtaTransactionCommitWithNewTransactionWithinEmptyTransaction(false, true); doTestJtaTransactionCommitWithNewTransactionWithinEmptyTransaction(false, true);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithinSupports() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithinSupports() throws Exception {
doTestJtaTransactionCommitWithNewTransactionWithinEmptyTransaction(true, false); doTestJtaTransactionCommitWithNewTransactionWithinEmptyTransaction(true, false);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithinNotSupported() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithinNotSupported() throws Exception {
doTestJtaTransactionCommitWithNewTransactionWithinEmptyTransaction(true, true); doTestJtaTransactionCommitWithNewTransactionWithinEmptyTransaction(true, true);
} }
@SuppressWarnings("deprecation")
private void doTestJtaTransactionCommitWithNewTransactionWithinEmptyTransaction( private void doTestJtaTransactionCommitWithNewTransactionWithinEmptyTransaction(
final boolean requiresNew, boolean notSupported) throws Exception { final boolean requiresNew, boolean notSupported) throws Exception {
@ -405,45 +408,46 @@ class DataSourceJtaTransactionTests {
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewAndSuspendException() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewAndSuspendException() throws Exception {
doTestJtaTransactionWithPropagationRequiresNewAndBeginException(true, false, false); doTestJtaTransactionWithPropagationRequiresNewAndBeginException(true, false, false);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnectionAndSuspendException() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnectionAndSuspendException() throws Exception {
doTestJtaTransactionWithPropagationRequiresNewAndBeginException(true, true, false); doTestJtaTransactionWithPropagationRequiresNewAndBeginException(true, true, false);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithTransactionAwareDataSourceAndSuspendException() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithTransactionAwareDataSourceAndSuspendException() throws Exception {
doTestJtaTransactionWithPropagationRequiresNewAndBeginException(true, false, true); doTestJtaTransactionWithPropagationRequiresNewAndBeginException(true, false, true);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnectionAndTransactionAwareDataSourceAndSuspendException() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnectionAndTransactionAwareDataSourceAndSuspendException() throws Exception {
doTestJtaTransactionWithPropagationRequiresNewAndBeginException(true, true, true); doTestJtaTransactionWithPropagationRequiresNewAndBeginException(true, true, true);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewAndBeginException() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewAndBeginException() throws Exception {
doTestJtaTransactionWithPropagationRequiresNewAndBeginException(false, false, false); doTestJtaTransactionWithPropagationRequiresNewAndBeginException(false, false, false);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnectionAndBeginException() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnectionAndBeginException() throws Exception {
doTestJtaTransactionWithPropagationRequiresNewAndBeginException(false, true, false); doTestJtaTransactionWithPropagationRequiresNewAndBeginException(false, true, false);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnectionAndTransactionAwareDataSourceAndBeginException() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithOpenOuterConnectionAndTransactionAwareDataSourceAndBeginException() throws Exception {
doTestJtaTransactionWithPropagationRequiresNewAndBeginException(false, true, true); doTestJtaTransactionWithPropagationRequiresNewAndBeginException(false, true, true);
} }
@Test @Test
void testJtaTransactionCommitWithPropagationRequiresNewWithTransactionAwareDataSourceAndBeginException() throws Exception { void jtaTransactionCommitWithPropagationRequiresNewWithTransactionAwareDataSourceAndBeginException() throws Exception {
doTestJtaTransactionWithPropagationRequiresNewAndBeginException(false, false, true); doTestJtaTransactionWithPropagationRequiresNewAndBeginException(false, false, true);
} }
@SuppressWarnings("deprecation")
private void doTestJtaTransactionWithPropagationRequiresNewAndBeginException(boolean suspendException, private void doTestJtaTransactionWithPropagationRequiresNewAndBeginException(boolean suspendException,
final boolean openOuterConnection, final boolean useTransactionAwareDataSource) throws Exception { final boolean openOuterConnection, final boolean useTransactionAwareDataSource) throws Exception {
@ -544,8 +548,9 @@ class DataSourceJtaTransactionTests {
} }
} }
@SuppressWarnings("deprecation")
@Test @Test
void testJtaTransactionWithConnectionHolderStillBound() throws Exception { void jtaTransactionWithConnectionHolderStillBound() throws Exception {
@SuppressWarnings("serial") @SuppressWarnings("serial")
JtaTransactionManager ptm = new JtaTransactionManager(userTransaction) { JtaTransactionManager ptm = new JtaTransactionManager(userTransaction) {
@ -601,8 +606,9 @@ class DataSourceJtaTransactionTests {
verify(connection, times(3)).close(); verify(connection, times(3)).close();
} }
@SuppressWarnings("deprecation")
@Test @Test
void testJtaTransactionWithIsolationLevelDataSourceAdapter() throws Exception { void jtaTransactionWithIsolationLevelDataSourceAdapter() throws Exception {
given(userTransaction.getStatus()).willReturn( given(userTransaction.getStatus()).willReturn(
Status.STATUS_NO_TRANSACTION, Status.STATUS_NO_TRANSACTION,
Status.STATUS_ACTIVE, Status.STATUS_ACTIVE,
@ -649,15 +655,16 @@ class DataSourceJtaTransactionTests {
} }
@Test @Test
void testJtaTransactionWithIsolationLevelDataSourceRouter() throws Exception { void jtaTransactionWithIsolationLevelDataSourceRouter() throws Exception {
doTestJtaTransactionWithIsolationLevelDataSourceRouter(false); doTestJtaTransactionWithIsolationLevelDataSourceRouter(false);
} }
@Test @Test
void testJtaTransactionWithIsolationLevelDataSourceRouterWithDataSourceLookup() throws Exception { void jtaTransactionWithIsolationLevelDataSourceRouterWithDataSourceLookup() throws Exception {
doTestJtaTransactionWithIsolationLevelDataSourceRouter(true); doTestJtaTransactionWithIsolationLevelDataSourceRouter(true);
} }
@SuppressWarnings("deprecation")
private void doTestJtaTransactionWithIsolationLevelDataSourceRouter(boolean dataSourceLookup) throws Exception { private void doTestJtaTransactionWithIsolationLevelDataSourceRouter(boolean dataSourceLookup) throws Exception {
given(userTransaction.getStatus()) given(userTransaction.getStatus())
.willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE, Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE); .willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE, Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE);
@ -717,4 +724,5 @@ class DataSourceJtaTransactionTests {
verify(connection1).close(); verify(connection1).close();
verify(connection2).close(); verify(connection2).close();
} }
} }

541
spring-jdbc/src/test/java/org/springframework/jdbc/datasource/DataSourceTransactionManagerTests.java

File diff suppressed because it is too large Load Diff

53
spring-jdbc/src/test/java/org/springframework/jdbc/support/JdbcTransactionManagerTests.java

@ -25,9 +25,7 @@ import org.mockito.InOrder;
import org.springframework.dao.ConcurrencyFailureException; import org.springframework.dao.ConcurrencyFailureException;
import org.springframework.jdbc.datasource.DataSourceTransactionManagerTests; import org.springframework.jdbc.datasource.DataSourceTransactionManagerTests;
import org.springframework.transaction.TransactionStatus;
import org.springframework.transaction.TransactionSystemException; import org.springframework.transaction.TransactionSystemException;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate; import org.springframework.transaction.support.TransactionTemplate;
@ -53,17 +51,14 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@Override @Override
@Test @Test
protected void testTransactionWithExceptionOnCommit() throws Exception { protected void transactionWithExceptionOnCommit() throws Exception {
willThrow(new SQLException("Cannot commit")).given(con).commit(); willThrow(new SQLException("Cannot commit")).given(con).commit();
TransactionTemplate tt = new TransactionTemplate(tm); TransactionTemplate tt = new TransactionTemplate(tm);
// plain TransactionSystemException // plain TransactionSystemException
assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
}
})); }));
assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse(); assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse();
@ -71,18 +66,15 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
} }
@Test @Test
void testTransactionWithDataAccessExceptionOnCommit() throws Exception { void transactionWithDataAccessExceptionOnCommit() throws Exception {
willThrow(new SQLException("Cannot commit")).given(con).commit(); willThrow(new SQLException("Cannot commit")).given(con).commit();
((JdbcTransactionManager) tm).setExceptionTranslator((task, sql, ex) -> new ConcurrencyFailureException(task)); ((JdbcTransactionManager) tm).setExceptionTranslator((task, sql, ex) -> new ConcurrencyFailureException(task));
TransactionTemplate tt = new TransactionTemplate(tm); TransactionTemplate tt = new TransactionTemplate(tm);
// specific ConcurrencyFailureException // specific ConcurrencyFailureException
assertThatExceptionOfType(ConcurrencyFailureException.class).isThrownBy(() -> assertThatExceptionOfType(ConcurrencyFailureException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
}
})); }));
assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse(); assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse();
@ -90,17 +82,14 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
} }
@Test @Test
void testTransactionWithDataAccessExceptionOnCommitFromLazyExceptionTranslator() throws Exception { void transactionWithDataAccessExceptionOnCommitFromLazyExceptionTranslator() throws Exception {
willThrow(new SQLException("Cannot commit", "40")).given(con).commit(); willThrow(new SQLException("Cannot commit", "40")).given(con).commit();
TransactionTemplate tt = new TransactionTemplate(tm); TransactionTemplate tt = new TransactionTemplate(tm);
// specific ConcurrencyFailureException // specific ConcurrencyFailureException
assertThatExceptionOfType(ConcurrencyFailureException.class).isThrownBy(() -> assertThatExceptionOfType(ConcurrencyFailureException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
}
})); }));
assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse(); assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse();
@ -109,7 +98,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@Override @Override
@Test @Test
protected void testTransactionWithExceptionOnCommitAndRollbackOnCommitFailure() throws Exception { protected void transactionWithExceptionOnCommitAndRollbackOnCommitFailure() throws Exception {
willThrow(new SQLException("Cannot commit")).given(con).commit(); willThrow(new SQLException("Cannot commit")).given(con).commit();
tm.setRollbackOnCommitFailure(true); tm.setRollbackOnCommitFailure(true);
@ -117,11 +106,8 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
// plain TransactionSystemException // plain TransactionSystemException
assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
}
})); }));
assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse(); assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse();
@ -131,16 +117,14 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@Override @Override
@Test @Test
protected void testTransactionWithExceptionOnRollback() throws Exception { protected void transactionWithExceptionOnRollback() throws Exception {
given(con.getAutoCommit()).willReturn(true); given(con.getAutoCommit()).willReturn(true);
willThrow(new SQLException("Cannot rollback")).given(con).rollback(); willThrow(new SQLException("Cannot rollback")).given(con).rollback();
TransactionTemplate tt = new TransactionTemplate(tm); TransactionTemplate tt = new TransactionTemplate(tm);
// plain TransactionSystemException // plain TransactionSystemException
assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) throws RuntimeException {
assertThat(status.getTransactionName()).isEmpty(); assertThat(status.getTransactionName()).isEmpty();
assertThat(status.hasTransaction()).isTrue(); assertThat(status.hasTransaction()).isTrue();
assertThat(status.isNewTransaction()).isTrue(); assertThat(status.isNewTransaction()).isTrue();
@ -151,7 +135,6 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
status.setRollbackOnly(); status.setRollbackOnly();
assertThat(status.isRollbackOnly()).isTrue(); assertThat(status.isRollbackOnly()).isTrue();
assertThat(status.isCompleted()).isFalse(); assertThat(status.isCompleted()).isFalse();
}
})); }));
assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse(); assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse();
@ -163,7 +146,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
} }
@Test @Test
void testTransactionWithDataAccessExceptionOnRollback() throws Exception { void transactionWithDataAccessExceptionOnRollback() throws Exception {
given(con.getAutoCommit()).willReturn(true); given(con.getAutoCommit()).willReturn(true);
willThrow(new SQLException("Cannot rollback")).given(con).rollback(); willThrow(new SQLException("Cannot rollback")).given(con).rollback();
((JdbcTransactionManager) tm).setExceptionTranslator((task, sql, ex) -> new ConcurrencyFailureException(task)); ((JdbcTransactionManager) tm).setExceptionTranslator((task, sql, ex) -> new ConcurrencyFailureException(task));
@ -171,12 +154,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
// specific ConcurrencyFailureException // specific ConcurrencyFailureException
assertThatExceptionOfType(ConcurrencyFailureException.class).isThrownBy(() -> assertThatExceptionOfType(ConcurrencyFailureException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> status.setRollbackOnly()));
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) throws RuntimeException {
status.setRollbackOnly();
}
}));
assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse(); assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse();
InOrder ordered = inOrder(con); InOrder ordered = inOrder(con);
@ -187,16 +165,14 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
} }
@Test @Test
void testTransactionWithDataAccessExceptionOnRollbackFromLazyExceptionTranslator() throws Exception { void transactionWithDataAccessExceptionOnRollbackFromLazyExceptionTranslator() throws Exception {
given(con.getAutoCommit()).willReturn(true); given(con.getAutoCommit()).willReturn(true);
willThrow(new SQLException("Cannot rollback", "40")).given(con).rollback(); willThrow(new SQLException("Cannot rollback", "40")).given(con).rollback();
TransactionTemplate tt = new TransactionTemplate(tm); TransactionTemplate tt = new TransactionTemplate(tm);
// specific ConcurrencyFailureException // specific ConcurrencyFailureException
assertThatExceptionOfType(ConcurrencyFailureException.class).isThrownBy(() -> assertThatExceptionOfType(ConcurrencyFailureException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) throws RuntimeException {
assertThat(status.getTransactionName()).isEmpty(); assertThat(status.getTransactionName()).isEmpty();
assertThat(status.hasTransaction()).isTrue(); assertThat(status.hasTransaction()).isTrue();
assertThat(status.isNewTransaction()).isTrue(); assertThat(status.isNewTransaction()).isTrue();
@ -207,7 +183,6 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
status.setRollbackOnly(); status.setRollbackOnly();
assertThat(status.isRollbackOnly()).isTrue(); assertThat(status.isRollbackOnly()).isTrue();
assertThat(status.isCompleted()).isFalse(); assertThat(status.isCompleted()).isFalse();
}
})); }));
assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse(); assertThat(TransactionSynchronizationManager.hasResource(ds)).isFalse();

24
spring-tx/src/test/java/org/springframework/transaction/JndiJtaTransactionManagerTests.java

@ -25,7 +25,6 @@ import org.junit.jupiter.api.Test;
import org.springframework.context.testfixture.jndi.ExpectedLookupTemplate; import org.springframework.context.testfixture.jndi.ExpectedLookupTemplate;
import org.springframework.transaction.jta.JtaTransactionManager; import org.springframework.transaction.jta.JtaTransactionManager;
import org.springframework.transaction.jta.UserTransactionAdapter; import org.springframework.transaction.jta.UserTransactionAdapter;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate; import org.springframework.transaction.support.TransactionTemplate;
@ -102,13 +101,10 @@ class JndiJtaTransactionManagerTests {
boolean condition1 = !TransactionSynchronizationManager.isSynchronizationActive(); boolean condition1 = !TransactionSynchronizationManager.isSynchronizationActive();
assertThat(condition1).isTrue(); assertThat(condition1).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
}
}); });
boolean condition = !TransactionSynchronizationManager.isSynchronizationActive(); boolean condition = !TransactionSynchronizationManager.isSynchronizationActive();
assertThat(condition).isTrue(); assertThat(condition).isTrue();
@ -149,13 +145,10 @@ class JndiJtaTransactionManagerTests {
boolean condition1 = !TransactionSynchronizationManager.isSynchronizationActive(); boolean condition1 = !TransactionSynchronizationManager.isSynchronizationActive();
assertThat(condition1).isTrue(); assertThat(condition1).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
}
}); });
boolean condition = !TransactionSynchronizationManager.isSynchronizationActive(); boolean condition = !TransactionSynchronizationManager.isSynchronizationActive();
assertThat(condition).isTrue(); assertThat(condition).isTrue();
@ -185,26 +178,19 @@ class JndiJtaTransactionManagerTests {
boolean condition1 = !TransactionSynchronizationManager.isSynchronizationActive(); boolean condition1 = !TransactionSynchronizationManager.isSynchronizationActive();
assertThat(condition1).isTrue(); assertThat(condition1).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
}
}); });
ptm.setJndiTemplate(new ExpectedLookupTemplate("java:comp/UserTransaction", ut2)); ptm.setJndiTemplate(new ExpectedLookupTemplate("java:comp/UserTransaction", ut2));
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
}
}); });
boolean condition = !TransactionSynchronizationManager.isSynchronizationActive(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThat(condition).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
verify(ut).begin(); verify(ut).begin();

233
spring-tx/src/test/java/org/springframework/transaction/JtaTransactionManagerTests.java

@ -31,7 +31,6 @@ import org.junit.jupiter.api.Test;
import org.springframework.dao.OptimisticLockingFailureException; import org.springframework.dao.OptimisticLockingFailureException;
import org.springframework.transaction.jta.JtaTransactionManager; import org.springframework.transaction.jta.JtaTransactionManager;
import org.springframework.transaction.support.DefaultTransactionDefinition; import org.springframework.transaction.support.DefaultTransactionDefinition;
import org.springframework.transaction.support.TransactionCallbackWithoutResult;
import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transaction.support.TransactionSynchronization;
import org.springframework.transaction.support.TransactionSynchronizationManager; import org.springframework.transaction.support.TransactionSynchronizationManager;
import org.springframework.transaction.support.TransactionTemplate; import org.springframework.transaction.support.TransactionTemplate;
@ -69,9 +68,7 @@ class JtaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isNull(); assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isNull();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
assertThat(status.getTransactionName()).isEqualTo("txName"); assertThat(status.getTransactionName()).isEqualTo("txName");
assertThat(status.hasTransaction()).isTrue(); assertThat(status.hasTransaction()).isTrue();
@ -84,7 +81,6 @@ class JtaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
assertThat(status.isRollbackOnly()).isFalse(); assertThat(status.isRollbackOnly()).isFalse();
assertThat(status.isCompleted()).isFalse(); assertThat(status.isCompleted()).isFalse();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isNull(); assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isNull();
@ -109,9 +105,7 @@ class JtaTransactionManagerTests {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
ptm.setTransactionSynchronization(JtaTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION); ptm.setTransactionSynchronization(JtaTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
assertThat(status.getTransactionName()).isEmpty(); assertThat(status.getTransactionName()).isEmpty();
assertThat(status.hasTransaction()).isTrue(); assertThat(status.hasTransaction()).isTrue();
@ -122,7 +116,6 @@ class JtaTransactionManagerTests {
TransactionSynchronizationManager.registerSynchronization(synch); TransactionSynchronizationManager.registerSynchronization(synch);
assertThat(status.isRollbackOnly()).isFalse(); assertThat(status.isRollbackOnly()).isFalse();
assertThat(status.isCompleted()).isFalse(); assertThat(status.isCompleted()).isFalse();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -146,9 +139,7 @@ class JtaTransactionManagerTests {
ptm.afterPropertiesSet(); ptm.afterPropertiesSet();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(status.getTransactionName()).isEmpty(); assertThat(status.getTransactionName()).isEmpty();
assertThat(status.hasTransaction()).isTrue(); assertThat(status.hasTransaction()).isTrue();
assertThat(status.isNewTransaction()).isTrue(); assertThat(status.isNewTransaction()).isTrue();
@ -157,7 +148,6 @@ class JtaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThat(status.isRollbackOnly()).isFalse(); assertThat(status.isRollbackOnly()).isFalse();
assertThat(status.isCompleted()).isFalse(); assertThat(status.isCompleted()).isFalse();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -179,9 +169,7 @@ class JtaTransactionManagerTests {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isNull(); assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isNull();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(status.getTransactionName()).isEqualTo("txName"); assertThat(status.getTransactionName()).isEqualTo("txName");
assertThat(status.hasTransaction()).isTrue(); assertThat(status.hasTransaction()).isTrue();
assertThat(status.isNewTransaction()).isTrue(); assertThat(status.isNewTransaction()).isTrue();
@ -194,7 +182,6 @@ class JtaTransactionManagerTests {
status.setRollbackOnly(); status.setRollbackOnly();
assertThat(status.isRollbackOnly()).isTrue(); assertThat(status.isRollbackOnly()).isTrue();
assertThat(status.isCompleted()).isFalse(); assertThat(status.isCompleted()).isFalse();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isNull(); assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isNull();
@ -218,9 +205,7 @@ class JtaTransactionManagerTests {
ptm.setTransactionSynchronization(JtaTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION); ptm.setTransactionSynchronization(JtaTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
tt.setTimeout(10); tt.setTimeout(10);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(status.getTransactionName()).isEmpty(); assertThat(status.getTransactionName()).isEmpty();
assertThat(status.hasTransaction()).isTrue(); assertThat(status.hasTransaction()).isTrue();
assertThat(status.isNewTransaction()).isTrue(); assertThat(status.isNewTransaction()).isTrue();
@ -231,7 +216,6 @@ class JtaTransactionManagerTests {
status.setRollbackOnly(); status.setRollbackOnly();
assertThat(status.isRollbackOnly()).isTrue(); assertThat(status.isRollbackOnly()).isTrue();
assertThat(status.isCompleted()).isFalse(); assertThat(status.isCompleted()).isFalse();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -254,9 +238,7 @@ class JtaTransactionManagerTests {
ptm.afterPropertiesSet(); ptm.afterPropertiesSet();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(status.getTransactionName()).isEmpty(); assertThat(status.getTransactionName()).isEmpty();
assertThat(status.hasTransaction()).isTrue(); assertThat(status.hasTransaction()).isTrue();
assertThat(status.isNewTransaction()).isTrue(); assertThat(status.isNewTransaction()).isTrue();
@ -267,7 +249,6 @@ class JtaTransactionManagerTests {
status.setRollbackOnly(); status.setRollbackOnly();
assertThat(status.isRollbackOnly()).isTrue(); assertThat(status.isRollbackOnly()).isTrue();
assertThat(status.isCompleted()).isFalse(); assertThat(status.isCompleted()).isFalse();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -287,13 +268,10 @@ class JtaTransactionManagerTests {
JtaTransactionManager ptm = newJtaTransactionManager(ut); JtaTransactionManager ptm = newJtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
TransactionSynchronizationManager.registerSynchronization(synch); TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -313,13 +291,10 @@ class JtaTransactionManagerTests {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThatIllegalStateException().isThrownBy(() -> assertThatIllegalStateException().isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
TransactionSynchronizationManager.registerSynchronization(synch); TransactionSynchronizationManager.registerSynchronization(synch);
throw new IllegalStateException("I want a rollback"); throw new IllegalStateException("I want a rollback");
}
})); }));
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -340,12 +315,9 @@ class JtaTransactionManagerTests {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThatExceptionOfType(OptimisticLockingFailureException.class).isThrownBy(() -> assertThatExceptionOfType(OptimisticLockingFailureException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
TransactionSynchronizationManager.registerSynchronization(synch); TransactionSynchronizationManager.registerSynchronization(synch);
}
})); }));
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -365,13 +337,10 @@ class JtaTransactionManagerTests {
ptm.setGlobalRollbackOnParticipationFailure(false); ptm.setGlobalRollbackOnParticipationFailure(false);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
TransactionSynchronizationManager.registerSynchronization(synch); TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -391,13 +360,10 @@ class JtaTransactionManagerTests {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThatIllegalStateException().isThrownBy(() -> assertThatIllegalStateException().isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
TransactionSynchronizationManager.registerSynchronization(synch); TransactionSynchronizationManager.registerSynchronization(synch);
throw new IllegalStateException("I want a rollback"); throw new IllegalStateException("I want a rollback");
}
})); }));
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -419,13 +385,10 @@ class JtaTransactionManagerTests {
JtaTransactionManager ptm = newJtaTransactionManager(ut, tm); JtaTransactionManager ptm = newJtaTransactionManager(ut, tm);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
TransactionSynchronizationManager.registerSynchronization(synch); TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThat(tx.getSynchronization()).isNotNull(); assertThat(tx.getSynchronization()).isNotNull();
@ -448,13 +411,10 @@ class JtaTransactionManagerTests {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
ptm.setTransactionSynchronization(JtaTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION); ptm.setTransactionSynchronization(JtaTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
TransactionSynchronizationManager.registerSynchronization(synch); TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -474,12 +434,9 @@ class JtaTransactionManagerTests {
ptm.afterPropertiesSet(); ptm.afterPropertiesSet();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -497,13 +454,10 @@ class JtaTransactionManagerTests {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
TransactionSynchronizationManager.registerSynchronization(synch); TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -523,13 +477,10 @@ class JtaTransactionManagerTests {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
TransactionSynchronizationManager.registerSynchronization(synch); TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -549,12 +500,9 @@ class JtaTransactionManagerTests {
ptm.afterPropertiesSet(); ptm.afterPropertiesSet();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
} }
@ -571,12 +519,9 @@ class JtaTransactionManagerTests {
ptm.afterPropertiesSet(); ptm.afterPropertiesSet();
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
} }
@ -593,12 +538,9 @@ class JtaTransactionManagerTests {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NOT_SUPPORTED); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NOT_SUPPORTED);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -621,9 +563,7 @@ class JtaTransactionManagerTests {
tt.setName("txName"); tt.setName("txName");
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status1 -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isEqualTo("txName"); assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isEqualTo("txName");
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
@ -632,19 +572,15 @@ class JtaTransactionManagerTests {
tt2.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); tt2.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
tt2.setReadOnly(true); tt2.setReadOnly(true);
tt2.setName("txName2"); tt2.setName("txName2");
tt2.execute(new TransactionCallbackWithoutResult() { tt2.executeWithoutResult(status2 -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isEqualTo("txName2"); assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isEqualTo("txName2");
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isTrue(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isTrue();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isEqualTo("txName"); assertThat(TransactionSynchronizationManager.getCurrentTransactionName()).isEqualTo("txName");
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -664,28 +600,22 @@ class JtaTransactionManagerTests {
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status1 -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
assertThat(TransactionSynchronizationManager.isActualTransactionActive()).isFalse(); assertThat(TransactionSynchronizationManager.isActualTransactionActive()).isFalse();
TransactionTemplate tt2 = new TransactionTemplate(ptm); TransactionTemplate tt2 = new TransactionTemplate(ptm);
tt2.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); tt2.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
tt2.execute(new TransactionCallbackWithoutResult() { tt2.executeWithoutResult(status2 -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
assertThat(TransactionSynchronizationManager.isActualTransactionActive()).isTrue(); assertThat(TransactionSynchronizationManager.isActualTransactionActive()).isTrue();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse(); assertThat(TransactionSynchronizationManager.isCurrentTransactionReadOnly()).isFalse();
assertThat(TransactionSynchronizationManager.isActualTransactionActive()).isFalse(); assertThat(TransactionSynchronizationManager.isActualTransactionActive()).isFalse();
}
}); });
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
@ -705,12 +635,8 @@ class JtaTransactionManagerTests {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status ->
@Override assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue());
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
}
});
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
verify(ut).begin(); verify(ut).begin();
@ -730,12 +656,8 @@ class JtaTransactionManagerTests {
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status ->
@Override assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue()));
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
}
}));
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
} }
@ -753,12 +675,8 @@ class JtaTransactionManagerTests {
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThatExceptionOfType(CannotCreateTransactionException.class).isThrownBy(() -> assertThatExceptionOfType(CannotCreateTransactionException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status ->
@Override assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue()));
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
}
}));
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
verify(tm).resume(tx); verify(tm).resume(tx);
} }
@ -774,12 +692,8 @@ class JtaTransactionManagerTests {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status ->
@Override assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue());
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isTrue();
}
});
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
verify(tm).begin(); verify(tm).begin();
@ -797,10 +711,8 @@ class JtaTransactionManagerTests {
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
assertThatExceptionOfType(TransactionSuspensionNotSupportedException.class).isThrownBy(() -> assertThatExceptionOfType(TransactionSuspensionNotSupportedException.class).isThrownBy(() ->
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override // something transactional
protected void doInTransactionWithoutResult(TransactionStatus status) {
}
})); }));
assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse(); assertThat(TransactionSynchronizationManager.isSynchronizationActive()).isFalse();
} }
@ -814,11 +726,8 @@ class JtaTransactionManagerTests {
JtaTransactionManager ptm = newJtaTransactionManager(ut); JtaTransactionManager ptm = newJtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE); tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
}
}); });
}); });
} }
@ -831,11 +740,8 @@ class JtaTransactionManagerTests {
assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> { assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> {
JtaTransactionManager ptm = newJtaTransactionManager(ut); JtaTransactionManager ptm = newJtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
}
}); });
}); });
} }
@ -848,9 +754,7 @@ class JtaTransactionManagerTests {
JtaTransactionManager ptm = newJtaTransactionManager(ut); JtaTransactionManager ptm = newJtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NESTED); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NESTED);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
assertThat(status.getTransactionName()).isEmpty(); assertThat(status.getTransactionName()).isEmpty();
assertThat(status.hasTransaction()).isTrue(); assertThat(status.hasTransaction()).isTrue();
@ -859,7 +763,6 @@ class JtaTransactionManagerTests {
assertThat(status.isReadOnly()).isFalse(); assertThat(status.isReadOnly()).isFalse();
assertThat(status.isRollbackOnly()).isFalse(); assertThat(status.isRollbackOnly()).isFalse();
assertThat(status.isCompleted()).isFalse(); assertThat(status.isCompleted()).isFalse();
}
}); });
verify(ut).begin(); verify(ut).begin();
@ -876,11 +779,8 @@ class JtaTransactionManagerTests {
JtaTransactionManager ptm = newJtaTransactionManager(ut); JtaTransactionManager ptm = newJtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NESTED); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NESTED);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
}
}); });
}); });
} }
@ -895,11 +795,8 @@ class JtaTransactionManagerTests {
JtaTransactionManager ptm = newJtaTransactionManager(ut); JtaTransactionManager ptm = newJtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NESTED); tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NESTED);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
}
}); });
}); });
} }
@ -915,12 +812,8 @@ class JtaTransactionManagerTests {
ptm.addListener(tl); ptm.addListener(tl);
assertThatExceptionOfType(CannotCreateTransactionException.class).isThrownBy(() -> { assertThatExceptionOfType(CannotCreateTransactionException.class).isThrownBy(() -> {
TransactionTemplate tt = new TransactionTemplate(ptm); new TransactionTemplate(ptm).executeWithoutResult(status -> {
tt.execute(new TransactionCallbackWithoutResult() {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
}
}); });
}); });
@ -948,9 +841,7 @@ class JtaTransactionManagerTests {
assertThatExceptionOfType(UnexpectedRollbackException.class).isThrownBy(() -> { assertThatExceptionOfType(UnexpectedRollbackException.class).isThrownBy(() -> {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override @Override
@ -959,7 +850,6 @@ class JtaTransactionManagerTests {
.isEqualTo(TransactionSynchronization.STATUS_ROLLED_BACK); .isEqualTo(TransactionSynchronization.STATUS_ROLLED_BACK);
} }
}); });
}
}); });
}); });
@ -1003,9 +893,7 @@ class JtaTransactionManagerTests {
assertThat(ts.isNewTransaction()).as("Is new transaction").isTrue(); assertThat(ts.isNewTransaction()).as("Is new transaction").isTrue();
TransactionTemplate tt = new TransactionTemplate(tm); TransactionTemplate tt = new TransactionTemplate(tm);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override @Override
@ -1014,7 +902,6 @@ class JtaTransactionManagerTests {
.isEqualTo(TransactionSynchronization.STATUS_ROLLED_BACK); .isEqualTo(TransactionSynchronization.STATUS_ROLLED_BACK);
} }
}); });
}
}); });
outerTransactionBoundaryReached = true; outerTransactionBoundaryReached = true;
@ -1049,17 +936,15 @@ class JtaTransactionManagerTests {
assertThatExceptionOfType(HeuristicCompletionException.class).isThrownBy(() -> { assertThatExceptionOfType(HeuristicCompletionException.class).isThrownBy(() -> {
JtaTransactionManager ptm = newJtaTransactionManager(ut); JtaTransactionManager ptm = newJtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override @Override
public void afterCompletion(int status) { public void afterCompletion(int status) {
assertThat(status == TransactionSynchronization.STATUS_UNKNOWN).as("Correct completion status").isTrue(); assertThat(status).as("Correct completion status")
.isEqualTo(TransactionSynchronization.STATUS_UNKNOWN);
} }
}); });
}
}); });
}).satisfies(ex -> assertThat(ex.getOutcomeState()).isEqualTo(HeuristicCompletionException.STATE_MIXED)); }).satisfies(ex -> assertThat(ex.getOutcomeState()).isEqualTo(HeuristicCompletionException.STATE_MIXED));
@ -1076,17 +961,15 @@ class JtaTransactionManagerTests {
assertThatExceptionOfType(HeuristicCompletionException.class).isThrownBy(() -> { assertThatExceptionOfType(HeuristicCompletionException.class).isThrownBy(() -> {
JtaTransactionManager ptm = newJtaTransactionManager(ut); JtaTransactionManager ptm = newJtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override @Override
public void afterCompletion(int status) { public void afterCompletion(int status) {
assertThat(status == TransactionSynchronization.STATUS_UNKNOWN).as("Correct completion status").isTrue(); assertThat(status).as("Correct completion status")
.isEqualTo(TransactionSynchronization.STATUS_UNKNOWN);
} }
}); });
}
}); });
}).satisfies(ex -> assertThat(ex.getOutcomeState()).isEqualTo(HeuristicCompletionException.STATE_ROLLED_BACK)); }).satisfies(ex -> assertThat(ex.getOutcomeState()).isEqualTo(HeuristicCompletionException.STATE_ROLLED_BACK));
@ -1106,9 +989,7 @@ class JtaTransactionManagerTests {
assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> { assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
// something transactional // something transactional
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override @Override
@ -1117,7 +998,6 @@ class JtaTransactionManagerTests {
.isEqualTo(TransactionSynchronization.STATUS_UNKNOWN); .isEqualTo(TransactionSynchronization.STATUS_UNKNOWN);
} }
}); });
}
}); });
}); });
@ -1146,9 +1026,7 @@ class JtaTransactionManagerTests {
assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> { assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> {
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override @Override
public void afterCompletion(int status) { public void afterCompletion(int status) {
@ -1157,7 +1035,6 @@ class JtaTransactionManagerTests {
} }
}); });
status.setRollbackOnly(); status.setRollbackOnly();
}
}); });
}); });
@ -1183,12 +1060,7 @@ class JtaTransactionManagerTests {
assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> { assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> {
JtaTransactionManager ptm = newJtaTransactionManager(ut); JtaTransactionManager ptm = newJtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(TransactionExecution::setRollbackOnly);
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
status.setRollbackOnly();
}
});
}); });
} }
@ -1201,9 +1073,7 @@ class JtaTransactionManagerTests {
assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> { assertThatExceptionOfType(TransactionSystemException.class).isThrownBy(() -> {
JtaTransactionManager ptm = newJtaTransactionManager(ut); JtaTransactionManager ptm = newJtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm); TransactionTemplate tt = new TransactionTemplate(ptm);
tt.execute(new TransactionCallbackWithoutResult() { tt.executeWithoutResult(status -> {
@Override
protected void doInTransactionWithoutResult(TransactionStatus status) {
status.setRollbackOnly(); status.setRollbackOnly();
TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() { TransactionSynchronizationManager.registerSynchronization(new TransactionSynchronization() {
@Override @Override
@ -1212,7 +1082,6 @@ class JtaTransactionManagerTests {
.isEqualTo(TransactionSynchronization.STATUS_UNKNOWN); .isEqualTo(TransactionSynchronization.STATUS_UNKNOWN);
} }
}); });
}
}); });
}); });
} }

5
spring-tx/src/test/java/org/springframework/transaction/support/TransactionSupportTests.java

@ -233,6 +233,7 @@ class TransactionSupportTests {
} }
@Test @Test
@SuppressWarnings("deprecation")
void transactionTemplate() { void transactionTemplate() {
TestTransactionManager tm = new TestTransactionManager(false, true); TestTransactionManager tm = new TestTransactionManager(false, true);
TransactionTemplate template = new TransactionTemplate(tm); TransactionTemplate template = new TransactionTemplate(tm);
@ -249,6 +250,7 @@ class TransactionSupportTests {
} }
@Test @Test
@SuppressWarnings("deprecation")
void transactionTemplateWithCallbackPreference() { void transactionTemplateWithCallbackPreference() {
MockCallbackPreferringTransactionManager ptm = new MockCallbackPreferringTransactionManager(); MockCallbackPreferringTransactionManager ptm = new MockCallbackPreferringTransactionManager();
TransactionTemplate template = new TransactionTemplate(ptm); TransactionTemplate template = new TransactionTemplate(ptm);
@ -263,6 +265,7 @@ class TransactionSupportTests {
} }
@Test @Test
@SuppressWarnings("deprecation")
void transactionTemplateWithException() { void transactionTemplateWithException() {
TestTransactionManager tm = new TestTransactionManager(false, true); TestTransactionManager tm = new TestTransactionManager(false, true);
TransactionTemplate template = new TransactionTemplate(tm); TransactionTemplate template = new TransactionTemplate(tm);
@ -281,10 +284,10 @@ class TransactionSupportTests {
assertThat(tm.rollbackOnly).as("no rollbackOnly").isFalse(); assertThat(tm.rollbackOnly).as("no rollbackOnly").isFalse();
} }
@SuppressWarnings("serial")
@Test @Test
void transactionTemplateWithRollbackException() { void transactionTemplateWithRollbackException() {
final TransactionSystemException tex = new TransactionSystemException("system exception"); final TransactionSystemException tex = new TransactionSystemException("system exception");
@SuppressWarnings("serial")
TestTransactionManager tm = new TestTransactionManager(false, true) { TestTransactionManager tm = new TestTransactionManager(false, true) {
@Override @Override
protected void doRollback(DefaultTransactionStatus status) { protected void doRollback(DefaultTransactionStatus status) {

Loading…
Cancel
Save