private void doTestJtaTransactionManagerWithDefaultJndiLookups(String tmName, boolean tmFound, boolean defaultUt) throws Exception { UserTransaction ut = mock(UserTransaction.class); TransactionManager tm = mock(TransactionManager.class); if (defaultUt) { given(ut.getStatus()).willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE); } else { given(tm.getStatus()).willReturn(Status.STATUS_NO_TRANSACTION, Status.STATUS_ACTIVE, Status.STATUS_ACTIVE); } JtaTransactionManager ptm = new JtaTransactionManager(); ExpectedLookupTemplate jndiTemplate = new ExpectedLookupTemplate(); if (defaultUt) { jndiTemplate.addObject("java:comp/UserTransaction", ut); } jndiTemplate.addObject(tmName, tm); ptm.setJndiTemplate(jndiTemplate); ptm.afterPropertiesSet(); if (tmFound) { assertEquals(tm, ptm.getTransactionManager()); } else { assertNull(ptm.getTransactionManager()); } if (defaultUt) { assertEquals(ut, ptm.getUserTransaction()); } else { assertTrue(ptm.getUserTransaction() instanceof UserTransactionAdapter); UserTransactionAdapter uta = (UserTransactionAdapter) ptm.getUserTransaction(); assertEquals(tm, uta.getTransactionManager()); } TransactionTemplate tt = new TransactionTemplate(ptm); assertTrue(!TransactionSynchronizationManager.isSynchronizationActive()); assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly()); tt.execute(new TransactionCallbackWithoutResult() { @Override protected void doInTransactionWithoutResult(TransactionStatus status) { // something transactional assertTrue(TransactionSynchronizationManager.isSynchronizationActive()); assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly()); } }); assertTrue(!TransactionSynchronizationManager.isSynchronizationActive()); assertFalse(TransactionSynchronizationManager.isCurrentTransactionReadOnly()); if (defaultUt) { verify(ut).begin(); verify(ut).commit(); } else { verify(tm).begin(); verify(tm).commit(); } }
/** * Create a new ConfigurableJtaPlatform instance with the given * JTA TransactionManager and optionally a given UserTransaction. * @param tm the JTA TransactionManager reference (required) * @param ut the JTA UserTransaction reference (optional) * @param tsr the JTA 1.1 TransactionSynchronizationRegistry (optional) */ public ConfigurableJtaPlatform(TransactionManager tm, UserTransaction ut, TransactionSynchronizationRegistry tsr) { Assert.notNull(tm, "TransactionManager reference must not be null"); this.transactionManager = tm; this.userTransaction = (ut != null ? ut : new UserTransactionAdapter(tm)); this.transactionSynchronizationRegistry = tsr; }
/** * Create a new ConfigurableJtaPlatform instance with the given * JTA TransactionManager and optionally a given UserTransaction. * * @param tm the JTA TransactionManager reference (required) * @param ut the JTA UserTransaction reference (optional) * @param tsr the JTA 1.1 TransactionSynchronizationRegistry (optional) */ public HibernateConfigurableJtaPlatform(TransactionManager tm, UserTransaction ut, TransactionSynchronizationRegistry tsr) { Assert.notNull(tm, "TransactionManager reference must not be null"); this.transactionManager = tm; this.userTransaction = (ut != null ? ut : new UserTransactionAdapter(tm)); this.transactionSynchronizationRegistry = tsr; }
/** * Create a new ConfigurableJtaPlatform instance with the given * JTA TransactionManager and optionally a given UserTransaction. * @param tm the JTA TransactionManager reference (required) * @param ut the JTA UserTransaction reference (optional) */ public ConfigurableJtaPlatform(TransactionManager tm, UserTransaction ut) { Assert.notNull(tm, "TransactionManager reference must not be null"); this.transactionManager = tm; this.userTransaction = (ut != null ? ut : new UserTransactionAdapter(tm)); }