📄 jdotransactionmanagertests.java
字号:
txControl.reset();
tx.isActive();
txControl.setReturnValue(true, 2);
tx.setRollbackOnly();
txControl.setVoidCallable(1);
tx.getRollbackOnly();
txControl.setReturnValue(true, 1);
tx.commit();
txControl.setThrowable(new JDOFatalDataStoreException(), 1);
tx.isActive();
txControl.setReturnValue(false, 1);
txControl.replay();
return tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
JdoTemplate jt = new JdoTemplate(pmf);
jt.execute(new JdoCallback() {
public Object doInJdo(PersistenceManager pm2) {
pm2.flush();
return l;
}
});
status.setRollbackOnly();
return null;
}
});
}
});
fail("Should have thrown JdoResourceFailureException");
}
catch (JdoResourceFailureException ex) {
// expected
}
}
public void testParticipatingTransactionWithWithRequiresNew() {
pmf.getConnectionFactory();
pmfControl.setReturnValue(null, 2);
pmf.getPersistenceManager();
pmfControl.setReturnValue(pm, 2);
pm.currentTransaction();
pmControl.setReturnValue(tx, 7);
tx.begin();
txControl.setVoidCallable(1);
pm.flush();
pmControl.setVoidCallable(1);
pm.close();
pmControl.setVoidCallable(2);
pmfControl.replay();
pmControl.replay();
txControl.replay();
PlatformTransactionManager tm = new JdoTransactionManager(pmf);
final TransactionTemplate tt = new TransactionTemplate(tm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
final List l = new ArrayList();
l.add("test");
Object result = tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
txControl.verify();
txControl.reset();
tx.isActive();
txControl.setReturnValue(true, 1);
tx.begin();
txControl.setVoidCallable(1);
tx.getRollbackOnly();
txControl.setReturnValue(false, 2);
tx.commit();
txControl.setVoidCallable(2);
txControl.replay();
return tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
JdoTemplate jt = new JdoTemplate(pmf);
return jt.execute(new JdoCallback() {
public Object doInJdo(PersistenceManager pm2) {
pm2.flush();
return l;
}
});
}
});
}
});
assertTrue("Correct result list", result == l);
}
public void testParticipatingTransactionWithWithRequiresNewAndPrebound() {
pmf.getConnectionFactory();
pmfControl.setReturnValue(null, 3);
pmf.getPersistenceManager();
pmfControl.setReturnValue(pm, 1);
pm.currentTransaction();
pmControl.setReturnValue(tx, 8);
tx.isActive();
txControl.setReturnValue(false, 1);
tx.begin();
txControl.setVoidCallable(1);
pm.flush();
pmControl.setVoidCallable(1);
pm.close();
pmControl.setVoidCallable(1);
pmfControl.replay();
pmControl.replay();
txControl.replay();
PlatformTransactionManager tm = new JdoTransactionManager(pmf);
final TransactionTemplate tt = new TransactionTemplate(tm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
final List l = new ArrayList();
l.add("test");
assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive());
TransactionSynchronizationManager.bindResource(pmf, new PersistenceManagerHolder(pm));
assertTrue("Has thread pm", TransactionSynchronizationManager.hasResource(pmf));
Object result = tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
txControl.verify();
txControl.reset();
tx.isActive();
txControl.setReturnValue(true, 1);
tx.begin();
txControl.setVoidCallable(1);
tx.getRollbackOnly();
txControl.setReturnValue(false, 2);
tx.commit();
txControl.setVoidCallable(2);
txControl.replay();
JdoTemplate jt = new JdoTemplate(pmf);
jt.execute(new JdoCallback() {
public Object doInJdo(PersistenceManager pm2) {
return null;
}
});
return tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
JdoTemplate jt = new JdoTemplate(pmf);
return jt.execute(new JdoCallback() {
public Object doInJdo(PersistenceManager pm2) {
pm2.flush();
return l;
}
});
}
});
}
});
assertTrue("Correct result list", result == l);
assertTrue("Has thread pm", TransactionSynchronizationManager.hasResource(pmf));
TransactionSynchronizationManager.unbindResource(pmf);
assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive());
}
public void testJtaTransactionCommit() throws Exception {
MockControl utControl = MockControl.createControl(UserTransaction.class);
UserTransaction ut = (UserTransaction) utControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_NO_TRANSACTION, 1);
ut.begin();
utControl.setVoidCallable(1);
ut.getStatus();
utControl.setReturnValue(Status.STATUS_ACTIVE, 1);
ut.commit();
utControl.setVoidCallable(1);
utControl.replay();
pmf.getPersistenceManager();
pmfControl.setReturnValue(pm, 1);
pm.flush();
pmControl.setVoidCallable(2);
pm.close();
pmControl.setVoidCallable(1);
pmfControl.replay();
pmControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut);
TransactionTemplate tt = new TransactionTemplate(ptm);
final List l = new ArrayList();
l.add("test");
assertTrue("Hasn't thread pm", !TransactionSynchronizationManager.hasResource(pmf));
assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive());
Object result = tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
assertTrue("JTA synchronizations active", TransactionSynchronizationManager.isSynchronizationActive());
assertTrue("Hasn't thread pm", !TransactionSynchronizationManager.hasResource(pmf));
JdoTemplate jt = new JdoTemplate(pmf);
jt.execute(new JdoCallback() {
public Object doInJdo(PersistenceManager pm2) {
assertTrue("Has thread pm", TransactionSynchronizationManager.hasResource(pmf));
pm2.flush();
return l;
}
});
Object result = jt.execute(new JdoCallback() {
public Object doInJdo(PersistenceManager pm2) {
assertTrue("Has thread pm", TransactionSynchronizationManager.hasResource(pmf));
pm2.flush();
return l;
}
});
assertTrue("Has thread pm", TransactionSynchronizationManager.hasResource(pmf));
return result;
}
});
assertTrue("Hasn't thread pm", !TransactionSynchronizationManager.hasResource(pmf));
assertTrue("Correct result list", result == l);
assertTrue("Hasn't thread pm", !TransactionSynchronizationManager.hasResource(pmf));
assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
}
public void testParticipatingJtaTransactionWithWithRequiresNewAndPrebound() throws Exception {
final MockControl utControl = MockControl.createControl(UserTransaction.class);
final UserTransaction ut = (UserTransaction) utControl.getMock();
final MockControl tmControl = MockControl.createControl(TransactionManager.class);
final TransactionManager tm = (TransactionManager) tmControl.getMock();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_NO_TRANSACTION, 1);
ut.begin();
utControl.setVoidCallable(1);
utControl.replay();
pmf.getConnectionFactory();
pmfControl.setReturnValue(null, 1);
pmf.getPersistenceManager();
pmfControl.setReturnValue(pm, 1);
pm.flush();
pmControl.setVoidCallable(1);
pm.close();
pmControl.setVoidCallable(1);
pmfControl.replay();
pmControl.replay();
JtaTransactionManager ptm = new JtaTransactionManager(ut, tm);
final TransactionTemplate tt = new TransactionTemplate(ptm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
final List l = new ArrayList();
l.add("test");
assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive());
TransactionSynchronizationManager.bindResource(pmf, new PersistenceManagerHolder(pm));
assertTrue("Has thread pm", TransactionSynchronizationManager.hasResource(pmf));
Object result = tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
try {
utControl.verify();
utControl.reset();
ut.getStatus();
utControl.setReturnValue(Status.STATUS_ACTIVE, 1);
MockJtaTransaction transaction = new MockJtaTransaction();
tm.suspend();
tmControl.setReturnValue(transaction, 1);
ut.begin();
utControl.setVoidCallable(1);
ut.getStatus();
utControl.setReturnValue(Status.STATUS_ACTIVE, 2);
ut.commit();
utControl.setVoidCallable(2);
tm.resume(transaction);
tmControl.setVoidCallable(1);
utControl.replay();
tmControl.replay();
}
catch (Exception ex) {
}
JdoTemplate jt = new JdoTemplate(pmf);
jt.execute(new JdoCallback() {
public Object doInJdo(PersistenceManager pm2) {
return null;
}
});
return tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
JdoTemplate jt = new JdoTemplate(pmf);
return jt.execute(new JdoCallback() {
public Object doInJdo(PersistenceManager pm2) {
pm2.flush();
return l;
}
});
}
});
}
});
assertTrue("Correct result list", result == l);
assertTrue("Has thread pm", TransactionSynchronizationManager.hasResource(pmf));
TransactionSynchronizationManager.unbindResource(pmf);
assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive());
utControl.verify();
}
public void testTransactionCommitWithPropagationSupports() {
pmf.getConnectionFactory();
pmfControl.setReturnValue(null, 2);
pmf.getPersistenceManager();
pmfControl.setReturnValue(pm, 1);
pm.close();
pmControl.setVoidCallable(1);
pmfControl.replay();
pmControl.replay();
PlatformTransactionManager tm = new JdoTransactionManager(pmf);
TransactionTemplate tt = new TransactionTemplate(tm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_SUPPORTS);
final List l = new ArrayList();
l.add("test");
assertTrue("Hasn't thread pm", !TransactionSynchronizationManager.hasResource(pmf));
Object result = tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
assertTrue("Hasn't thread pm", !TransactionSynchronizationManager.hasResource(pmf));
assertTrue("Is not new transaction", !status.isNewTransaction());
JdoTemplate jt = new JdoTemplate(pmf);
return jt.execute(new JdoCallback() {
public Object doInJdo(PersistenceManager pm) {
return l;
}
});
}
});
assertTrue("Correct result list", result == l);
assertTrue("Hasn't thread pm", !TransactionSynchronizationManager.hasResource(pmf));
}
public void testInvalidIsolation() {
pmf.getConnectionFactory();
pmfControl.setReturnValue(null, 1);
pmf.getPersistenceManager();
pmfControl.setReturnValue(pm, 1);
pm.currentTransaction();
pmControl.setReturnValue(null, 1);
pm.close();
pmControl.setVoidCallable(1);
pmfControl.replay();
pmControl.replay();
PlatformTransactionManager tm = new JdoTransactionManager(pmf);
TransactionTemplate tt = new TransactionTemplate(tm);
tt.setIsolationLevel(TransactionDefinition.ISOLATION_SERIALIZABLE);
try {
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
}
});
fail("Should have thrown InvalidIsolationLevelException");
}
catch (InvalidIsolationLevelException ex) {
// expected
}
}
public void testTransactionCommitWithPrebound() {
pmf.getConnectionFactory();
pmfControl.setReturnValue(null, 2);
pm.currentTransaction();
pmControl.setReturnValue(tx, 4);
tx.isActive();
txControl.setReturnValue(false, 1);
tx.begin();
txControl.setVoidCallable(1);
tx.getRollbackOnly();
txControl.setReturnValue(false, 1);
tx.commit();
txControl.setVoidCallable(1);
pmfControl.replay();
pmControl.replay();
txControl.replay();
PlatformTransactionManager tm = new JdoTransactionManager(pmf);
TransactionTemplate tt = new TransactionTemplate(tm);
final List l = new ArrayList();
l.add("test");
assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive());
TransactionSynchronizationManager.bindResource(pmf, new PersistenceManagerHolder(pm));
assertTrue("Has thread pm", TransactionSynchronizationManager.hasResource(pmf));
Object result = tt.execute(new TransactionCallback() {
public Object doInTransaction(TransactionStatus status) {
assertTrue("Has thread pm", TransactionSynchronizationManager.hasResource(pmf));
JdoTemplate jt = new JdoTemplate(pmf);
return jt.execute(new JdoCallback() {
public Object doInJdo(PersistenceManager pm) {
return l;
}
});
}
});
assertTrue("Correct result list", result == l);
assertTrue("Has thread pm", TransactionSynchronizationManager.hasResource(pmf));
TransactionSynchronizationManager.unbindResource(pmf);
assertTrue("JTA synchronizations not active", !TransactionSynchronizationManager.isSynchronizationActive());
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -