[jboss-svn-commits] JBL Code SVN: r6319 - in labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx: . jta jts

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Wed Sep 20 11:32:20 EDT 2006


Author: kevin.conner at jboss.com
Date: 2006-09-20 11:32:17 -0400 (Wed, 20 Sep 2006)
New Revision: 6319

Modified:
   labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/BaseTransactionManagerDelegate.java
   labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jta/TransactionManagerDelegate.java
   labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerDelegate.java
Log:
Fix for JBTM-125 TransactionTimeoutConfiguration

Modified: labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/BaseTransactionManagerDelegate.java
===================================================================
--- labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/BaseTransactionManagerDelegate.java	2006-09-20 15:28:27 UTC (rev 6318)
+++ labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/BaseTransactionManagerDelegate.java	2006-09-20 15:32:17 UTC (rev 6319)
@@ -31,12 +31,13 @@
 
 import org.jboss.tm.TransactionLocal;
 import org.jboss.tm.TransactionLocalDelegate;
+import org.jboss.tm.TransactionTimeoutConfiguration;
 
 /**
  * Delegate for JBoss TransactionManager/TransactionLocalDelegate.
  * @author kevin
  */
-public class BaseTransactionManagerDelegate implements TransactionManager, TransactionLocalDelegate
+public abstract class BaseTransactionManagerDelegate implements TransactionManager, TransactionLocalDelegate, TransactionTimeoutConfiguration
 {
     /**
      * Delegate transaction manager.
@@ -194,16 +195,16 @@
      * @throws InterruptedException if the thread is interrupted
      */
     public void lock(final TransactionLocal local, final Transaction tx)
-    		throws InterruptedException
-	{
-    		transactionLocalDelegate.lock(local, tx) ;
-	}
+        throws InterruptedException
+    {
+        transactionLocalDelegate.lock(local, tx) ;
+    }
     
     /**
      * Unlock the transaction local in the context of this transaction
      */
     public void unlock(final TransactionLocal local, final Transaction tx)
     {
-		transactionLocalDelegate.unlock(local, tx) ;
+        transactionLocalDelegate.unlock(local, tx) ;
     }
 }

Modified: labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jta/TransactionManagerDelegate.java
===================================================================
--- labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jta/TransactionManagerDelegate.java	2006-09-20 15:28:27 UTC (rev 6318)
+++ labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jta/TransactionManagerDelegate.java	2006-09-20 15:32:17 UTC (rev 6319)
@@ -25,21 +25,73 @@
 import javax.naming.Context;
 import javax.naming.Name;
 import javax.naming.spi.ObjectFactory;
+import javax.transaction.RollbackException;
+import javax.transaction.Status;
+import javax.transaction.SystemException;
 
 import com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionManagerImple;
 import com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate;
+import com.arjuna.ats.jbossatx.logging.jbossatxLogger;
 
 public class TransactionManagerDelegate extends BaseTransactionManagerDelegate implements ObjectFactory
 {
     /**
+     * The transaction manager.
+     */
+    private static final TransactionManagerImple TRANSACTION_MANAGER = new TransactionManagerImple() ;
+    
+    /**
      * Construct the delegate with the appropriate transaction manager
      */
     public TransactionManagerDelegate()
     {
-        super(new TransactionManagerImple());
+        super(getTransactionManager());
     }
     
     /**
+     * Get the transaction timeout.
+     * 
+     * @return the timeout in seconds associated with this thread
+     * @throws SystemException for any error
+     */
+    public int getTransactionTimeout()
+        throws SystemException
+    {
+        return getTransactionManager().getTimeout() ;
+    }
+
+    /**
+     * Get the time left before transaction timeout
+     * 
+     * @param errorRollback throw an error if the transaction is marked for rollback
+     * @return the remaining in the current transaction or -1
+     * if there is no transaction
+     * @throws RollbackException if the transaction is marked for rollback and
+     * errorRollback is true
+     * 
+     * @message com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_1
+     * 		[com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_1] - Transaction rolledback
+     * @message com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_2
+     * 		[com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_2] - Unexpected error retrieving transaction status
+     */
+    public long getTimeLeftBeforeTransactionTimeout(boolean errorRollback)
+        throws RollbackException
+    {
+    	try
+    	{
+	    	if (getStatus() == Status.STATUS_MARKED_ROLLBACK)
+	    	{
+	    		throw new RollbackException(jbossatxLogger.logMesg.getString("com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_1")) ;
+			}
+    	}
+    	catch (final SystemException se)
+    	{
+    		throw new RollbackException(jbossatxLogger.logMesg.getString("com.arjuna.ats.jbossatx.jta.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_2")) ;
+    	}
+        return -1 ;
+    }
+    
+    /**
      * Get the transaction manager from the factory.
      * @param initObj The initialisation object.
      * @param relativeName The instance name relative to the context.
@@ -53,4 +105,13 @@
     {
         return this ;
     }
+    
+    /**
+     * Get the transaction manager.
+     * @return The transaction manager.
+     */
+    private static TransactionManagerImple getTransactionManager()
+    {
+        return TRANSACTION_MANAGER ;
+    }
 }

