[jboss-svn-commits] JBL Code SVN: r32068 - in labs/jbosstm/trunk: ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/nested and 19 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Sat Mar 13 16:06:08 EST 2010


Author: mark.little at jboss.com
Date: 2010-03-13 16:06:07 -0500 (Sat, 13 Mar 2010)
New Revision: 32068

Added:
   labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/transactions/CheckedActionsUnitTest.java
   labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/orbspecific/recovery/JacORBRecoveryUnitTest.java
   labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/participants/
   labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/participants/ExtendedResourceUnitTest.java
   labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/recovery/TopLevelTransactionUnitTest.java
Modified:
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/BaseTransaction.java
   labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/nested/SimpleNestedTest.java
   labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/recovery/CrashRecovery.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/build.xml
   labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/BaseTransaction.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/TransactionImple.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/ThreadedCommit.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/nested/SimpleNestedTest.java
   labs/jbosstm/trunk/ArjunaJTS/jts/build.xml
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/ControlWrapper.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/coordinator/CheckedActions.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/CurrentImple.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCManager.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCShutdown.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRecoveryInit.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TopLevelTransactionRecoveryModule.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TransactionRecoveryModule.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/resources/ExtendedResourceRecord.java
   labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/heuristics/HeuristicTest.java
   labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/transactions/TransactionTest1.java
   labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/orbspecific/resources/DemoArjunaResource.java
Log:
https://jira.jboss.org/jira/browse/JBTM-715

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/BaseTransaction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/BaseTransaction.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/BaseTransaction.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -66,24 +66,26 @@
 		 * programmer use them. Strict conformance will always say no.
 		 */
 
-		if (!BaseTransaction._supportSubtransactions)
+		if (!jtaPropertyManager.getJTAEnvironmentBean().isSupportSubtransactions())
 		{
-			try
-			{
-				checkTransactionState();
-			}
-			catch (IllegalStateException e1)
-			{
-                NotSupportedException notSupportedException = new NotSupportedException(e1.getMessage());
-                notSupportedException.initCause(e1);
-                throw notSupportedException;
-			}
-			catch (Exception e2)
-			{
-                javax.transaction.SystemException systemException = new javax.transaction.SystemException(e2.toString());
-                systemException.initCause(e2);
-                throw systemException;
-			}
+		    try
+		    {
+		        checkTransactionState();
+		    }
+		    catch (IllegalStateException e1)
+		    {
+		        NotSupportedException notSupportedException = new NotSupportedException(
+		                e1.getMessage());
+		        notSupportedException.initCause(e1);
+		        throw notSupportedException;
+		    }
+		    catch (Exception e2)
+		    {
+		        javax.transaction.SystemException systemException = new javax.transaction.SystemException(
+		                e2.toString());
+		        systemException.initCause(e2);
+		        throw systemException;
+		    }
 		}
 
 		Integer value = _timeouts.get();
@@ -310,7 +312,7 @@
 		else
 		{
 			if ((theTransaction.getStatus() != javax.transaction.Status.STATUS_NO_TRANSACTION)
-					&& !_supportSubtransactions)
+					&& !jtaPropertyManager.getJTAEnvironmentBean().isSupportSubtransactions())
 			{
 				throw new IllegalStateException(
 						"BaseTransaction.checkTransactionState - "
@@ -325,7 +327,7 @@
 
 	static
 	{
-        _supportSubtransactions = jtaPropertyManager.getJTAEnvironmentBean().isSupportSubtransactions();
+            _supportSubtransactions = jtaPropertyManager.getJTAEnvironmentBean().isSupportSubtransactions();
 	}
 
 }

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/nested/SimpleNestedTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/nested/SimpleNestedTest.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/nested/SimpleNestedTest.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -34,6 +34,7 @@
 import com.hp.mwtests.ts.jta.common.TestResource;
 import com.arjuna.ats.jta.common.jtaPropertyManager;
 
+import javax.transaction.NotSupportedException;
 import javax.transaction.Transaction;
 import javax.transaction.xa.XAResource;
 
@@ -43,7 +44,7 @@
 public class SimpleNestedTest
 {
     @Test
-    public void test() throws Exception
+    public void testEnabled () throws Exception
     {
         jtaPropertyManager.getJTAEnvironmentBean().setSupportSubtransactions(true);
 
@@ -64,7 +65,27 @@
         transactionManager.commit();
 
         transactionManager.commit();
+    }
+    
+    @Test
+    public void testDisabled () throws Exception
+    {
+        jtaPropertyManager.getJTAEnvironmentBean().setSupportSubtransactions(false);
 
-        System.err.println("Passed.");
+        javax.transaction.TransactionManager transactionManager = com.arjuna.ats.jta.TransactionManager.transactionManager();
+
+        transactionManager.begin();
+
+        try
+        {
+            transactionManager.begin();
+            
+            fail();
+        }
+        catch (final NotSupportedException ex)
+        {
+        }
+
+        transactionManager.commit();
     }
 }

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/recovery/CrashRecovery.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/recovery/CrashRecovery.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/recovery/CrashRecovery.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -47,7 +47,7 @@
     {
         // this test is supposed to leave a record around in the log store during a commit long enough
         // that the periodic recovery thread runs and detects it. rather than rely on delays to make
-        // this happen (placing us at the mercy of the schduler) we use a byteman script to enforce
+        // this happen (placing us at the mercy of the scheduler) we use a byteman script to enforce
         // the thread sequence we need
 
         // set the smallest possible backoff period so we don't have to wait too long for the test to run

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/build.xml
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/build.xml	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/build.xml	2010-03-13 21:06:07 UTC (rev 32068)
@@ -70,10 +70,7 @@
                     <exclude name="**/JTSTestCase.java"/>
                     <exclude name="**/LastOnePhaseResource.java"/>
 
-
                     <exclude name="**/implicit/**"/>
-                    <exclude name="**/SimpleNestedTest.java"/>
-
                 </fileset>
             </tests>
         </run.tests.macro>

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/BaseTransaction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/BaseTransaction.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/BaseTransaction.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -82,7 +82,7 @@
 		 * programmer use them. Strict conformance will always say no.
 		 */
 
-		if (!BaseTransaction._supportSubtransactions)
+		if (!jtaPropertyManager.getJTAEnvironmentBean().isSupportSubtransactions())
 		{
 			try
 			{
@@ -289,7 +289,7 @@
 				if (coord != null)
 				{
 					if ((coord.get_status() == org.omg.CosTransactions.Status.StatusActive)
-							&& (!_supportSubtransactions))
+							&& (!jtaPropertyManager.getJTAEnvironmentBean().isSupportSubtransactions()))
 					{
 						throw new IllegalStateException(
 								"BaseTransaction.checkTransactionState - "

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/TransactionImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/TransactionImple.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/TransactionImple.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -45,7 +45,6 @@
 
 import org.omg.CosTransactions.*;
 
-import com.arjuna.ats.arjuna.coordinator.ActionStatus;
 import com.arjuna.ats.arjuna.coordinator.BasicAction;
 import com.arjuna.ats.arjuna.coordinator.TwoPhaseCoordinator;
 import com.arjuna.ats.arjuna.coordinator.TransactionReaper;
@@ -1248,42 +1247,42 @@
 
 		if (otx != null)
 		{
-            synchronized (TransactionImple._transactions)
-            {
-				try
-				{
-					tx = (TransactionImple) TransactionImple._transactions.get(otx.get_uid());
+		    synchronized (TransactionImple._transactions)
+		    {
+		        try
+		        {
+		            tx = (TransactionImple) TransactionImple._transactions.get(otx.get_uid());
 
-					if (tx == null)
-					{
-						/*
-						 * If it isn't active then don't add it to the
-						 * hashtable.
-						 */
+		            if (tx == null)
+		            {
+		                /*
+		                 * If it isn't active then don't add it to the
+		                 * hashtable.
+		                 */
 
-						tx = new TransactionImple(new AtomicTransaction(otx));
+		                tx = new TransactionImple(new AtomicTransaction(otx));
 
-						try
-						{
-							if (tx.getStatus() == javax.transaction.Status.STATUS_ACTIVE)
-							{
-								putTransaction(tx);
-							}
-						}
-						catch (Exception ex)
-						{
-							// shouldn't happen!
-						}
-					}
-				}
-				catch (ClassCastException ex)
-				{
-					if (jtaxLogger.loggerI18N.isWarnEnabled())
-					{
-						jtaxLogger.loggerI18N.warn("com.arjuna.ats.internal.jta.transaction.jts.nottximple");
-					}
-				}
-			}
+		                try
+		                {
+		                    if (tx.getStatus() == javax.transaction.Status.STATUS_ACTIVE)
+		                    {
+		                        putTransaction(tx);
+		                    }
+		                }
+		                catch (Exception ex)
+		                {
+		                    // shouldn't happen!
+		                }
+		            }
+		        }
+		        catch (ClassCastException ex)
+		        {
+		            if (jtaxLogger.loggerI18N.isWarnEnabled())
+		            {
+		                jtaxLogger.loggerI18N.warn("com.arjuna.ats.internal.jta.transaction.jts.nottximple");
+		            }
+		        }
+		    }
 		}
 
 		return tx;
@@ -1424,6 +1423,8 @@
 			}
 			catch (TRANSACTION_ROLLEDBACK e4)
 			{
+			    e4.printStackTrace();
+			    
 				RollbackException rollbackException = new RollbackException(e4.toString());
                 if(_rollbackOnlyCallerStacktrace != null) {
                     // we rolled back beacuse the user explicitly told us not to commit. Attach the trace of who did that for debug:
@@ -1444,6 +1445,8 @@
 
 				//throw new IllegalStateException(
 				//		jtaxLogger.loggerI18N.getString("com.arjuna.ats.internal.jta.transaction.jts.invalidtx2"));
+			    
+			    throw new IllegalStateException();
 			}
 			catch (org.omg.CORBA.SystemException e7)
 			{

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/ThreadedCommit.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/ThreadedCommit.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/ThreadedCommit.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -71,8 +71,6 @@
                 {
                 }
             }
-
-            tm.commit();
         }
         catch (final Exception ex)
         {

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/nested/SimpleNestedTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/nested/SimpleNestedTest.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/nested/SimpleNestedTest.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -39,6 +39,7 @@
 
 import com.arjuna.orbportability.*;
 
+import javax.transaction.NotSupportedException;
 import javax.transaction.Transaction;
 import javax.transaction.xa.XAResource;
 
@@ -48,7 +49,7 @@
 public class SimpleNestedTest
 {
     @Test
-    public void test() throws Exception
+    public void testEnabled () throws Exception
     {
         ORB myORB = null;
         RootOA myOA = null;
@@ -71,17 +72,49 @@
         transactionManager.begin();
 
         transactionManager.begin();
+        
+        transactionManager.commit();
 
-        Transaction currentTrans = transactionManager.getTransaction();
-        TestResource res1, res2;
-        currentTrans.enlistResource( res1 = new TestResource() );
-        currentTrans.enlistResource( res2 = new TestResource() );
+        transactionManager.commit();
 
-        currentTrans.delistResource( res2, XAResource.TMSUCCESS );
-        currentTrans.delistResource( res1, XAResource.TMSUCCESS );
+        myOA.destroy();
+        myORB.shutdown();
 
-        transactionManager.commit();
+    }
+    
+    @Test
+    public void testDisabled () throws Exception
+    {
+        ORB myORB = null;
+        RootOA myOA = null;
 
+        myORB = ORB.getInstance("test");
+        myOA = OA.getRootOA(myORB);
+
+        myORB.initORB(new String[] {}, null);
+        myOA.initOA();
+
+        ORBManager.setORB(myORB);
+        ORBManager.setPOA(myOA);
+
+        jtaPropertyManager.getJTAEnvironmentBean().setJtaTMImplementation(com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple.class.getName());
+        jtaPropertyManager.getJTAEnvironmentBean().setJtaUTImplementation(com.arjuna.ats.internal.jta.transaction.jts.UserTransactionImple.class.getName());
+        jtaPropertyManager.getJTAEnvironmentBean().setSupportSubtransactions(false);
+
+        javax.transaction.TransactionManager transactionManager = com.arjuna.ats.jta.TransactionManager.transactionManager();
+
+        transactionManager.begin();
+
+        try
+        {
+            transactionManager.begin();
+            
+            fail();
+        }
+        catch (final NotSupportedException ex)
+        {
+        }
+
         transactionManager.commit();
 
         myOA.destroy();

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/build.xml
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/build.xml	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/build.xml	2010-03-13 21:06:07 UTC (rev 32068)
@@ -103,11 +103,8 @@
                     <exclude name="**/utils/ResourceTrace.java"/>
                     <exclude name="**/utils/Util.java"/>
 
-
-                    <exclude name="**/HeuristicTest.java"/>
-                    <exclude name="**/TransactionTest1.java"/>
                     <exclude name="**/TransactionTest2.java"/>
-                    <exclude name="**/CheckedTransactions.java"/>
+                	<exclude name="**/CheckedTransactions.java"/>
                     <exclude name="**/GridTest.java"/>
                     <exclude name="**/remote/**"/>
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/ControlWrapper.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/ControlWrapper.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/ControlWrapper.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -36,7 +36,6 @@
 import com.arjuna.ats.arjuna.coordinator.ActionStatus;
 
 import com.arjuna.ats.jts.exceptions.ExceptionCodes;
-import com.arjuna.ats.jts.utils.*;
 import com.arjuna.ats.jts.logging.*;
 
 import com.arjuna.ats.internal.jts.utils.*;
@@ -60,7 +59,6 @@
 import org.omg.CORBA.OBJECT_NOT_EXIST;
 import org.omg.CORBA.SystemException;
 import org.omg.CORBA.UNKNOWN;
-import org.omg.CORBA.BAD_OPERATION;
 import org.omg.CORBA.INVALID_TRANSACTION;
 import org.omg.CORBA.TRANSACTION_ROLLEDBACK;
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/coordinator/CheckedActions.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/coordinator/CheckedActions.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/coordinator/CheckedActions.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -59,11 +59,11 @@
     public static final synchronized void set (CheckedAction ca) throws SystemException
     {
     	if (otsCheckedAction == null)
-    	    otsCheckedAction = new Hashtable();
+    	    otsCheckedAction = new Hashtable<String, CheckedAction>();
     
     	otsCheckedAction.put(ThreadUtil.getThreadId(), ca);
     }
 
-    private static Hashtable otsCheckedAction = null;
+    private static Hashtable<String, CheckedAction> otsCheckedAction = null;
 
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/CurrentImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/CurrentImple.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/CurrentImple.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -31,8 +31,6 @@
 
 package com.arjuna.ats.internal.jts.orbspecific;
 
-import com.arjuna.orbportability.*;
-
 import org.omg.CosTransactions.*;
 
 import com.arjuna.ArjunaOTS.*;
@@ -49,18 +47,11 @@
 import com.arjuna.ats.internal.jts.orbspecific.TransactionFactoryImple;
 import com.arjuna.ats.internal.jts.orbspecific.coordinator.ArjunaTransactionImple;
 
-import com.arjuna.ats.internal.arjuna.thread.ThreadActionData;
-
-import com.arjuna.ats.arjuna.common.*;
-import com.arjuna.ats.arjuna.coordinator.BasicAction;
 import com.arjuna.ats.arjuna.coordinator.CheckedAction;
 import com.arjuna.ats.arjuna.coordinator.TxControl;
 
 import com.arjuna.common.util.logging.*;
 
-import java.io.PrintStream;
-import java.util.*;
-import java.lang.Object;
 import org.omg.CORBA.*;
 
 import org.omg.CosTransactions.SubtransactionsUnavailable;
@@ -77,7 +68,6 @@
 import org.omg.CORBA.INVALID_TRANSACTION;
 import org.omg.CORBA.TRANSACTION_ROLLEDBACK;
 import java.lang.OutOfMemoryError;
-import java.util.EmptyStackException;
 
 /**
  * The implementation of CosTransactions::Current.

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCManager.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCManager.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -43,7 +43,6 @@
 import com.arjuna.ats.jts.logging.jtsLogger;
 import com.arjuna.ats.arjuna.logging.FacilityCode;
 import com.arjuna.common.util.logging.*;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
 import com.arjuna.ats.internal.jts.recovery.recoverycoordinators.*;
 
 import com.arjuna.ats.internal.jts.ORBManager;
@@ -79,9 +78,9 @@
  *  Unlike some other RcvCoManager's, this does not create any real
  *  RecoveryCoordinator objects.
  */
-public JacOrbRCManager ()
+    public JacOrbRCManager()
     {
-	//	_ourPOA = JacOrbRCServiceInit.getRCPOA("transaction");
+        // _ourPOA = JacOrbRCServiceInit.getRCPOA("transaction");
     }
 
     /**
@@ -144,14 +143,14 @@
 	return rc;
     }
 
-public void destroy (RecoveryCoordinator rc) throws SystemException
+    public void destroy (RecoveryCoordinator rc) throws SystemException
     {
-	// does nothing for JacORB
+        // does nothing for JacORB
     }
 
-public void destroyAll (java.lang.Object[] params) throws SystemException
+    public void destroyAll (java.lang.Object[] params) throws SystemException
     {
-	// does nothing for JacORB
+        // does nothing for JacORB
     }
 
     private final synchronized void initialise ()

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCServiceInit.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -247,6 +247,9 @@
     {
         POA ourPOA = getRCPOA("recovery_coordinator");
 
+        if (ourPOA == null)  // shortcut
+            return false;
+        
         Implementations.initialise();
         
         try

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCShutdown.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCShutdown.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRCShutdown.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -33,17 +33,17 @@
 
 import com.arjuna.orbportability.oa.PreShutdown;
 
-class JacOrbRCShutdown extends PreShutdown
+public class JacOrbRCShutdown extends PreShutdown
 {
 
-public JacOrbRCShutdown ()
+    public JacOrbRCShutdown()
     {
         super("JacOrbRCShutdown");
     }
 
-public void work ()
+    public void work ()
     {
         JacOrbRCServiceInit.shutdownRCService();
     }
- 
+
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRecoveryInit.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRecoveryInit.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/JacOrbRecoveryInit.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -31,24 +31,12 @@
 
 package com.arjuna.ats.internal.jts.orbspecific.jacorb.recoverycoordinators;
 
-import com.arjuna.ats.arjuna.common.*;
-
-import com.arjuna.orbportability.orb.Attribute;
-import com.arjuna.ats.internal.jts.recovery.RecoveryCreator;
 import com.arjuna.ats.internal.jts.recovery.recoverycoordinators.*;
 
-import org.omg.CORBA.*;
-import org.omg.PortableServer.*;
-import org.omg.CosTransactions.*;
-
 import com.arjuna.ats.jts.logging.*;
 import com.arjuna.common.util.logging.*;
 import com.arjuna.ats.arjuna.logging.FacilityCode;
 
-import org.omg.PortableInterceptor.*;
-import org.omg.CosNaming.*;
-import org.omg.CORBA.Any;
-
 /**
  * Initialises JacORB RecoveryCoordinator IOR creation mechanism
  *

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TopLevelTransactionRecoveryModule.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TopLevelTransactionRecoveryModule.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TopLevelTransactionRecoveryModule.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -31,29 +31,15 @@
 
 package com.arjuna.ats.internal.jts.recovery.transactions;
 
-import org.omg.CosTransactions.*;
-
-import java.util.*;
-
 import com.arjuna.ats.internal.jts.orbspecific.coordinator.ArjunaTransactionImple;
-import com.arjuna.ats.internal.jts.orbspecific.interposition.*;
 
-import com.arjuna.ats.arjuna.common.*;
-import com.arjuna.ats.arjuna.coordinator.*;
-import com.arjuna.ats.arjuna.objectstore.*;
-import com.arjuna.ats.arjuna.*;
-import com.arjuna.ats.arjuna.state.*;
-import com.arjuna.ats.arjuna.utils.*;
-import com.arjuna.ats.arjuna.exceptions.*;
 import com.arjuna.ats.arjuna.recovery.RecoveryModule;
 
 import com.arjuna.ats.jts.logging.jtsLogger;
 import com.arjuna.ats.arjuna.logging.FacilityCode;
 import com.arjuna.common.util.logging.*;
 
-import java.io.IOException;
 
-
 // todo - make add a protected getTransactionType() method
 
 /**

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TransactionRecoveryModule.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TransactionRecoveryModule.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TransactionRecoveryModule.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -38,7 +38,6 @@
 import com.arjuna.ats.arjuna.common.*;
 import com.arjuna.ats.arjuna.coordinator.*;
 import com.arjuna.ats.arjuna.objectstore.*;
-import com.arjuna.ats.arjuna.*;
 import com.arjuna.ats.arjuna.state.*;
 import com.arjuna.ats.internal.arjuna.common.UidHelper;
 import com.arjuna.ats.jts.utils.*;
@@ -48,8 +47,6 @@
 import com.arjuna.ats.arjuna.logging.FacilityCode;
 import com.arjuna.common.util.logging.*;
 
-import java.io.IOException;
-
 /**
  * This class is a plug-in module for the recovery manager.  This is a
  * generic class from which TopLevel and Server transaction recovery

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/resources/ExtendedResourceRecord.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/resources/ExtendedResourceRecord.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/resources/ExtendedResourceRecord.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -86,8 +86,8 @@
  * @version $Id: ExtendedResourceRecord.java 2342 2006-03-30 13:06:17Z  $
  * @since JTS 1.0.
  * 
- * @message com.arjuna.ats.internal.jts.resources.errgenerr {0} caught
- *          exception: {1}
+ * @message com.arjuna.ats.internal.jts.resources.errgenerr {0} caught exception: {1}
+ * @message com.arjuna.ats.internal.jts.resources.noparent {0} has no parent transaction!
  */
 
 public class ExtendedResourceRecord extends
@@ -349,6 +349,12 @@
 		}
 		catch (SystemException ex)
 		{
+	                  if (jtsLogger.loggerI18N.isWarnEnabled())
+	                        {
+	                                jtsLogger.loggerI18N.warn("com.arjuna.ats.internal.jts.resources.errgenerr", new Object[]
+	                                { "ExtendedResourceRecord.nestedAbort", ex });
+	                        }
+	                  
 			return TwoPhaseOutcome.FINISH_ERROR;
 		}
 
@@ -391,7 +397,7 @@
 
 				_currentTransaction = (ArjunaTransactionImple) _currentTransaction.parent();
 
-				ControlImple control = _currentTransaction.getControlHandle();
+				ControlImple control = ((_currentTransaction == null) ? null : _currentTransaction.getControlHandle());
 
 				if (control != null)
 				{
@@ -413,10 +419,26 @@
 				}
 			}
 			else
+			{
+			    if (jtsLogger.loggerI18N.isWarnEnabled())
+                            {
+                                    jtsLogger.loggerI18N.warn("com.arjuna.ats.internal.jts.resources.noparent", new Object[]
+                                    { get_uid() });
+                            }
+			    
 				o = TwoPhaseOutcome.FINISH_ERROR;
+			}
 		}
 		catch (Exception e)
 		{
+		    e.printStackTrace();
+		    
+	                  if (jtsLogger.loggerI18N.isWarnEnabled())
+	                        {
+	                                jtsLogger.loggerI18N.warn("com.arjuna.ats.internal.jts.resources.errgenerr", new Object[]
+	                                { "ExtendedResourceRecord.nestedCommit", e });
+	                        }
+		    
 			o = TwoPhaseOutcome.FINISH_ERROR;
 		}
 
@@ -456,6 +478,12 @@
 		}
 		catch (Exception e)
 		{
+	                  if (jtsLogger.loggerI18N.isWarnEnabled())
+	                        {
+	                                jtsLogger.loggerI18N.warn("com.arjuna.ats.internal.jts.resources.errgenerr", new Object[]
+	                                { "ExtendedResourceRecord.nestedPrepare", e });
+	                        }
+	                  
 			o = TwoPhaseOutcome.PREPARE_NOTOK;
 		}
 
@@ -558,6 +586,12 @@
 		}
 		catch (SystemException e5)
 		{
+	                  if (jtsLogger.loggerI18N.isWarnEnabled())
+	                        {
+	                                jtsLogger.loggerI18N.warn("com.arjuna.ats.internal.jts.resources.errgenerr", new Object[]
+	                                { "ExtendedResourceRecord.topLevelCommit", e5 });
+	                        }
+	                  
 			return TwoPhaseOutcome.FINISH_ERROR;
 		}
 
@@ -601,6 +635,12 @@
 		}
 		catch (Exception e)
 		{
+	                  if (jtsLogger.loggerI18N.isWarnEnabled())
+	                        {
+	                                jtsLogger.loggerI18N.warn("com.arjuna.ats.internal.jts.resources.errgenerr", new Object[]
+	                                { "ExtendedResourceRecord.topLevelPrepare", e });
+	                        }
+	                  
 			return TwoPhaseOutcome.PREPARE_NOTOK;
 		}
 
@@ -654,6 +694,12 @@
 		}
 		catch (Exception e5)
 		{
+	                  if (jtsLogger.loggerI18N.isWarnEnabled())
+	                        {
+	                                jtsLogger.loggerI18N.warn("com.arjuna.ats.internal.jts.resources.errgenerr", new Object[]
+	                                { "ExtendedResourceRecord.topLevelOnePhaseCommit", e5 });
+	                        }
+	                  
 			e5.printStackTrace();
 			
 			/*
@@ -700,7 +746,7 @@
 
 		return false;
 	}
-
+/*
 	public static AbstractRecord create ()
 	{
 		return new ExtendedResourceRecord();
@@ -710,7 +756,7 @@
 	{
 		toDelete = null;
 	}
-
+*/
 	public void print (PrintWriter strm)
 	{
 		super.print(strm);
@@ -1259,12 +1305,13 @@
 	{
 		try
 		{
-			OTSAbstractRecord otsARHandle = com.arjuna.ArjunaOTS.OTSAbstractRecordHelper.narrow(_resourceHandle);
+		    if (_otsARHandle == null)
+		        _otsARHandle = com.arjuna.ArjunaOTS.OTSAbstractRecordHelper.narrow(_resourceHandle);
 
-			if (otsARHandle == null)
-				throw new BAD_PARAM();
-			else
-				return otsARHandle;
+		    if (_otsARHandle == null)
+		        throw new BAD_PARAM();
+		    else
+		        return _otsARHandle;
 		}
 		catch (Exception e)
 		{
@@ -1280,6 +1327,7 @@
 	private Uid _recCoordUid;
 	private ArjunaTransactionImple _currentTransaction;
 	private boolean _propagateRecord;
+	private OTSAbstractRecord _otsARHandle;
 
 	// cached variables
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/heuristics/HeuristicTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/heuristics/HeuristicTest.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/heuristics/HeuristicTest.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -132,10 +132,8 @@
 
         System.out.println("Trying to determing final transaction outcome.");
 
-
         org.omg.CosTransactions.Status status = Status.StatusUnknown;
 
-
         try
         {
             if (coord != null)

Added: labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/transactions/CheckedActionsUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/transactions/CheckedActionsUnitTest.java	                        (rev 0)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/transactions/CheckedActionsUnitTest.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -0,0 +1,58 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors 
+ * as indicated by the @author tags. 
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors. 
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (C) 2004,
+ *
+ * Arjuna Technologies Ltd,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.  
+ *
+ * $Id: xidcheck.java 2342 2006-03-30 13:06:17Z  $
+ */
+
+package com.hp.mwtests.ts.jts.local.transactions;
+
+import org.junit.Test;
+
+import com.arjuna.ats.arjuna.coordinator.CheckedAction;
+import com.arjuna.ats.internal.jts.coordinator.CheckedActions;
+import com.hp.mwtests.ts.jts.resources.TestBase;
+
+import static org.junit.Assert.*;
+
+
+public class CheckedActionsUnitTest extends TestBase
+{
+    @Test
+    public void test () throws Exception
+    {
+        CheckedAction ca = new CheckedAction();
+        
+        CheckedActions.set(ca);
+        
+        assertEquals(CheckedActions.get(), ca);
+        
+        CheckedActions.remove();
+        
+        assertEquals(CheckedActions.get(), null);
+    }
+}

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/transactions/TransactionTest1.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/transactions/TransactionTest1.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/transactions/TransactionTest1.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -96,6 +96,8 @@
             try
             {
                 terminator.commit(true);
+                
+                fail();
             }
             catch (TRANSACTION_ROLLEDBACK  e)
             {
@@ -112,6 +114,8 @@
             try
             {
                 current.commit(true);
+                
+                fail();
             }
             catch (INVALID_TRANSACTION  e1)
             {
@@ -125,6 +129,8 @@
             try
             {
                 current.commit(true);
+                
+                fail();
             }
             catch (TRANSACTION_ROLLEDBACK  e1)
             {
@@ -155,6 +161,8 @@
             try
             {
                 terminator.commit(true);
+                
+                fail();
             }
             catch (TRANSACTION_ROLLEDBACK  e1)
             {
@@ -172,6 +180,8 @@
             try
             {
                 terminator.commit(true);
+                
+                fail();
             }
             catch (TRANSACTION_ROLLEDBACK  e1)
             {

Added: labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/orbspecific/recovery/JacORBRecoveryUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/orbspecific/recovery/JacORBRecoveryUnitTest.java	                        (rev 0)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/orbspecific/recovery/JacORBRecoveryUnitTest.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -0,0 +1,110 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors 
+ * as indicated by the @author tags. 
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors. 
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (C) 2004,
+ *
+ * Arjuna Technologies Ltd,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.  
+ *
+ * $Id: xidcheck.java 2342 2006-03-30 13:06:17Z  $
+ */
+
+package com.hp.mwtests.ts.jts.orbspecific.recovery;
+
+import org.junit.Test;
+import org.omg.CosTransactions.RecoveryCoordinator;
+
+import com.arjuna.ats.arjuna.common.Uid;
+import com.arjuna.ats.internal.jts.orbspecific.jacorb.recoverycoordinators.JacOrbRCManager;
+import com.arjuna.ats.internal.jts.orbspecific.jacorb.recoverycoordinators.JacOrbRCServiceInit;
+import com.arjuna.ats.internal.jts.orbspecific.jacorb.recoverycoordinators.JacOrbRCShutdown;
+import com.arjuna.ats.internal.jts.orbspecific.jacorb.recoverycoordinators.JacOrbRecoveryInit;
+import com.arjuna.ats.internal.jts.orbspecific.jacorb.recoverycoordinators.RecoverIOR;
+import com.hp.mwtests.ts.jts.resources.TestBase;
+
+import static org.junit.Assert.*;
+
+public class JacORBRecoveryUnitTest extends TestBase
+{
+    @Test
+    public void testORBRCManager () throws Exception
+    {
+        JacOrbRCManager manager = new JacOrbRCManager();
+        RecoveryCoordinator rc = manager.makeRC(new Uid(), new Uid(), new Uid(), false);
+        
+        assertTrue(rc == null);
+        
+        manager.destroy(rc);
+        manager.destroyAll(null);
+    }
+    
+    @Test
+    public void testORBRCShutdown () throws Exception
+    {
+        JacOrbRCShutdown shutdown = new JacOrbRCShutdown();
+        
+        shutdown.work();
+    }
+    
+    @Test
+    public void testInit () throws Exception
+    {
+        JacOrbRCServiceInit init = new JacOrbRCServiceInit();
+        
+        assertFalse(init.startRCservice());
+        
+        JacOrbRCServiceInit.shutdownRCService();
+        
+        assertTrue(JacOrbRCServiceInit.type() != null);
+    }
+    
+    @Test
+    public void testRecoveryInit () throws Exception
+    {
+        JacOrbRCServiceInit init = new JacOrbRCServiceInit();
+        
+        assertFalse(init.startRCservice());
+        
+        JacOrbRecoveryInit rinit = new JacOrbRecoveryInit();
+        
+        JacOrbRCServiceInit.shutdownRCService();
+    }
+    
+    @Test
+    public void testRecoverIOR () throws Exception
+    {
+        RecoverIOR ior = new RecoverIOR();
+        
+        try
+        {
+            String iorString = RecoverIOR.newObjectKey("foo", "bar");
+            
+            assertTrue(iorString != null);
+            
+            RecoverIOR.printIORinfo(iorString);
+        }
+        catch (final Exception ex)
+        {
+        }
+    }
+}

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/orbspecific/resources/DemoArjunaResource.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/orbspecific/resources/DemoArjunaResource.java	2010-03-12 21:54:48 UTC (rev 32067)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/orbspecific/resources/DemoArjunaResource.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -31,6 +31,7 @@
 
 package com.hp.mwtests.ts.jts.orbspecific.resources;
 
+import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.ats.internal.jts.OTSImpleManager;
 import com.arjuna.ats.internal.jts.ORBManager;
 import com.arjuna.ats.internal.jts.orbspecific.CurrentImple;
@@ -42,7 +43,7 @@
 import org.omg.CosTransactions.Unavailable;
 import org.omg.CORBA.SystemException;
 
-public class DemoArjunaResource extends com.arjuna.ArjunaOTS.ArjunaSubtranAwareResourcePOA
+public class DemoArjunaResource extends com.arjuna.ArjunaOTS.OTSAbstractRecordPOA
 {
 
     public DemoArjunaResource ()
@@ -115,7 +116,61 @@
 	System.out.println("DEMOARJUNARESOURCE : COMMIT_ONE_PHASE");
     }
 
+    public void alter (OTSAbstractRecord arg0)
+    {
+    }
+
+    public void merge (OTSAbstractRecord arg0)
+    {
+    }
+
+    public boolean propagateOnAbort ()
+    {
+        return false;
+    }
+
+    public boolean propagateOnCommit ()
+    {
+        return false;
+    }
+
+    public boolean saveRecord ()
+    {
+        return false;
+    }
+
+    public boolean shouldAdd (OTSAbstractRecord arg0)
+    {
+        return false;
+    }
+
+    public boolean shouldAlter (OTSAbstractRecord arg0)
+    {
+        return false;
+    }
+
+    public boolean shouldMerge (OTSAbstractRecord arg0)
+    {
+        return false;
+    }
+
+    public boolean shouldReplace (OTSAbstractRecord arg0)
+    {
+        return false;
+    }
+
+    public int type_id ()
+    {
+        return 101;
+    }
+
+    public String uid ()
+    {
+        return uid.stringForm();
+    }
+ 
+
     private ArjunaSubtranAwareResource ref;
- 
+    private Uid uid = new Uid();
 }
 

Added: labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/participants/ExtendedResourceUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/participants/ExtendedResourceUnitTest.java	                        (rev 0)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/participants/ExtendedResourceUnitTest.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -0,0 +1,128 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors 
+ * as indicated by the @author tags. 
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors. 
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (C) 2004,
+ *
+ * Arjuna Technologies Ltd,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.  
+ *
+ * $Id: xidcheck.java 2342 2006-03-30 13:06:17Z  $
+ */
+
+package com.hp.mwtests.ts.jts.participants;
+
+import java.io.ByteArrayOutputStream;
+import java.io.PrintWriter;
+
+import org.junit.Test;
+
+import com.arjuna.ats.arjuna.common.Uid;
+import com.arjuna.ats.arjuna.coordinator.TwoPhaseOutcome;
+import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.internal.jts.orbspecific.coordinator.ArjunaTransactionImple;
+import com.arjuna.ats.internal.jts.resources.ExtendedResourceRecord;
+import com.hp.mwtests.ts.jts.orbspecific.resources.DemoArjunaResource;
+import com.hp.mwtests.ts.jts.resources.TestBase;
+
+import static org.junit.Assert.*;
+
+public class ExtendedResourceUnitTest extends TestBase
+{
+    @Test
+    public void test () throws Exception
+    {
+        DemoArjunaResource ares = new DemoArjunaResource();
+        ArjunaTransactionImple tx = new ArjunaTransactionImple(null);
+        ExtendedResourceRecord res1 = new ExtendedResourceRecord(false, new Uid(), ares.getReference(), null, new Uid(), tx);
+        ExtendedResourceRecord res2 = new ExtendedResourceRecord(false, new Uid(), ares.getReference(), null, new Uid(), tx);
+        
+        assertTrue(res1.resourceHandle() != null);
+        assertFalse(res1.propagateOnAbort());
+        assertFalse(res1.propagateOnCommit());
+        assertTrue(res1.order().notEquals(Uid.nullUid()));
+        assertEquals(res1.typeIs(), 101);
+        assertTrue(res1.order() != null);
+        
+        res1.setValue(null);
+        res1.print(new PrintWriter(new ByteArrayOutputStream()));
+    }
+    
+    @Test
+    public void testNestedCommit () throws Exception
+    {
+        DemoArjunaResource ares = new DemoArjunaResource();
+        
+        OTSImpleManager.current().begin();
+        
+        ArjunaTransactionImple tx = OTSImpleManager.current().getControlWrapper().getImple().getImplHandle();
+        
+        OTSImpleManager.current().begin();
+        
+        ExtendedResourceRecord res = new ExtendedResourceRecord(false, new Uid(), ares.getReference(), tx.getControlHandle().get_coordinator(), new Uid(), OTSImpleManager.current().getControlWrapper().getImple().getImplHandle());
+        
+        assertEquals(res.nestedPrepare(), TwoPhaseOutcome.PREPARE_OK);
+        assertEquals(res.nestedCommit(), TwoPhaseOutcome.FINISH_OK);
+        
+        OTSImpleManager.current().rollback();
+        OTSImpleManager.current().rollback();
+    }
+    
+    @Test
+    public void testNestedAbort () throws Exception
+    {
+        DemoArjunaResource ares = new DemoArjunaResource();
+        
+        OTSImpleManager.current().begin();
+        
+        ArjunaTransactionImple tx = OTSImpleManager.current().getControlWrapper().getImple().getImplHandle();
+        
+        OTSImpleManager.current().begin();
+        
+        ExtendedResourceRecord res = new ExtendedResourceRecord(false, new Uid(), ares.getReference(), tx.getControlHandle().get_coordinator(), new Uid(), OTSImpleManager.current().getControlWrapper().getImple().getImplHandle());
+        
+        assertEquals(res.nestedPrepare(), TwoPhaseOutcome.PREPARE_OK);
+        assertEquals(res.nestedAbort(), TwoPhaseOutcome.FINISH_OK);
+        
+        OTSImpleManager.current().rollback();
+        OTSImpleManager.current().rollback();
+    }
+    
+    @Test
+    public void testNestedOnePhase () throws Exception
+    {
+        DemoArjunaResource ares = new DemoArjunaResource();
+        
+        OTSImpleManager.current().begin();
+        
+        ArjunaTransactionImple tx = OTSImpleManager.current().getControlWrapper().getImple().getImplHandle();
+        
+        OTSImpleManager.current().begin();
+        
+        ExtendedResourceRecord res = new ExtendedResourceRecord(false, new Uid(), ares.getReference(), tx.getControlHandle().get_coordinator(), new Uid(), OTSImpleManager.current().getControlWrapper().getImple().getImplHandle());
+        
+        assertEquals(res.nestedOnePhaseCommit(), TwoPhaseOutcome.FINISH_OK);
+        
+        OTSImpleManager.current().rollback();
+        OTSImpleManager.current().rollback();
+    }
+}

Added: labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/recovery/TopLevelTransactionUnitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/recovery/TopLevelTransactionUnitTest.java	                        (rev 0)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/recovery/TopLevelTransactionUnitTest.java	2010-03-13 21:06:07 UTC (rev 32068)
@@ -0,0 +1,51 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, Red Hat Middleware LLC, and individual contributors 
+ * as indicated by the @author tags. 
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors. 
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A 
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A 
+ * PARTICULAR PURPOSE.  See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (C) 2004,
+ *
+ * Arjuna Technologies Ltd,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.  
+ *
+ * $Id: xidcheck.java 2342 2006-03-30 13:06:17Z  $
+ */
+
+package com.hp.mwtests.ts.jts.recovery;
+
+import org.junit.Test;
+
+import com.arjuna.ats.internal.jts.recovery.transactions.TopLevelTransactionRecoveryModule;
+import com.hp.mwtests.ts.jts.resources.TestBase;
+
+import static org.junit.Assert.*;
+
+public class TopLevelTransactionUnitTest extends TestBase
+{
+    @Test
+    public void test () throws Exception
+    {
+        TopLevelTransactionRecoveryModule module = new TopLevelTransactionRecoveryModule();
+        
+        module.periodicWorkFirstPass();
+        module.periodicWorkSecondPass();
+    }
+}



More information about the jboss-svn-commits mailing list