package com.hp.mwtests.ts.jta.cdi.transactional; import javax.ejb.EJB; import javax.inject.Inject; import javax.transaction.Transaction; import javax.transaction.Transactional; import javax.transaction.UserTransaction; /** * @author paul.robinson@redhat.com 02/05/2013 */ @Transactional(Transactional.TxType.NEVER) public class TestTransactionalBean { @EJB TestSessionBean testSessionBean; @Inject UserTransaction userTransaction; public void invokeWithCLassLevelDefault() throws Exception { Utills.assertTransactionActive(false); } @Transactional public void invokeWithDefault() throws Exception { AssertionParticipant.enlist(); Utills.assertTransactionActive(true); } @Transactional public void invokeWithDefault(Transaction expectedTransaction) throws Exception { AssertionParticipant.enlist(); Utills.assertTransactionActive(true); Utills.assertSameTransaction(expectedTransaction); } @Transactional public void invokeWithDefault(Class<? extends Throwable> throwable) throws Throwable { AssertionParticipant.enlist(); throw throwable.newInstance(); } @Transactional(rollbackOn = TestException.class) public void invokeWithDefaultAndRollbackOn(Class<? extends Throwable> throwable) throws Throwable { AssertionParticipant.enlist(); throw throwable.newInstance(); } @Transactional(dontRollbackOn = TestRuntimeException.class) public void invokeWithDefaultAndDontRollbackOn(Class<? extends Throwable> throwable) throws Throwable { AssertionParticipant.enlist(); throw throwable.newInstance(); } @Transactional(dontRollbackOn = TestException.class, rollbackOn = TestException.class) public void invokeWithDefaultAndDoAndDontRollbackOn(Class<? extends Throwable> throwable) throws Throwable { AssertionParticipant.enlist(); throw throwable.newInstance(); } @Transactional(Transactional.TxType.REQUIRES_NEW) public void invokeWithRequiresNew(Transaction oldTransaction) throws Exception { AssertionParticipant.enlist(); Utills.assertTransactionActive(true); Utills.assertDifferentTransaction(oldTransaction); } @Transactional(value=Transactional.TxType.MANDATORY) public void invokeWithMandatory(Transaction expectedTransaction) throws Exception { AssertionParticipant.enlist(); Utills.assertTransactionActive(true); Utills.assertSameTransaction(expectedTransaction); } @Transactional(Transactional.TxType.SUPPORTS) public void invokeWithSupports(Transaction expectedTransaction) throws Exception { if (expectedTransaction != null) { AssertionParticipant.enlist(); Utills.assertTransactionActive(true); } Utills.assertSameTransaction(expectedTransaction); } @Transactional(Transactional.TxType.NOT_SUPPORTED) public void invokeWithNotSupported() throws Exception { Utills.assertTransactionActive(false); } @Transactional(Transactional.TxType.NEVER) public void invokeWithNever() throws Exception { Utills.assertTransactionActive(false); } @Transactional(Transactional.TxType.REQUIRES_NEW) public void invokeWithRequiresNewUseUserTransaction() throws Exception { userTransaction.getStatus(); } @Transactional(Transactional.TxType.REQUIRED) public void invokeWithRequiredUseUserTransaction() throws Exception { userTransaction.getStatus(); } @Transactional(Transactional.TxType.NEVER) public void invokeWithNeverUseUserTransaction() throws Exception { userTransaction.getStatus(); } @Transactional(Transactional.TxType.MANDATORY) public void invokeWithMandatoryUseUserTransaction() throws Exception { userTransaction.getStatus(); } @Transactional(Transactional.TxType.SUPPORTS) public void invokeWithSupportsUseUserTransaction() throws Exception { userTransaction.getStatus(); } @Transactional(Transactional.TxType.NOT_SUPPORTED) public void invokeWithNotSupportedUseUserTransaction() throws Exception { userTransaction.getStatus(); } @Transactional(Transactional.TxType.REQUIRED) public void invokeEJB() throws Exception { testSessionBean.invokeWithRequired(); } }