Modified: labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerDelegate.java
===================================================================
--- labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerDelegate.java	2006-09-20 15:28:27 UTC (rev 6318)
+++ labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerDelegate.java	2006-09-20 15:32:17 UTC (rev 6319)
@@ -25,13 +25,22 @@
 import javax.naming.Context;
 import javax.naming.Name;
 import javax.naming.spi.ObjectFactory;
+import javax.transaction.RollbackException;
+import javax.transaction.Status;
+import javax.transaction.SystemException;
 
 import com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple;
 import com.arjuna.ats.jbossatx.BaseTransactionManagerDelegate;
+import com.arjuna.ats.jbossatx.logging.jbossatxLogger;
 
 public class TransactionManagerDelegate extends BaseTransactionManagerDelegate implements ObjectFactory
 {
     /**
+     * The transaction manager.
+     */
+    private static final TransactionManagerImple TRANSACTION_MANAGER = new TransactionManagerImple() ;
+    
+    /**
      * Construct the delegate with the appropriate transaction manager
      */
     public TransactionManagerDelegate()
@@ -40,6 +49,49 @@
     }
     
     /**
+     * Get the transaction timeout.
+     * 
+     * @return the timeout in seconds associated with this thread
+     * @throws SystemException for any error
+     */
+    public int getTransactionTimeout()
+        throws SystemException
+    {
+        return getTransactionManager().getTimeout() ;
+    }
+
+    /**
+     * Get the time left before transaction timeout
+     * 
+     * @param errorRollback throw an error if the transaction is marked for rollback
+     * @return the remaining in the current transaction or -1
+     * if there is no transaction
+     * @throws RollbackException if the transaction is marked for rollback and
+     * errorRollback is true
+     * 
+     * @message com.arjuna.ats.jbossatx.jts.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_1
+     * 		[com.arjuna.ats.jbossatx.jts.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_1] - Transaction rolledback
+     * @message com.arjuna.ats.jbossatx.jts.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_2
+     * 		[com.arjuna.ats.jbossatx.jts.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_2] - Unexpected error retrieving transaction status
+     */
+    public long getTimeLeftBeforeTransactionTimeout(boolean errorRollback)
+        throws RollbackException
+    {
+    	try
+    	{
+	    	if (getStatus() == Status.STATUS_MARKED_ROLLBACK)
+	    	{
+	    		throw new RollbackException(jbossatxLogger.logMesg.getString("com.arjuna.ats.jbossatx.jts.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_1")) ;
+			}
+		}
+    	catch (final SystemException se)
+    	{
+    		throw new RollbackException(jbossatxLogger.logMesg.getString("com.arjuna.ats.jbossatx.jts.TransactionManagerDelegate.getTimeLeftBeforeTransactionTimeout_2")) ;
+    	}
+        return -1 ;
+    }
+    
+    /**
      * Get the transaction manager from the factory.
      * @param initObj The initialisation object.
      * @param relativeName The instance name relative to the context.
@@ -53,4 +105,13 @@
     {
         return this ;
     }
+    
+    /**
+     * Get the transaction manager.
+     * @return The transaction manager.
+     */
+    private static TransactionManagerImple getTransactionManager()
+    {
+        return TRANSACTION_MANAGER ;
+    }
 }




More information about the jboss-svn-commits mailing list