}
@Test
public void autoInjectionUncatchedFlushExceptionTest()
{
TestEntityManager defaultEntityManager = entityManagerProducer.getDefaultEntityManager();
TestEntityManager firstEntityManager = entityManagerProducer.getFirstEntityManager();
TestEntityManager secondEntityManager = entityManagerProducer.getSecondEntityManager();
Assert.assertNotNull(defaultEntityManager);
TestEntityTransaction defaultTransaction = (TestEntityTransaction) (defaultEntityManager).getTransaction();
Assert.assertEquals(false, defaultEntityManager.isFlushed());
Assert.assertEquals(false, defaultTransaction.isActive());
Assert.assertEquals(false, defaultTransaction.isStarted());
Assert.assertEquals(false, defaultTransaction.isCommitted());
Assert.assertEquals(false, defaultTransaction.isRolledBack());
Assert.assertNotNull(firstEntityManager);
TestEntityTransaction firstTransaction = (TestEntityTransaction) (firstEntityManager).getTransaction();
Assert.assertEquals(false, firstEntityManager.isFlushed());
Assert.assertEquals(false, firstTransaction.isActive());
Assert.assertEquals(false, firstTransaction.isStarted());
Assert.assertEquals(false, firstTransaction.isCommitted());
Assert.assertEquals(false, firstTransaction.isRolledBack());
Assert.assertNotNull(secondEntityManager);
TestEntityTransaction secondTransaction = (TestEntityTransaction) (secondEntityManager).getTransaction();
Assert.assertEquals(false, secondEntityManager.isFlushed());
Assert.assertEquals(false, secondTransaction.isActive());
Assert.assertEquals(false, secondTransaction.isStarted());
Assert.assertEquals(false, secondTransaction.isCommitted());
Assert.assertEquals(false, secondTransaction.isRolledBack());
try
{
multiTransactionBean.executeInTransaction();
Assert.fail(TestException.class.getName() + " expected!");
}
catch (TestException e)
{
//expected -> do nothing
}
Assert.assertEquals(false, defaultEntityManager.isFlushed());
Assert.assertEquals(false, defaultTransaction.isActive());
Assert.assertEquals(true, defaultTransaction.isStarted());
Assert.assertEquals(false, defaultTransaction.isCommitted());
Assert.assertEquals(true, defaultTransaction.isRolledBack());
Assert.assertEquals(false, firstEntityManager.isFlushed());
Assert.assertEquals(false, firstTransaction.isActive());
Assert.assertEquals(true, firstTransaction.isStarted());
Assert.assertEquals(false, firstTransaction.isCommitted());
Assert.assertEquals(true, firstTransaction.isRolledBack());
Assert.assertEquals(false, secondEntityManager.isFlushed());
Assert.assertEquals(false, secondTransaction.isActive());
Assert.assertEquals(true, secondTransaction.isStarted());
Assert.assertEquals(false, secondTransaction.isCommitted());
Assert.assertEquals(true, secondTransaction.isRolledBack());