Skip to content

Instantly share code, notes, and snippets.

@sebersole
Created March 31, 2011 15:24
Show Gist options
  • Save sebersole/896564 to your computer and use it in GitHub Desktop.
Save sebersole/896564 to your computer and use it in GitHub Desktop.
transaction joining tests
public class TransactionJoiningTest extends BaseEntityManagerFunctionalTestCase {
@Override
protected void addConfigOptions(Map options) {
super.addConfigOptions( options );
TestingJtaBootstrap.prepare( options );
options.put( AvailableSettings.TRANSACTION_TYPE, "JTA" );
}
@Test
public void testExplicitJoining() throws Exception {
assertFalse( JtaStatusHelper.isActive( TestingJtaBootstrap.INSTANCE.getTransactionManager() ) );
EntityManager entityManager = entityManagerFactory().createEntityManager();
SessionImplementor session = entityManager.unwrap( SessionImplementor.class );
assertFalse( session.getTransactionCoordinator().isSynchronizationRegistered() );
Transaction hibernateTransaction = ( (Session) session ).getTransaction();
assertTrue( CMTTransaction.class.isInstance( hibernateTransaction ) );
assertFalse( hibernateTransaction.isParticipating() );
session.getFlushMode();
assertFalse( session.getTransactionCoordinator().isSynchronizationRegistered() );
assertFalse( hibernateTransaction.isParticipating() );
TestingJtaBootstrap.INSTANCE.getTransactionManager().begin();
assertTrue( JtaStatusHelper.isActive( TestingJtaBootstrap.INSTANCE.getTransactionManager() ) );
assertTrue( hibernateTransaction.isActive() );
assertFalse( hibernateTransaction.isParticipating() );
assertFalse( session.getTransactionCoordinator().isSynchronizationRegistered() );
session.getFlushMode();
assertTrue( JtaStatusHelper.isActive( TestingJtaBootstrap.INSTANCE.getTransactionManager() ) );
assertTrue( hibernateTransaction.isActive() );
assertFalse( session.getTransactionCoordinator().isSynchronizationRegistered() );
assertFalse( hibernateTransaction.isParticipating() );
entityManager.joinTransaction();
assertTrue( JtaStatusHelper.isActive( TestingJtaBootstrap.INSTANCE.getTransactionManager() ) );
assertTrue( hibernateTransaction.isActive() );
assertTrue( session.getTransactionCoordinator().isSynchronizationRegistered() );
assertTrue( hibernateTransaction.isParticipating() );
entityManager.close();
TestingJtaBootstrap.INSTANCE.getTransactionManager().commit();
}
@Test
public void testImplicitJoining() throws Exception {
assertFalse( JtaStatusHelper.isActive( TestingJtaBootstrap.INSTANCE.getTransactionManager() ) );
TestingJtaBootstrap.INSTANCE.getTransactionManager().begin();
EntityManager entityManager = entityManagerFactory().createEntityManager();
SessionImplementor session = entityManager.unwrap( SessionImplementor.class );
Transaction hibernateTransaction = ( (Session) session ).getTransaction();
assertTrue( CMTTransaction.class.isInstance( hibernateTransaction ) );
assertTrue( session.getTransactionCoordinator().isSynchronizationRegistered() );
assertTrue( hibernateTransaction.isParticipating() );
entityManager.close();
TestingJtaBootstrap.INSTANCE.getTransactionManager().commit();
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment