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;
       }
   
  
  
  

Reply via email to