📄 jtatransactionmanagertests.java
字号:
});
fail("Should have thrown IllegalStateException");
}
catch (IllegalStateException ex) {
// expected
}
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
synchControl.verify();
}
public void testJtaTransactionManagerWithExistingTransactionAndRollbackOnlyAndNoGlobalRollback() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_ACTIVE, 1);
ut.setRollbackOnly();
utControl.setVoidCallable(1);
utControl.replay();
MockControl synchControl = MockControl.createControl(TransactionSynchronization.class);
final TransactionSynchronization synch = (TransactionSynchronization) synchControl.getMock();
synch.beforeCompletion();
synchControl.setVoidCallable(1);
synch.afterCompletion(TransactionSynchronization.STATUS_UNKNOWN);
synchControl.setVoidCallable(1);
synchControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut);
ptm.setGlobalRollbackOnParticipationFailure(false);
TransactionTemplate tt = new TransactionTemplate(ptm);
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly();
}
});
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
synchControl.verify();
}
public void testJtaTransactionManagerWithExistingTransactionAndExceptionAndNoGlobalRollback() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_ACTIVE, 1);
utControl.replay();
MockControl synchControl = MockControl.createControl(TransactionSynchronization.class);
final TransactionSynchronization synch = (TransactionSynchronization) synchControl.getMock();
synch.beforeCompletion();
synchControl.setVoidCallable(1);
synch.afterCompletion(TransactionSynchronization.STATUS_UNKNOWN);
synchControl.setVoidCallable(1);
synchControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut);
ptm.setGlobalRollbackOnParticipationFailure(false);
TransactionTemplate tt = new TransactionTemplate(ptm);
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
try {
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
TransactionSynchronizationManager.registerSynchronization(synch);
throw new IllegalStateException("I want a rollback");
}
});
fail("Should have thrown IllegalStateException");
}
catch (IllegalStateException ex) {
// expected
}
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
synchControl.verify();
}
public void testJtaTransactionManagerWithExistingTransactionAndJtaSynchronization() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
MockJtaTransaction tx = new MockJtaTransaction();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_ACTIVE, 1);
ut.setRollbackOnly();
utControl.setVoidCallable(1);
tm.getTransaction();
tmControl.setReturnValue(tx, 1);
utControl.replay();
tmControl.replay();
MockControl synchControl = MockControl.createControl(TransactionSynchronization.class);
final TransactionSynchronization synch = (TransactionSynchronization) synchControl.getMock();
synch.beforeCompletion();
synchControl.setVoidCallable(1);
synch.afterCompletion(TransactionSynchronization.STATUS_ROLLED_BACK);
synchControl.setVoidCallable(1);
synchControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut, tm);
TransactionTemplate tt = new TransactionTemplate(ptm);
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly();
}
});
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
assertNotNull(tx.getSynchronization());
tx.getSynchronization().beforeCompletion();
tx.getSynchronization().afterCompletion(Status.STATUS_ROLLEDBACK);
utControl.verify();
tmControl.verify();
synchControl.verify();
}
public void testJtaTransactionManagerWithExistingTransactionAndSynchronizationOnActual() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_ACTIVE, 1);
ut.setRollbackOnly();
utControl.setVoidCallable(1);
utControl.replay();
MockControl synchControl = MockControl.createControl(TransactionSynchronization.class);
final TransactionSynchronization synch = (TransactionSynchronization) synchControl.getMock();
synch.beforeCompletion();
synchControl.setVoidCallable(1);
synch.afterCompletion(TransactionSynchronization.STATUS_UNKNOWN);
synchControl.setVoidCallable(1);
synchControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm);
ptm.setTransactionSynchronization(JtaTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly();
}
});
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
synchControl.verify();
}
public void testJtaTransactionManagerWithExistingTransactionAndSynchronizationNever() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_ACTIVE, 1);
ut.setRollbackOnly();
utControl.setVoidCallable(1);
utControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm);
ptm.setTransactionSynchronization(JtaTransactionManager.SYNCHRONIZATION_NEVER);
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
status.setRollbackOnly();
}
});
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
}
public void testJtaTransactionManagerWithExistingAndPropagationSupports() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_ACTIVE, 1);
ut.setRollbackOnly();
utControl.setVoidCallable(1);
utControl.replay();
MockControl synchControl = MockControl.createControl(TransactionSynchronization.class);
final TransactionSynchronization synch = (TransactionSynchronization) synchControl.getMock();
synch.beforeCompletion();
synchControl.setVoidCallable(1);
synch.afterCompletion(TransactionSynchronization.STATUS_UNKNOWN);
synchControl.setVoidCallable(1);
synchControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly();
}
});
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
synchControl.verify();
}
public void testJtaTransactionManagerWithPropagationSupports() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_NO_TRANSACTION, 1);
utControl.replay();
MockControl synchControl = MockControl.createControl(TransactionSynchronization.class);
final TransactionSynchronization synch = (TransactionSynchronization) synchControl.getMock();
synch.beforeCompletion();
synchControl.setVoidCallable(1);
synch.afterCompletion(TransactionSynchronization.STATUS_ROLLED_BACK);
synchControl.setVoidCallable(1);
synchControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
TransactionSynchronizationManager.registerSynchronization(synch);
status.setRollbackOnly();
}
});
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
synchControl.verify();
}
public void testJtaTransactionManagerWithPropagationSupportsAndSynchronizationOnActual() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_NO_TRANSACTION, 1);
utControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm);
ptm.setTransactionSynchronization(JtaTransactionManager.SYNCHRONIZATION_ON_ACTUAL_TRANSACTION);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
status.setRollbackOnly();
}
});
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
}
public void testJtaTransactionManagerWithPropagationSupportsAndSynchronizationNever() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_NO_TRANSACTION, 1);
utControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm);
ptm.setTransactionSynchronization(JtaTransactionManager.SYNCHRONIZATION_NEVER);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
status.setRollbackOnly();
}
});
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
}
public void testJtaTransactionManagerWithPropagationNotSupported() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
MockControl txControl = MockControl.createControl(Transaction.class);
Transaction tx = (Transaction) txControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_ACTIVE, 1);
tm.suspend();
tmControl.setReturnValue(tx, 1);
tm.resume(tx);
tmControl.setVoidCallable(1);
utControl.replay();
tmControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut, tm);
TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_NOT_SUPPORTED);
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue(TransactionSynchronizationManager.isSynchronizationActive());
status.setRollbackOnly();
}
});
assertTrue(!TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
tmControl.verify();
}
public void testJtaTransactionManagerWithPropagationRequiresNew() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
MockControl tmControl = MockControl.createControl(TransactionManager.class);
TransactionManager tm = (TransactionManager) tmControl.getMock();
MockControl txControl = MockControl.createControl(Transaction.class);
Transaction tx = (Transaction) txControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_NO_TRANSACTION, 1);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -