[jboss-svn-commits] JBL Code SVN: r35004 - labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/coordinator.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Sep 4 14:44:54 EDT 2010


Author: mark.little at jboss.com
Date: 2010-09-04 14:44:53 -0400 (Sat, 04 Sep 2010)
New Revision: 35004

Modified:
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/coordinator/ArjunaTransactionImple.java
Log:
https://jira.jboss.org/browse/JBTM-774

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/coordinator/ArjunaTransactionImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/coordinator/ArjunaTransactionImple.java	2010-09-04 18:19:51 UTC (rev 35003)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/coordinator/ArjunaTransactionImple.java	2010-09-04 18:44:53 UTC (rev 35004)
@@ -1237,33 +1237,38 @@
 	public PropagationContext get_txcontext () throws Unavailable,
 			SystemException
 	{
-		if (jtsLogger.logger.isTraceEnabled()) {
-            jtsLogger.logger.trace("ArjunaTransactionImple::get_txcontext - called for "
-                    + get_uid());
-        }
+	    if (jtsLogger.logger.isTraceEnabled()) {
+	        jtsLogger.logger.trace("ArjunaTransactionImple::get_txcontext - called for "
+	                + get_uid());
+	    }
 
-		/*
-		 * Throw an exception if we are not active.
-		 */
+	    /*
+	     * Throw an exception if we are not active.
+	     */
 
-		currentStatus = determineStatus(this);
+	    currentStatus = determineStatus(this);
 
-		if ((currentStatus != Status.StatusActive)
-				&& (currentStatus != Status.StatusMarkedRollback))
-		{
-			throw new Unavailable();
-		}
-		else
-		{
-			try
-			{
-				return propagationContext();
-			}
-			catch (Exception e)
-			{
-				throw new Unavailable();
-			}
-		}
+	    if ((currentStatus != Status.StatusActive)
+	            && (currentStatus != Status.StatusMarkedRollback))
+	    {
+	        /*
+	         * If XA compliant then return context even if we're inactive. Otherwise
+	         * throw Unavailable for consistency with other OTS implementations.
+	         */
+	        
+	        if (!XA_COMPLIANT)
+	            throw new Unavailable();
+	    }
+
+	    try
+	    {
+	        return propagationContext();
+	    }
+	    catch (Exception e)
+	    {
+	        throw new UNKNOWN(e.toString(), ExceptionCodes.UNKNOWN_EXCEPTION,
+	                CompletionStatus.COMPLETED_NO);
+	    }
 	}
 
 	/*
@@ -2230,6 +2235,8 @@
 	static boolean _propagateTerminator = false;
 
 	static boolean _propagateRemainingTimeout = true;  // OTS 1.2 onwards supported this.
+	
+	private static final boolean XA_COMPLIANT = true; // if we ever want to disable this then add an mbean option.
 
 	static
 	{



More information about the jboss-svn-commits mailing list