added "flush()" method to TransactionStatus and TransactionSynchronization interfaces; test context manager automatically flushes transactions before rolling back; general polishing of transaction management code
@ -345,7 +345,7 @@ public class DataSourceTransactionManager extends AbstractPlatformTransactionMan
@@ -345,7 +345,7 @@ public class DataSourceTransactionManager extends AbstractPlatformTransactionMan
}
publicbooleanisNewConnectionHolder(){
returnnewConnectionHolder;
returnthis.newConnectionHolder;
}
publicbooleanhasTransaction(){
@ -357,7 +357,7 @@ public class DataSourceTransactionManager extends AbstractPlatformTransactionMan
@@ -357,7 +357,7 @@ public class DataSourceTransactionManager extends AbstractPlatformTransactionMan
@ -87,6 +87,10 @@ public abstract class JdbcTransactionObjectSupport implements SavepointManager,
@@ -87,6 +87,10 @@ public abstract class JdbcTransactionObjectSupport implements SavepointManager,
@ -1958,6 +1958,9 @@ public class DataSourceTransactionManagerTests extends TestCase {
@@ -1958,6 +1958,9 @@ public class DataSourceTransactionManagerTests extends TestCase {
@ -316,6 +316,10 @@ public class JmsTransactionManager extends AbstractPlatformTransactionManager
@@ -316,6 +316,10 @@ public class JmsTransactionManager extends AbstractPlatformTransactionManager
@ -828,7 +828,7 @@ public class HibernateTransactionManager extends AbstractPlatformTransactionMana
@@ -828,7 +828,7 @@ public class HibernateTransactionManager extends AbstractPlatformTransactionMana
@ -875,16 +875,25 @@ public class HibernateTransactionManager extends AbstractPlatformTransactionMana
@@ -875,16 +875,25 @@ public class HibernateTransactionManager extends AbstractPlatformTransactionMana
@ -144,10 +144,10 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@@ -144,10 +144,10 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@ -247,14 +247,14 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@@ -247,14 +247,14 @@ public class OpenSessionInViewFilter extends OncePerRequestFilter {
@ -503,7 +503,7 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager
@@ -503,7 +503,7 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager
@ -518,7 +518,7 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager
@@ -518,7 +518,7 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager
@ -533,11 +533,11 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager
@@ -533,11 +533,11 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager
@ -550,7 +550,7 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager
@@ -550,7 +550,7 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager
}
publicObjectgetTransactionData(){
returntransactionData;
returnthis.transactionData;
}
publicvoidsetRollbackOnly(){
@ -567,6 +567,15 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager
@@ -567,6 +567,15 @@ public class JdoTransactionManager extends AbstractPlatformTransactionManager
@ -308,15 +308,24 @@ public abstract class PersistenceManagerFactoryUtils {
@@ -308,15 +308,24 @@ public abstract class PersistenceManagerFactoryUtils {
@ -553,7 +552,7 @@ public class JpaTransactionManager extends AbstractPlatformTransactionManager
@@ -553,7 +552,7 @@ public class JpaTransactionManager extends AbstractPlatformTransactionManager
@ -606,6 +605,15 @@ public class JpaTransactionManager extends AbstractPlatformTransactionManager
@@ -606,6 +605,15 @@ public class JpaTransactionManager extends AbstractPlatformTransactionManager
@ -108,7 +107,7 @@ public class HibernateJtaTransactionTests extends TestCase {
@@ -108,7 +107,7 @@ public class HibernateJtaTransactionTests extends TestCase {
session.createQuery("some query string");
sessionControl.setReturnValue(query,1);
if(readOnly){
session.setFlushMode(FlushMode.NEVER);
session.setFlushMode(FlushMode.MANUAL);
sessionControl.setVoidCallable(1);
}
query.list();
@ -370,6 +369,14 @@ public class HibernateJtaTransactionTests extends TestCase {
@@ -370,6 +369,14 @@ public class HibernateJtaTransactionTests extends TestCase {
@ -390,6 +397,10 @@ public class HibernateJtaTransactionTests extends TestCase {
@@ -390,6 +397,10 @@ public class HibernateJtaTransactionTests extends TestCase {
sfControl.setReturnValue(session,1);
session.getSessionFactory();
sessionControl.setReturnValue(sf,1);
if(flush){
session.flush();
sessionControl.setVoidCallable(1);
}
sfControl.replay();
sessionControl.replay();
@ -409,6 +420,9 @@ public class HibernateJtaTransactionTests extends TestCase {
@@ -409,6 +420,9 @@ public class HibernateJtaTransactionTests extends TestCase {
returnl;
}
});
if(flush){
status.flush();
}
status.setRollbackOnly();
sessionControl.verify();
sessionControl.reset();
@ -495,7 +509,7 @@ public class HibernateJtaTransactionTests extends TestCase {
@@ -495,7 +509,7 @@ public class HibernateJtaTransactionTests extends TestCase {
@ -546,7 +560,7 @@ public class HibernateJtaTransactionTests extends TestCase {
@@ -546,7 +560,7 @@ public class HibernateJtaTransactionTests extends TestCase {
session.flush();
sessionControl.setVoidCallable(1);
if(flushNever){
session.setFlushMode(FlushMode.NEVER);
session.setFlushMode(FlushMode.MANUAL);
sessionControl.setVoidCallable(1);
}
}
@ -1064,15 +1078,15 @@ public class HibernateJtaTransactionTests extends TestCase {
@@ -1064,15 +1078,15 @@ public class HibernateJtaTransactionTests extends TestCase {
@ -1306,7 +1320,7 @@ public class HibernateJtaTransactionTests extends TestCase {
@@ -1306,7 +1320,7 @@ public class HibernateJtaTransactionTests extends TestCase {
sfControl.setReturnValue(tm,7);
session.isOpen();
sessionControl.setReturnValue(true,8);
session.setFlushMode(FlushMode.NEVER);
session.setFlushMode(FlushMode.MANUAL);
sessionControl.setVoidCallable(1);
session.close();
sessionControl.setReturnValue(null,2);
@ -1667,7 +1681,7 @@ public class HibernateJtaTransactionTests extends TestCase {
@@ -1667,7 +1681,7 @@ public class HibernateJtaTransactionTests extends TestCase {
@ -1702,7 +1716,7 @@ public class HibernateJtaTransactionTests extends TestCase {
@@ -1702,7 +1716,7 @@ public class HibernateJtaTransactionTests extends TestCase {
@ -1779,6 +1779,51 @@ public class HibernateTransactionManagerTests extends TestCase {
@@ -1779,6 +1779,51 @@ public class HibernateTransactionManagerTests extends TestCase {
assertTrue("JTA synchronizations not active",!TransactionSynchronizationManager.isSynchronizationActive());
@ -1222,4 +1222,41 @@ public class JdoTransactionManagerTests extends TestCase {
@@ -1222,4 +1222,41 @@ public class JdoTransactionManagerTests extends TestCase {
@ -95,9 +94,8 @@ public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
@@ -95,9 +94,8 @@ public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
// Either behaviour is valid: throw exception on first access
// or on getReference itself.
notThere.getFirstName();
}
@ -175,8 +173,7 @@ public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
@@ -175,8 +173,7 @@ public abstract class AbstractContainerEntityManagerFactoryIntegrationTests
@ -93,13 +93,11 @@ public class ApplicationManagedEntityManagerIntegrationTests extends AbstractEnt
@@ -93,13 +93,11 @@ public class ApplicationManagedEntityManagerIntegrationTests extends AbstractEnt
em.persist(p);
em.flush();
assertEquals("1 row must have been inserted",
1,countRowsInTable("person"));
assertEquals("1 row must have been inserted",1,countRowsInTable("person"));
}
publicvoidtestStateClean(){
assertEquals("Should be no people from previous transactions",
0,countRowsInTable("person"));
assertEquals("Should be no people from previous transactions",0,countRowsInTable("person"));
@ -114,8 +114,7 @@ public class ContainerManagedEntityManagerIntegrationTests extends AbstractEntit
@@ -114,8 +114,7 @@ public class ContainerManagedEntityManagerIntegrationTests extends AbstractEntit
em.persist(p);
em.flush();
assertEquals("1 row must have been inserted",
1,countRowsInTable("person"));
assertEquals("1 row must have been inserted",1,countRowsInTable("person"));
@ -1071,4 +1071,33 @@ public class JpaTransactionManagerTests extends TestCase {
@@ -1071,4 +1071,33 @@ public class JpaTransactionManagerTests extends TestCase {
@ -335,15 +335,15 @@ public class TransactionalTestExecutionListener extends AbstractTestExecutionLis
@@ -335,15 +335,15 @@ public class TransactionalTestExecutionListener extends AbstractTestExecutionLis
logger.debug("No method-level @Rollback override: using default rollback ["+rollback
+"] for test context ["+testContext+"]");
logger.debug("No method-level @Rollback override: using default rollback ["+
rollback+"] for test context ["+testContext+"]");
}
}
returnrollback;
@ -498,6 +498,7 @@ public class TransactionalTestExecutionListener extends AbstractTestExecutionLis
@@ -498,6 +498,7 @@ public class TransactionalTestExecutionListener extends AbstractTestExecutionLis
@ -72,4 +73,13 @@ public class JtaTransactionObject implements SmartTransactionObject {
@@ -72,4 +73,13 @@ public class JtaTransactionObject implements SmartTransactionObject {
@ -145,7 +145,7 @@ public class DefaultTransactionStatus extends AbstractTransactionStatus {
@@ -145,7 +145,7 @@ public class DefaultTransactionStatus extends AbstractTransactionStatus {
@ -156,6 +156,16 @@ public class DefaultTransactionStatus extends AbstractTransactionStatus {
@@ -156,6 +156,16 @@ public class DefaultTransactionStatus extends AbstractTransactionStatus {
@ -38,7 +39,7 @@ public class ResourceHolderSynchronization implements TransactionSynchronization
@@ -38,7 +39,7 @@ public class ResourceHolderSynchronization implements TransactionSynchronization
@ -56,6 +57,10 @@ public class ResourceHolderSynchronization implements TransactionSynchronization
@@ -56,6 +57,10 @@ public class ResourceHolderSynchronization implements TransactionSynchronization
}
}
publicvoidflush(){
flushResource(this.resourceHolder);
}
publicvoidbeforeCommit(booleanreadOnly){
}
@ -123,13 +128,20 @@ public class ResourceHolderSynchronization implements TransactionSynchronization
@@ -123,13 +128,20 @@ public class ResourceHolderSynchronization implements TransactionSynchronization
@ -137,7 +149,7 @@ public class ResourceHolderSynchronization implements TransactionSynchronization
@@ -137,7 +149,7 @@ public class ResourceHolderSynchronization implements TransactionSynchronization
@ -147,7 +159,7 @@ public class ResourceHolderSynchronization implements TransactionSynchronization
@@ -147,7 +159,7 @@ public class ResourceHolderSynchronization implements TransactionSynchronization
@ -41,7 +41,7 @@ public class SimpleTransactionStatus extends AbstractTransactionStatus {
@@ -41,7 +41,7 @@ public class SimpleTransactionStatus extends AbstractTransactionStatus {
@ -49,7 +49,7 @@ public class SimpleTransactionStatus extends AbstractTransactionStatus {
@@ -49,7 +49,7 @@ public class SimpleTransactionStatus extends AbstractTransactionStatus {
@ -58,7 +58,7 @@ public class SimpleTransactionStatus extends AbstractTransactionStatus {
@@ -58,7 +58,7 @@ public class SimpleTransactionStatus extends AbstractTransactionStatus {
@ -35,10 +35,10 @@ public abstract class TransactionCallbackWithoutResult implements TransactionCal
@@ -35,10 +35,10 @@ public abstract class TransactionCallbackWithoutResult implements TransactionCal
@ -42,6 +42,9 @@ public abstract class TransactionSynchronizationAdapter implements TransactionSy
@@ -42,6 +42,9 @@ public abstract class TransactionSynchronizationAdapter implements TransactionSy