package org.infinispan.configuration;
import static org.infinispan.test.TestingUtil.withCacheManager;
import static org.testng.AssertJUnit.assertNotNull;
import static org.testng.AssertJUnit.assertTrue;
import javax.transaction.TransactionManager;
import org.infinispan.configuration.cache.Configuration;
import org.infinispan.configuration.cache.ConfigurationBuilder;
import org.infinispan.test.AbstractInfinispanTest;
import org.infinispan.test.CacheManagerCallable;
import org.infinispan.test.fwk.TestCacheManagerFactory;
import org.infinispan.transaction.lookup.TransactionManagerLookup;
import org.infinispan.transaction.tm.EmbeddedBaseTransactionManager;
import org.testng.annotations.Test;
/**
* @author Mircea.Markus@jboss.com
*/
@Test(groups = "functional", testName = "config.TxManagerLookupConfigTest")
public class TxManagerLookupConfigTest extends AbstractInfinispanTest {
static TmA tma = new TmA();
static TmB tmb = new TmB();
public void simpleTest() {
withCacheManager(new CacheManagerCallable(TestCacheManagerFactory.createCacheManager()){
@Override
public void call() {
ConfigurationBuilder customConfiguration = TestCacheManagerFactory.getDefaultCacheConfiguration(true);
customConfiguration.transaction().transactionManagerLookup(new TxManagerLookupA());
Configuration definedConfiguration = cm.defineConfiguration("aCache", customConfiguration.build());
// verify the setting was not lost:
assertTrue(definedConfiguration.transaction().transactionManagerLookup() instanceof TxManagerLookupA);
// verify it's actually being used:
TransactionManager activeTransactionManager = cm.getCache("aCache").getAdvancedCache().getTransactionManager();
assertNotNull(activeTransactionManager);
assertTrue(activeTransactionManager instanceof TmA);
}
});
}
private static class TmA extends EmbeddedBaseTransactionManager {}
private static class TmB extends EmbeddedBaseTransactionManager {}
public static class TxManagerLookupA implements TransactionManagerLookup {
@Override
public synchronized TransactionManager getTransactionManager() throws Exception {
return tma;
}
}
public static class TxManagerLookupB implements TransactionManagerLookup {
@Override
public synchronized TransactionManager getTransactionManager() throws Exception {
return tmb;
}
}
}