📄 persistencebrokertransactionmanagertests.java
字号:
});
}
});
assertTrue("Hasn't thread broker", !TransactionSynchronizationManager.hasResource(tm.getPbKey()));
pbControl.verify();
cmControl.verify();
conControl.verify();
}
public void testParticipatingTransactionWithRollback() throws LookupException, SQLException {
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
MockControl cmControl = MockControl.createControl(ConnectionManagerIF.class);
final ConnectionManagerIF cm = (ConnectionManagerIF) cmControl.getMock();
final Object entity = new Object();
MockControl conControl = MockControl.createControl(Connection.class);
Connection con = (Connection) conControl.getMock();
pb.serviceConnectionManager();
pbControl.setReturnValue(cm, 2);
cm.getConnection();
cmControl.setReturnValue(con, 2);
con.isReadOnly();
conControl.setReturnValue(false, 1);
pb.beginTransaction();
pbControl.setVoidCallable(1);
pb.delete(entity);
pbControl.setVoidCallable(1);
pb.abortTransaction();
pbControl.setVoidCallable(1);
pb.close();
pbControl.setReturnValue(true, 1);
pbControl.replay();
cmControl.replay();
conControl.replay();
final PersistenceBrokerTransactionManager tm = new PersistenceBrokerTransactionManager() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
assertTrue("Hasn't thread broker", !TransactionSynchronizationManager.hasResource(tm.getPbKey()));
final TransactionTemplate tt = new TransactionTemplate(tm);
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue("Has thread broker", TransactionSynchronizationManager.hasResource(tm.getPbKey()));
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue("Has thread broker", TransactionSynchronizationManager.hasResource(tm.getPbKey()));
PersistenceBrokerTemplate pbt = new PersistenceBrokerTemplate();
pbt.delete(entity);
status.setRollbackOnly();
}
});
}
});
assertTrue("Hasn't thread broker", !TransactionSynchronizationManager.hasResource(tm.getPbKey()));
pbControl.verify();
cmControl.verify();
conControl.verify();
}
public void testParticipatingTransactionWithRequiresNew() throws LookupException, SQLException {
MockControl pb1Control = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb1 = (PersistenceBroker) pb1Control.getMock();
MockControl pb2Control = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb2 = (PersistenceBroker) pb2Control.getMock();
MockControl cmControl = MockControl.createControl(ConnectionManagerIF.class);
final ConnectionManagerIF cm = (ConnectionManagerIF) cmControl.getMock();
MockControl conControl = MockControl.createControl(Connection.class);
Connection con = (Connection) conControl.getMock();
pb1.serviceConnectionManager();
pb1Control.setReturnValue(cm, 2);
cm.getConnection();
cmControl.setReturnValue(con, 4);
con.isReadOnly();
conControl.setReturnValue(false, 2);
pb1.beginTransaction();
pb1Control.setVoidCallable(1);
pb2.serviceConnectionManager();
pb2Control.setReturnValue(cm, 2);
pb2.beginTransaction();
pb2Control.setVoidCallable(1);
pb2.commitTransaction();
pb2Control.setVoidCallable(1);
pb2.close();
pb2Control.setReturnValue(true, 1);
pb1.commitTransaction();
pb1Control.setVoidCallable(1);
pb1.close();
pb1Control.setReturnValue(true, 1);
pb1Control.replay();
pb2Control.replay();
cmControl.replay();
conControl.replay();
final PersistenceBrokerTransactionManager tm = new PersistenceBrokerTransactionManager() {
int counter = 0;
protected PersistenceBroker getPersistenceBroker() {
counter++;
return (counter > 1 ? pb2 : pb1);
}
};
assertTrue("Hasn't thread broker", !TransactionSynchronizationManager.hasResource(tm.getPbKey()));
final TransactionTemplate tt = new TransactionTemplate(tm);
tt.setPropagationBehavior(TransactionDefinition.PROPAGATION_REQUIRES_NEW);
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue("Has thread broker", TransactionSynchronizationManager.hasResource(tm.getPbKey()));
assertEquals(pb1, OjbFactoryUtils.getPersistenceBroker(tm.getPbKey(), false));
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue("Has thread broker", TransactionSynchronizationManager.hasResource(tm.getPbKey()));
assertEquals(pb2, OjbFactoryUtils.getPersistenceBroker(tm.getPbKey(), false));
}
});
assertEquals(pb1, OjbFactoryUtils.getPersistenceBroker(tm.getPbKey(), false));
}
});
assertTrue("Hasn't thread broker", !TransactionSynchronizationManager.hasResource(tm.getPbKey()));
pb1Control.verify();
pb2Control.verify();
cmControl.verify();
conControl.verify();
}
public void testExposeJdbcTransaction() throws LookupException, SQLException {
MockControl dsControl = MockControl.createControl(DataSource.class);
final DataSource ds = (DataSource) dsControl.getMock();
MockControl pbControl = MockControl.createControl(PersistenceBroker.class);
final PersistenceBroker pb = (PersistenceBroker) pbControl.getMock();
MockControl cmControl = MockControl.createControl(ConnectionManagerIF.class);
final ConnectionManagerIF cm = (ConnectionManagerIF) cmControl.getMock();
final Object entity = new Object();
MockControl conControl = MockControl.createControl(Connection.class);
Connection con = (Connection) conControl.getMock();
pb.serviceConnectionManager();
pbControl.setReturnValue(cm, 2);
cm.getConnection();
cmControl.setReturnValue(con, 2);
con.isReadOnly();
conControl.setReturnValue(false, 1);
pb.beginTransaction();
pbControl.setVoidCallable(1);
pb.delete(entity);
pbControl.setVoidCallable(1);
pb.commitTransaction();
pbControl.setVoidCallable(1);
pb.close();
pbControl.setReturnValue(true, 1);
dsControl.replay();
pbControl.replay();
cmControl.replay();
conControl.replay();
final PersistenceBrokerTransactionManager tm = new PersistenceBrokerTransactionManager() {
protected PersistenceBroker getPersistenceBroker() {
return pb;
}
};
tm.setDataSource(ds);
TransactionTemplate tt = new TransactionTemplate(tm);
assertTrue("Hasn't thread broker", !TransactionSynchronizationManager.hasResource(tm.getPbKey()));
assertTrue("Hasn't thread connection", !TransactionSynchronizationManager.hasResource(ds));
tt.execute(new TransactionCallbackWithoutResult() {
protected void doInTransactionWithoutResult(TransactionStatus status) {
assertTrue("Has thread broker", TransactionSynchronizationManager.hasResource(tm.getPbKey()));
assertTrue("Has thread connection", TransactionSynchronizationManager.hasResource(ds));
PersistenceBrokerTemplate pbt = new PersistenceBrokerTemplate();
pbt.delete(entity);
}
});
assertTrue("Hasn't thread broker", !TransactionSynchronizationManager.hasResource(tm.getPbKey()));
assertTrue("Hasn't thread connection", !TransactionSynchronizationManager.hasResource(ds));
dsControl.verify();
pbControl.verify();
cmControl.verify();
conControl.verify();
}
protected void tearDown() {
assertTrue(TransactionSynchronizationManager.getResourceMap().isEmpty());
assertFalse(TransactionSynchronizationManager.isSynchronizationActive());
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -