@ -25,9 +25,7 @@ import org.mockito.InOrder;
@@ -25,9 +25,7 @@ import org.mockito.InOrder;
import org.springframework.dao.ConcurrencyFailureException ;
import org.springframework.jdbc.datasource.DataSourceTransactionManagerTests ;
import org.springframework.transaction.TransactionStatus ;
import org.springframework.transaction.TransactionSystemException ;
import org.springframework.transaction.support.TransactionCallbackWithoutResult ;
import org.springframework.transaction.support.TransactionSynchronizationManager ;
import org.springframework.transaction.support.TransactionTemplate ;
@ -53,36 +51,30 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@@ -53,36 +51,30 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@Override
@Test
protected void testT ransactionWithExceptionOnCommit ( ) throws Exception {
protected void transactionWithExceptionOnCommit ( ) throws Exception {
willThrow ( new SQLException ( "Cannot commit" ) ) . given ( con ) . commit ( ) ;
TransactionTemplate tt = new TransactionTemplate ( tm ) ;
// plain TransactionSystemException
assertThatExceptionOfType ( TransactionSystemException . class ) . isThrownBy ( ( ) - >
tt . execute ( new TransactionCallbackWithoutResult ( ) {
@Override
protected void doInTransactionWithoutResult ( TransactionStatus status ) {
tt . executeWithoutResult ( status - > {
// something transactional
}
} ) ) ;
} ) ) ;
assertThat ( TransactionSynchronizationManager . hasResource ( ds ) ) . isFalse ( ) ;
verify ( con ) . close ( ) ;
}
@Test
void testT ransactionWithDataAccessExceptionOnCommit ( ) throws Exception {
void transactionWithDataAccessExceptionOnCommit ( ) throws Exception {
willThrow ( new SQLException ( "Cannot commit" ) ) . given ( con ) . commit ( ) ;
( ( JdbcTransactionManager ) tm ) . setExceptionTranslator ( ( task , sql , ex ) - > new ConcurrencyFailureException ( task ) ) ;
TransactionTemplate tt = new TransactionTemplate ( tm ) ;
// specific ConcurrencyFailureException
assertThatExceptionOfType ( ConcurrencyFailureException . class ) . isThrownBy ( ( ) - >
tt . execute ( new TransactionCallbackWithoutResult ( ) {
@Override
protected void doInTransactionWithoutResult ( TransactionStatus status ) {
// something transactional
}
tt . executeWithoutResult ( status - > {
// something transactional
} ) ) ;
assertThat ( TransactionSynchronizationManager . hasResource ( ds ) ) . isFalse ( ) ;
@ -90,17 +82,14 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@@ -90,17 +82,14 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
}
@Test
void testT ransactionWithDataAccessExceptionOnCommitFromLazyExceptionTranslator ( ) throws Exception {
void transactionWithDataAccessExceptionOnCommitFromLazyExceptionTranslator ( ) throws Exception {
willThrow ( new SQLException ( "Cannot commit" , "40" ) ) . given ( con ) . commit ( ) ;
TransactionTemplate tt = new TransactionTemplate ( tm ) ;
// specific ConcurrencyFailureException
assertThatExceptionOfType ( ConcurrencyFailureException . class ) . isThrownBy ( ( ) - >
tt . execute ( new TransactionCallbackWithoutResult ( ) {
@Override
protected void doInTransactionWithoutResult ( TransactionStatus status ) {
// something transactional
}
tt . executeWithoutResult ( status - > {
// something transactional
} ) ) ;
assertThat ( TransactionSynchronizationManager . hasResource ( ds ) ) . isFalse ( ) ;
@ -109,7 +98,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@@ -109,7 +98,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@Override
@Test
protected void testT ransactionWithExceptionOnCommitAndRollbackOnCommitFailure ( ) throws Exception {
protected void transactionWithExceptionOnCommitAndRollbackOnCommitFailure ( ) throws Exception {
willThrow ( new SQLException ( "Cannot commit" ) ) . given ( con ) . commit ( ) ;
tm . setRollbackOnCommitFailure ( true ) ;
@ -117,12 +106,9 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@@ -117,12 +106,9 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
// plain TransactionSystemException
assertThatExceptionOfType ( TransactionSystemException . class ) . isThrownBy ( ( ) - >
tt . execute ( new TransactionCallbackWithoutResult ( ) {
@Override
protected void doInTransactionWithoutResult ( TransactionStatus status ) {
tt . executeWithoutResult ( status - > {
// something transactional
}
} ) ) ;
} ) ) ;
assertThat ( TransactionSynchronizationManager . hasResource ( ds ) ) . isFalse ( ) ;
verify ( con ) . rollback ( ) ;
@ -131,16 +117,14 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@@ -131,16 +117,14 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@Override
@Test
protected void testT ransactionWithExceptionOnRollback ( ) throws Exception {
protected void transactionWithExceptionOnRollback ( ) throws Exception {
given ( con . getAutoCommit ( ) ) . willReturn ( true ) ;
willThrow ( new SQLException ( "Cannot rollback" ) ) . given ( con ) . rollback ( ) ;
TransactionTemplate tt = new TransactionTemplate ( tm ) ;
// plain TransactionSystemException
assertThatExceptionOfType ( TransactionSystemException . class ) . isThrownBy ( ( ) - >
tt . execute ( new TransactionCallbackWithoutResult ( ) {
@Override
protected void doInTransactionWithoutResult ( TransactionStatus status ) throws RuntimeException {
tt . executeWithoutResult ( status - > {
assertThat ( status . getTransactionName ( ) ) . isEmpty ( ) ;
assertThat ( status . hasTransaction ( ) ) . isTrue ( ) ;
assertThat ( status . isNewTransaction ( ) ) . isTrue ( ) ;
@ -151,8 +135,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@@ -151,8 +135,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
status . setRollbackOnly ( ) ;
assertThat ( status . isRollbackOnly ( ) ) . isTrue ( ) ;
assertThat ( status . isCompleted ( ) ) . isFalse ( ) ;
}
} ) ) ;
} ) ) ;
assertThat ( TransactionSynchronizationManager . hasResource ( ds ) ) . isFalse ( ) ;
InOrder ordered = inOrder ( con ) ;
@ -163,7 +146,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@@ -163,7 +146,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
}
@Test
void testT ransactionWithDataAccessExceptionOnRollback ( ) throws Exception {
void transactionWithDataAccessExceptionOnRollback ( ) throws Exception {
given ( con . getAutoCommit ( ) ) . willReturn ( true ) ;
willThrow ( new SQLException ( "Cannot rollback" ) ) . given ( con ) . rollback ( ) ;
( ( JdbcTransactionManager ) tm ) . setExceptionTranslator ( ( task , sql , ex ) - > new ConcurrencyFailureException ( task ) ) ;
@ -171,12 +154,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@@ -171,12 +154,7 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
// specific ConcurrencyFailureException
assertThatExceptionOfType ( ConcurrencyFailureException . class ) . isThrownBy ( ( ) - >
tt . execute ( new TransactionCallbackWithoutResult ( ) {
@Override
protected void doInTransactionWithoutResult ( TransactionStatus status ) throws RuntimeException {
status . setRollbackOnly ( ) ;
}
} ) ) ;
tt . executeWithoutResult ( status - > status . setRollbackOnly ( ) ) ) ;
assertThat ( TransactionSynchronizationManager . hasResource ( ds ) ) . isFalse ( ) ;
InOrder ordered = inOrder ( con ) ;
@ -187,27 +165,24 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
@@ -187,27 +165,24 @@ class JdbcTransactionManagerTests extends DataSourceTransactionManagerTests {
}
@Test
void testT ransactionWithDataAccessExceptionOnRollbackFromLazyExceptionTranslator ( ) throws Exception {
void transactionWithDataAccessExceptionOnRollbackFromLazyExceptionTranslator ( ) throws Exception {
given ( con . getAutoCommit ( ) ) . willReturn ( true ) ;
willThrow ( new SQLException ( "Cannot rollback" , "40" ) ) . given ( con ) . rollback ( ) ;
TransactionTemplate tt = new TransactionTemplate ( tm ) ;
// specific ConcurrencyFailureException
assertThatExceptionOfType ( ConcurrencyFailureException . class ) . isThrownBy ( ( ) - >
tt . execute ( new TransactionCallbackWithoutResult ( ) {
@Override
protected void doInTransactionWithoutResult ( TransactionStatus status ) throws RuntimeException {
assertThat ( status . getTransactionName ( ) ) . isEmpty ( ) ;
assertThat ( status . hasTransaction ( ) ) . isTrue ( ) ;
assertThat ( status . isNewTransaction ( ) ) . isTrue ( ) ;
assertThat ( status . isNested ( ) ) . isFalse ( ) ;
assertThat ( status . hasSavepoint ( ) ) . isFalse ( ) ;
assertThat ( status . isReadOnly ( ) ) . isFalse ( ) ;
assertThat ( status . isRollbackOnly ( ) ) . isFalse ( ) ;
status . setRollbackOnly ( ) ;
assertThat ( status . isRollbackOnly ( ) ) . isTrue ( ) ;
assertThat ( status . isCompleted ( ) ) . isFalse ( ) ;
}
tt . executeWithoutResult ( status - > {
assertThat ( status . getTransactionName ( ) ) . isEmpty ( ) ;
assertThat ( status . hasTransaction ( ) ) . isTrue ( ) ;
assertThat ( status . isNewTransaction ( ) ) . isTrue ( ) ;
assertThat ( status . isNested ( ) ) . isFalse ( ) ;
assertThat ( status . hasSavepoint ( ) ) . isFalse ( ) ;
assertThat ( status . isReadOnly ( ) ) . isFalse ( ) ;
assertThat ( status . isRollbackOnly ( ) ) . isFalse ( ) ;
status . setRollbackOnly ( ) ;
assertThat ( status . isRollbackOnly ( ) ) . isTrue ( ) ;
assertThat ( status . isCompleted ( ) ) . isFalse ( ) ;
} ) ) ;
assertThat ( TransactionSynchronizationManager . hasResource ( ds ) ) . isFalse ( ) ;