Author: ozeigermann
Date: Sat Jul 28 08:47:04 2007
New Revision: 560557

URL: http://svn.apache.org/viewvc?view=rev&rev=560557
Log:
Added additional prepare step to make Transaction 2PC enabled.

Modified:
    
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/AbstractTransactionalResourceManager.java
    
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/ManageableResourceManager.java
    
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/TransactionException.java
    
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/TransactionImpl.java

Modified: 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/AbstractTransactionalResourceManager.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/AbstractTransactionalResourceManager.java?view=diff&rev=560557&r1=560556&r2=560557
==============================================================================
--- 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/AbstractTransactionalResourceManager.java
 (original)
+++ 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/AbstractTransactionalResourceManager.java
 Sat Jul 28 08:47:04 2007
@@ -54,12 +54,7 @@
 
     @Override
     public boolean isTransactionMarkedForRollback() {
-        T txContext = getActiveTx();
-
-        if (txContext == null) {
-            throw new IllegalStateException("Active thread " + 
Thread.currentThread()
-                    + " not associated with a transaction!");
-        }
+        T txContext = getCheckedActiveTx();
 
         return (txContext.isMarkedForRollback());
     }
@@ -78,12 +73,7 @@
 
     @Override
     public void rollbackTransaction() {
-        T txContext = getActiveTx();
-
-        if (txContext == null) {
-            throw new IllegalStateException("Active thread " + 
Thread.currentThread()
-                    + " not associated with a transaction!");
-        }
+        T txContext = getCheckedActiveTx();
 
         txContext.dispose();
         setActiveTx(null);
@@ -91,12 +81,7 @@
 
     @Override
     public boolean commitTransaction() {
-        T txContext = getActiveTx();
-
-        if (txContext == null) {
-            throw new IllegalStateException("Active thread " + 
Thread.currentThread()
-                    + " not associated with a transaction!");
-        }
+        T txContext = getCheckedActiveTx();
 
         if (txContext.isMarkedForRollback()) {
             throw new IllegalStateException("Active thread " + 
Thread.currentThread()
@@ -113,18 +98,22 @@
         return activeTx.get();
     }
 
-    protected void setActiveTx(T txContext) {
-        activeTx.set(txContext);
-    }
-
-    public boolean isReadOnlyTransaction() {
+    protected T getCheckedActiveTx() {
         T txContext = getActiveTx();
 
         if (txContext == null) {
             throw new IllegalStateException("Active thread " + 
Thread.currentThread()
                     + " not associated with a transaction!");
         }
+        return txContext;
+    }
+    
+    protected void setActiveTx(T txContext) {
+        activeTx.set(txContext);
+    }
 
+    public boolean isReadOnlyTransaction() {
+        T txContext = getCheckedActiveTx();
         return (txContext.isReadOnly());
     }
 
@@ -183,6 +172,10 @@
         public void commit() {
 
         }
+        
+        public boolean prepare() {
+            return true;
+        }
     }
 
     public LockManager<Object, String> getLm() {
@@ -215,16 +208,20 @@
 
     }
 
+    @Override
     public void setRollbackOnly() {
-        T txContext = getActiveTx();
-
-        if (txContext == null) {
-            throw new IllegalStateException("Active thread " + 
Thread.currentThread()
-                    + " not associated with a transaction!");
-        }
+        T txContext = getCheckedActiveTx();
         txContext.markForRollback();
 
     }
+
+    @Override
+    public boolean prepareTransaction() {
+        T txContext = getCheckedActiveTx();
+        return txContext.prepare();
+        
+    }
+
 
 
 }

Modified: 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/ManageableResourceManager.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/ManageableResourceManager.java?view=diff&rev=560557&r1=560556&r2=560557
==============================================================================
--- 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/ManageableResourceManager.java
 (original)
+++ 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/ManageableResourceManager.java
 Sat Jul 28 08:47:04 2007
@@ -22,6 +22,8 @@
     void setRollbackOnly();
 
     boolean commitCanFail();
+    
+    boolean prepareTransaction();
 
     /**
      * Checks whether this transaction has been marked to allow a rollback as

Modified: 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/TransactionException.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/TransactionException.java?view=diff&rev=560557&r1=560556&r2=560557
==============================================================================
--- 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/TransactionException.java
 (original)
+++ 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/TransactionException.java
 Sat Jul 28 08:47:04 2007
@@ -24,7 +24,7 @@
     private static final long serialVersionUID = 7650329971392401844L;
 
     public enum Code {
-        COMMIT_FAILED, ROLLBACK_ONLY
+        COMMIT_FAILED, ROLLBACK_ONLY, PREPARE_FAILED
     }
 
     protected Code code;

Modified: 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/TransactionImpl.java
URL: 
http://svn.apache.org/viewvc/jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/TransactionImpl.java?view=diff&rev=560557&r1=560556&r2=560557
==============================================================================
--- 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/TransactionImpl.java
 (original)
+++ 
jakarta/commons/proper/transaction/branches/TRANSACTION_2/src/java/org/apache/commons/transaction/TransactionImpl.java
 Sat Jul 28 08:47:04 2007
@@ -47,6 +47,10 @@
         if (isRollbackOnly()) {
             throw new 
TransactionException(TransactionException.Code.ROLLBACK_ONLY);
         }
+        if (!prepare()) {
+            throw new 
TransactionException(TransactionException.Code.PREPARE_FAILED);
+        }
+
         for (ManageableResourceManager manager : rms) {
             if (!manager.isReadOnlyTransaction()) {
                 try {
@@ -97,4 +101,11 @@
         lm.startWork(timeout, unit);
     }
 
+    protected boolean prepare() {
+        for (ManageableResourceManager manager : rms) {
+            if (!manager.prepareTransaction())
+                return false;
+        }
+        return true;
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to