dain 2005/02/25 18:06:16
Modified: modules/openejb-builder/src/test/org/openejb/transaction
ContainerPolicyTest.java MockTransaction.java
MockTransactionManager.java
Log:
Added support for in-tx cacheing back in
This unturned a load of places that were not handling transaction contexts
properly and bugs in the context itself
Changed instance contexts so they track entrancy and can be killed as
required by the spec
Made all instance context fields final
Revision Changes Path
1.3 +6 -8
openejb/modules/openejb-builder/src/test/org/openejb/transaction/ContainerPolicyTest.java
Index: ContainerPolicyTest.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/test/org/openejb/transaction/ContainerPolicyTest.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ContainerPolicyTest.java 11 Dec 2004 05:03:33 -0000 1.2
+++ ContainerPolicyTest.java 25 Feb 2005 23:06:16 -0000 1.3
@@ -62,8 +62,6 @@
import org.openejb.EJBInterfaceType;
/**
- *
- *
* @version $Revision$ $Date$
*/
public class ContainerPolicyTest extends TestCase {
@@ -94,18 +92,18 @@
TransactionContext.setContext(null);
ContainerPolicy.Required.invoke(interceptor, invocation,
transactionContextManager);
assertTrue(interceptor.context instanceof
ContainerTransactionContext);
- assertTrue(txnManager.committed);
- assertFalse(txnManager.rolledBack);
+ assertTrue(txnManager.isCommitted());
+ assertFalse(txnManager.isRolledBack());
- txnManager.committed = false;
+ txnManager.clear();
interceptor.throwException = true;
try {
ContainerPolicy.Required.invoke(interceptor, invocation,
transactionContextManager);
} catch (MockSystemException e) {
}
assertTrue(interceptor.context instanceof
ContainerTransactionContext);
- assertFalse(txnManager.committed);
- assertTrue(txnManager.rolledBack);
+ assertFalse(txnManager.isCommitted());
+ assertTrue(txnManager.isRolledBack());
}
protected void setUp() throws Exception {
1.2 +21 -2
openejb/modules/openejb-builder/src/test/org/openejb/transaction/MockTransaction.java
Index: MockTransaction.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/test/org/openejb/transaction/MockTransaction.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- MockTransaction.java 10 Nov 2004 01:35:13 -0000 1.1
+++ MockTransaction.java 25 Feb 2005 23:06:16 -0000 1.2
@@ -62,7 +62,18 @@
* @version $Revision$ $Date$
*/
public class MockTransaction implements Transaction {
+ public boolean committed;
+ public boolean rolledBack;
+ public boolean rollbackOnly;
+
+ public void clear() {
+ committed = false;
+ rolledBack = false;
+ rollbackOnly = false;
+ }
+
public void commit() throws HeuristicMixedException,
HeuristicRollbackException, RollbackException, SecurityException,
SystemException {
+ committed = true;
}
public boolean delistResource(XAResource xaResource, int i) throws
IllegalStateException, SystemException {
@@ -74,15 +85,23 @@
}
public int getStatus() throws SystemException {
- return Status.STATUS_NO_TRANSACTION;
+ if (rollbackOnly) {
+ return Status.STATUS_MARKED_ROLLBACK;
+ } else if (committed || rolledBack) {
+ return Status.STATUS_NO_TRANSACTION;
+ } else {
+ return Status.STATUS_ACTIVE;
+ }
}
public void registerSynchronization(Synchronization synchronization)
throws IllegalStateException, RollbackException, SystemException {
}
public void rollback() throws IllegalStateException, SystemException {
+ rolledBack = true;
}
public void setRollbackOnly() throws IllegalStateException,
SystemException {
+ rollbackOnly = true;
}
}
1.4 +21 -14
openejb/modules/openejb-builder/src/test/org/openejb/transaction/MockTransactionManager.java
Index: MockTransactionManager.java
===================================================================
RCS file:
/home/projects/openejb/scm/openejb/modules/openejb-builder/src/test/org/openejb/transaction/MockTransactionManager.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- MockTransactionManager.java 26 Jan 2005 23:28:02 -0000 1.3
+++ MockTransactionManager.java 25 Feb 2005 23:06:16 -0000 1.4
@@ -53,7 +53,6 @@
import javax.transaction.InvalidTransactionException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
-import javax.transaction.Status;
import javax.transaction.SystemException;
import javax.transaction.Transaction;
@@ -63,24 +62,35 @@
* @version $Revision$ $Date$
*/
public class MockTransactionManager implements ExtendedTransactionManager {
- private Transaction transaction = new
org.openejb.deployment.MockTransaction();
- public boolean committed;
- public boolean rolledBack;
+ private MockTransaction transaction = new MockTransaction();
+
+ public boolean isCommitted() {
+ return transaction.committed;
+ }
+
+ public boolean isRolledBack() {
+ return transaction.rolledBack;
+ }
public void clear() {
- committed = false;
- rolledBack = false;
+ transaction.clear();
+ }
+
+ public Transaction begin(long transactionTimeoutMilliseconds) throws
NotSupportedException, SystemException {
+ transaction.clear();
+ return transaction;
}
public void begin() throws NotSupportedException, SystemException {
+ transaction.clear();
}
public void commit() throws HeuristicMixedException,
HeuristicRollbackException, IllegalStateException, RollbackException,
SecurityException, SystemException {
- committed = true;
+ transaction.commit();
}
public int getStatus() throws SystemException {
- return Status.STATUS_ACTIVE;
+ return transaction.getStatus();
}
public Transaction getTransaction() throws SystemException {
@@ -91,20 +101,17 @@
}
public void rollback() throws IllegalStateException, SecurityException,
SystemException {
- rolledBack = true;
+ transaction.rollback();
}
public void setRollbackOnly() throws IllegalStateException,
SystemException {
+ transaction.setRollbackOnly();
}
public void setTransactionTimeout(int seconds) throws SystemException {
}
public Transaction suspend() throws SystemException {
- return null;
- }
-
- public Transaction begin(long transactionTimeoutMilliseconds) throws
NotSupportedException, SystemException {
return transaction;
}