package org.jboss.as.txn; import static org.junit.Assert.assertTrue; import javax.transaction.HeuristicMixedException; import javax.transaction.HeuristicRollbackException; import javax.transaction.NotSupportedException; import javax.transaction.RollbackException; import javax.transaction.Synchronization; import javax.transaction.SystemException; import javax.transaction.TransactionManager; import javax.transaction.TransactionSynchronizationRegistry; import org.jboss.as.txn.service.internal.tsr.TransactionSynchronizationRegistryWrapper; import org.junit.Test; import com.arjuna.ats.jta.common.jtaPropertyManager; public class TestWildFlyTSR { boolean innerSyncCalled = false; @Test public void test() throws NotSupportedException, SystemException, SecurityException, IllegalStateException, RollbackException, HeuristicMixedException, HeuristicRollbackException { jtaPropertyManager.getJTAEnvironmentBean().setTransactionManagerClassName("com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple"); final TransactionSynchronizationRegistry tsr = new TransactionSynchronizationRegistryWrapper(new com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple()); TransactionManager transactionManager = com.arjuna.ats.jta.TransactionManager.transactionManager(); transactionManager.begin(); tsr.registerInterposedSynchronization(new Synchronization() { @Override public void beforeCompletion() { tsr.registerInterposedSynchronization(new Synchronization() { @Override public void beforeCompletion() { innerSyncCalled = true; } @Override public void afterCompletion(int status) { } }); } @Override public void afterCompletion(int status) { } }); transactionManager.commit(); assertTrue(innerSyncCalled); } }