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]