[jboss-svn-commits] JBL Code SVN: r30253 - in labs/jbosstm/trunk: ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser and 17 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Thu Nov 19 15:27:57 EST 2009


Author: mmusgrov
Date: 2009-11-19 15:27:56 -0500 (Thu, 19 Nov 2009)
New Revision: 30253

Modified:
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/IToolInitializer.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ObjectStoreBrowserPlugin.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ObjectStoreCellRenderer.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/PluginClassloader.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/panels/ListViewEntry.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/panels/ObjectStoreViewEntry.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/rootprovider/providers/DefaultRootProvider.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/StateViewerInterface.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/StateViewersRepository.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/ArjunaTransactionWrapper.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/BasicActionInfo.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/TxInfoNode.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/TxInfoViewEntry.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/UidInfo.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/XAResourceListNode.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/XAResourceViewEntry.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/AtomicActionViewer.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/AtomicActionWrapper.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/icons/AtomicTransactionViewEntry.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/treenodes/ListEntryNode.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/build.xml
   labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ToolInitializer.java
   labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/AbstractRecordViewer.java
   labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/ArjunaTransactionViewer.java
   labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/FailedListNode.java
   labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/HeuristicListNode.java
   labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/PendingListNode.java
   labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/PreparedListNode.java
   labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/ReadOnlyListNode.java
   labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/LiveAtomicActionWrapper.java
   labs/jbosstm/trunk/ArjunaJTS/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/ExtendedResourceRecordViewer.java
   labs/jbosstm/trunk/ArjunaJTS/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/ResourceRecordViewer.java
   labs/jbosstm/trunk/qa/tests/scripts/README.txt
   labs/jbosstm/trunk/qa/tests/scripts/as-tests.xml
   labs/jbosstm/trunk/qa/tests/scripts/imports/test-config.xml
   labs/jbosstm/trunk/qa/tests/src/org/jboss/jbossts/qa/astests/ASCrashRecovery01/Test03.java
   labs/jbosstm/trunk/qa/tests/src/org/jboss/jbossts/qa/astests/taskdefs/TransactionLog.java
Log:
Make sure the correct viewers are loaded according to which JTA version is installed.

JBTM-658


Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/IToolInitializer.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/IToolInitializer.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/IToolInitializer.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -28,4 +28,5 @@
 public interface IToolInitializer
 {
     void initialize(ToolPlugin plugin);
+    boolean isJTS();
 }

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ObjectStoreBrowserPlugin.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ObjectStoreBrowserPlugin.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ObjectStoreBrowserPlugin.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -65,6 +65,7 @@
 
 	private BrowserFrame	        _browser = null;
 	private JMenuItem		        _menuItem = null;
+    private boolean                 _isJTS;
 
     /**
 	 * Initialise the plugin, many activities should be performed during this method:-
@@ -110,7 +111,7 @@
             throw new ToolPluginException("Cannot locate plugin initializer for plugin " + getClass().getName());
 
         /** Initialise the state viewers repository **/
-		StateViewersRepository.initialiseRepository(new File(getToolsFramework().getToolsDir().getFile(), PLUGINS_DIRECTORY));
+		StateViewersRepository.initialiseRepository(_isJTS, new File(getToolsFramework().getToolsDir().getFile(), PLUGINS_DIRECTORY));
         EntityViewerRepository.initialiseRepository(props);
 
         StateViewersRepository.setDefaultStateViewer(new DefaultStateViewer());
@@ -124,7 +125,9 @@
         {
             try
             {
-                ((IToolInitializer)Class.forName(cName).newInstance()).initialize(this);
+                IToolInitializer toolInitializer = (IToolInitializer)Class.forName(cName).newInstance();
+                toolInitializer.initialize(this);
+                _isJTS = toolInitializer.isJTS();
                 return true;
             }
             catch (Exception e)

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ObjectStoreCellRenderer.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ObjectStoreCellRenderer.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ObjectStoreCellRenderer.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -30,18 +30,12 @@
  */
 package com.arjuna.ats.tools.objectstorebrowser;
 
-import com.arjuna.ats.tools.objectstorebrowser.frames.BrowserFrame;
 import com.arjuna.ats.tools.objectstorebrowser.treenodes.ListNode;
 import com.arjuna.ats.tools.objectstorebrowser.treenodes.ObjectStoreBrowserNode;
 import com.arjuna.ats.tools.toolsframework.images.ImageCommon;
 
-import com.arjuna.ats.arjuna.objectstore.ObjectStore;
-import com.arjuna.ats.arjuna.state.InputObjectState;
-import com.arjuna.ats.arjuna.common.Uid;
-
 import javax.swing.tree.DefaultTreeCellRenderer;
 import javax.swing.tree.TreePath;
-import javax.swing.tree.DefaultMutableTreeNode;
 import javax.swing.*;
 import java.awt.*;
 

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/PluginClassloader.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/PluginClassloader.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/PluginClassloader.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -33,6 +33,7 @@
 
 import java.io.File;
 import java.io.FilenameFilter;
+import java.io.IOException;
 import java.util.jar.JarFile;
 import java.util.jar.Attributes;
 import java.util.jar.Manifest;
@@ -68,37 +69,37 @@
         ArrayList urls = new ArrayList();
         ArrayList<String> plugins = new ArrayList<String> ();
 
-        for (int count=0;count<files.length;count++)
+        for (File file : files)
         {
             try
             {
-                JarFile jarFile = new JarFile(files[count]);
+                JarFile jarFile = new JarFile(file);
 
                 Manifest jarManifest = jarFile.getManifest();
 
-                if ( jarManifest != null )
+                if (jarManifest != null)
                 {
                     Attributes jarAttrs = jarManifest.getAttributes(manifestSectionName);
 
-                    if ( jarAttrs != null )
+                    if (jarAttrs != null)
                     {
                         int index = 1;
                         String classname;
 
                         /** Get property.1, property.2, property.x .... **/
-                        while ( ( classname = jarAttrs.getValue(JAR_MANIFEST_PROPERTY_NAME + (index++)) ) != null )
+                        while ((classname = jarAttrs.getValue(JAR_MANIFEST_PROPERTY_NAME + (index++))) != null)
                         {
                             /** Add the URL of the file to urls list **/
-                            urls.add(files[count].toURL());
+                            urls.add(file.toURL());
                             /** Add the classname to the list - which will later be replaced with the actual class **/
                             plugins.add(classname);
                         }
                     }
                 }
             }
-            catch (java.io.IOException e)
+            catch (IOException e)
             {
-                System.err.println("An error occurred while trying to load plugin: "+files[count]);
+                System.err.println("An error occurred while trying to load plugin: " + file);
                 e.printStackTrace(System.err);
             }
 

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/panels/ListViewEntry.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/panels/ListViewEntry.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/panels/ListViewEntry.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -30,7 +30,6 @@
  */
 package com.arjuna.ats.tools.objectstorebrowser.panels;
 
-import com.arjuna.ats.tools.toolsframework.iconpanel.IconPanelEntry;
 import com.arjuna.ats.tools.objectstorebrowser.treenodes.*;
 
 public class ListViewEntry extends SubTreeViewEntry

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/panels/ObjectStoreViewEntry.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/panels/ObjectStoreViewEntry.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/panels/ObjectStoreViewEntry.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -30,7 +30,6 @@
  */
 package com.arjuna.ats.tools.objectstorebrowser.panels;
 
-import com.arjuna.ats.tools.toolsframework.iconpanel.IconPanelEntry;
 import com.arjuna.ats.tools.objectstorebrowser.treenodes.*;
 
 public class ObjectStoreViewEntry extends SubTreeViewEntry

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/rootprovider/providers/DefaultRootProvider.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/rootprovider/providers/DefaultRootProvider.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/rootprovider/providers/DefaultRootProvider.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -48,11 +48,11 @@
 
         if ( files != null )
         {
-            for (int count=0;count<files.length;count++)
+            for (File file : files)
             {
-                if ( files[count].isDirectory() )
+                if (file.isDirectory())
                 {
-                    roots.add(files[count].getName());
+                    roots.add(file.getName());
                 }
             }
         }

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/StateViewerInterface.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/StateViewerInterface.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/StateViewerInterface.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -31,11 +31,9 @@
 package com.arjuna.ats.tools.objectstorebrowser.stateviewers;
 
 import com.arjuna.ats.tools.objectstorebrowser.*;
-import com.arjuna.ats.tools.objectstorebrowser.panels.ObjectStoreViewEntry;
 import com.arjuna.ats.tools.objectstorebrowser.panels.StatePanel;
 import com.arjuna.ats.arjuna.objectstore.ObjectStore;
 import com.arjuna.ats.arjuna.exceptions.ObjectStoreException;
-import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.ats.tools.objectstorebrowser.treenodes.*;
 
 /**

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/StateViewersRepository.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/StateViewersRepository.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/StateViewersRepository.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -32,7 +32,6 @@
 
 import com.arjuna.ats.tools.objectstorebrowser.PluginClassloader;
 
-import java.util.Hashtable;
 import java.util.concurrent.ConcurrentMap;
 import java.util.concurrent.ConcurrentHashMap;
 import java.io.File;
@@ -46,7 +45,8 @@
 public class StateViewersRepository
 {
     private final static String STATE_VIEWER_JAR_PREFIX = "osbv-";
-    private final static String JAR_MANIFEST_SECTION_NAME = "arjuna-tools-objectstorebrowser";
+    private final static String JTA_JAR_MANIFEST_SECTION_NAME = "arjuna-tools-objectstorebrowser-jta";
+    private final static String JTS_JAR_MANIFEST_SECTION_NAME = "arjuna-tools-objectstorebrowser-jts";
     private final static String DEFAULT_ABSTRACT_RECORD_VIEWER = "com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.abstractrecord.AbstractRecordViewer";
 
     /** Store objectTypeName to stateViewer mappings **/
@@ -120,42 +120,47 @@
         return svi;
     }
 
-    public static void initialiseRepository(File pluginDir)
+    public static void initialiseRepository(String mananifestSection, File pluginDir)
     {
-	try
-	{
-	    PluginClassloader classloader = new PluginClassloader(STATE_VIEWER_JAR_PREFIX, null, JAR_MANIFEST_SECTION_NAME, pluginDir);
+	    PluginClassloader classloader = new PluginClassloader(STATE_VIEWER_JAR_PREFIX, null, mananifestSection, pluginDir);
 	    Object[] plugins = classloader.getPlugins();
-	    
-	    for (int count=0;count<plugins.length;count++)
-	    {
-                if ( plugins[count] instanceof StateViewerInterface )
+
+        for (Object plugin : plugins)
+        {
+            try
+            {
+                if (plugin instanceof StateViewerInterface)
                 {
-                    StateViewerInterface viewer = ((StateViewerInterface)plugins[count]);
+                    StateViewerInterface viewer = ((StateViewerInterface) plugin);
 
                     /** Get the type name and ensure the delimiters and the correct ones **/
                     String type = viewer.getType();
 
-                    StateViewersRepository.registerStateViewer( type, viewer );
+                    StateViewersRepository.registerStateViewer(type, viewer);
                 }
-                else
-		    if ( plugins[count] instanceof AbstractRecordStateViewerInterface )
-		    {
-			AbstractRecordStateViewerInterface viewer = ((AbstractRecordStateViewerInterface)plugins[count]);
+                else if (plugin instanceof AbstractRecordStateViewerInterface)
+                {
+                    AbstractRecordStateViewerInterface viewer = ((AbstractRecordStateViewerInterface) plugin);
 
-			/** Get the type name and ensure the delimiters and the correct ones **/
-			String type = viewer.getType();
+                    /** Get the type name and ensure the delimiters and the correct ones **/
+                    String type = viewer.getType();
 
-			StateViewersRepository.registerAbstractRecordStateViewer( type, viewer );
-		    }
-	    }
+                    StateViewersRepository.registerAbstractRecordStateViewer(type, viewer);
+                }
+            }
+            catch (ViewerAlreadyRegisteredException e)
+            {
+                // ignore
+            }
+        }
 	}
-	catch (Exception e)
-	{
-	    e.printStackTrace();
-	    
-	    throw new ExceptionInInitializerError("Failed to initiate object state viewers: "+e);
-	}
+
+    public static void initialiseRepository(boolean isJTS, File pluginDir)
+    {
+        initialiseRepository(JTA_JAR_MANIFEST_SECTION_NAME, pluginDir);
+
+        if (isJTS)
+            initialiseRepository(JTS_JAR_MANIFEST_SECTION_NAME, pluginDir);
     }
 
     public static void disposeRepository()

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/ArjunaTransactionWrapper.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/ArjunaTransactionWrapper.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/ArjunaTransactionWrapper.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -24,6 +24,7 @@
 import com.arjuna.ats.arjuna.coordinator.RecordList;
 import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.ats.arjuna.ObjectType;
+import com.arjuna.ats.arjuna.objectstore.ObjectStore;
 import com.arjuna.ats.arjuna.exceptions.ObjectStoreException;
 
 import java.util.Collection;
@@ -32,13 +33,37 @@
 public class ArjunaTransactionWrapper extends BasicAction implements BasicActionInfo
 {
     private String type;
+    private UidInfo uidInfo;
+    private ObjectStore os;
 
     public ArjunaTransactionWrapper(Uid objUid, String type)
     {
+        this(null, type, objUid);
+    }
+
+    public ArjunaTransactionWrapper(ObjectStore os, String type, Uid objUid)
+    {
         super(objUid, ObjectType.ANDPERSISTENT);
         this.type = type;
+        this.os = os;
+        uidInfo = new UidInfo(get_uid(), getClass().getName() + "@" + Integer.toHexString(hashCode()));
+        
+        try
+        {
+            uidInfo.setCommitted(os.read_committed(objUid, type));
+//            uidInfo.setUncommitted(os.read_uncommitted(objUid, type));
+        }
+        catch (ObjectStoreException e)
+        {
+            System.out.println("Error reading tx log record state: " + e.getMessage());
+        }
     }
 
+    public ObjectStore getStore()
+    {
+        return os;
+    }
+
     /**
      * Overloads StateManager.type()
      */
@@ -74,7 +99,7 @@
 
     public UidInfo getUidInfo()
     {
-        return new UidInfo(get_uid(), getClass().getName() + "@" + Integer.toHexString(hashCode()));
+        return uidInfo;
     }
 
     public int getTxTimeout()

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/BasicActionInfo.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/BasicActionInfo.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/BasicActionInfo.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -23,6 +23,7 @@
 import com.arjuna.ats.arjuna.coordinator.RecordList;
 import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.ats.arjuna.exceptions.ObjectStoreException;
+import com.arjuna.ats.arjuna.objectstore.ObjectStore;
 
 import java.util.Collection;
 
@@ -48,4 +49,5 @@
     String type();
     void remove() throws ObjectStoreException;
     boolean isLive();
+    ObjectStore getStore();
 }

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/TxInfoNode.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/TxInfoNode.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/TxInfoNode.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -32,6 +32,7 @@
 
 import javax.swing.*;
 import javax.swing.tree.TreePath;
+import javax.swing.tree.TreeNode;
 import java.awt.event.ActionListener;
 import java.awt.event.ActionEvent;
 
@@ -106,12 +107,13 @@
                     {
                         try
                         {
+                            TreeNode parent = getParent().getParent();
                             getAction().remove();
 
                             // the node should no longer exist so collapse the tree up to its parent.
-                            if (getParent().getParent() != null)
+                            if (parent != null)
                             {
-                                TreePath path = new TreePath(BrowserFrame.getTreeModel().getPathToRoot(getParent().getParent()));
+                                TreePath path = new TreePath(BrowserFrame.getTreeModel().getPathToRoot(parent));
                                 BrowserFrame.getTree().collapsePath(path);
                                 BrowserFrame.getTree().setSelectionPath(path);
                                 BrowserFrame.getTree().scrollPathToVisible(path);

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/TxInfoViewEntry.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/TxInfoViewEntry.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/TxInfoViewEntry.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -21,7 +21,6 @@
 package com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers;
 
 import com.arjuna.ats.tools.objectstorebrowser.panels.ListViewEntry;
-import com.arjuna.ats.tools.objectstorebrowser.panels.StatePanel;
 import com.arjuna.ats.tools.objectstorebrowser.treenodes.ObjectStoreBrowserNode;
 import com.arjuna.ats.tools.objectstorebrowser.frames.BrowserFrame;
 import com.arjuna.ats.tools.toolsframework.iconpanel.IconSelectionListener;

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/UidInfo.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/UidInfo.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/UidInfo.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -21,9 +21,7 @@
 package com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers;
 
 import com.arjuna.ats.arjuna.common.Uid;
-import com.arjuna.ats.arjuna.state.OutputBuffer;
-import com.arjuna.ats.arjuna.state.InputBuffer;
-import com.arjuna.ats.internal.arjuna.common.UidHelper;
+import com.arjuna.ats.arjuna.state.InputObjectState;
 import com.arjuna.ats.tools.objectstorebrowser.UidConverter;
 
 import javax.transaction.xa.Xid;
@@ -37,99 +35,101 @@
  */
 public class UidInfo
 {
-    private static DateFormat formatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
-    private static UidConverter uidConverter;
+	private static DateFormat formatter = new SimpleDateFormat("E, dd MMM yyyy HH:mm:ss Z");
+	private static UidConverter uidConverter;
 
-    public static void setUidConverter(UidConverter uidConverter)
-    {
-        UidInfo.uidConverter = uidConverter;
-    }
+	public static void setUidConverter(UidConverter uidConverter)
+	{
+		UidInfo.uidConverter = uidConverter;
+	}
 
-    private Uid uid;
-    private String instanceName;
-    private Long creationTime;
+	private Uid uid;
+	private String instanceName;
+	private HeaderInfo header;
 
-    public UidInfo(Uid uid, String instanceName)
-    {
-        this.uid = uid;
-        this.instanceName = instanceName;
-    }
+	public UidInfo(Uid uid, String instanceName)
+	{
+		this.uid = uid;
+		this.instanceName = instanceName;
+	}
 
-    public Uid getUid()
-    {
-        return uid;
-    }
+	public Uid getUid()
+	{
+		return uid;
+	}
 
-    public String getInstanceName()
-    {
-        return instanceName;
-    }
+	public String getInstanceName()
+	{
+		return instanceName;
+	}
 
     public long getCreationTime()
-    {
-        if (creationTime == null)
-            creationTime = getCreationTime(uid);
+	{
+		return header != null ? header.birthDate : -1;
+	}
 
-        return creationTime;
-    }
+	public long getAge()
+	{
+		return (getCreationTime() < 0 ? -1 : (System.currentTimeMillis() / 1000) - getCreationTime());
+	}
 
-    public long getAge()
-    {
-        return (getCreationTime() < 0 ? -1 : (System.currentTimeMillis() / 1000) - getCreationTime());
-    }
+	// static utility methods
+	public static String formatTime(long seconds)
+	{
+		return seconds < 0 ? "" : formatter.format(new Date(seconds * 1000L));
+	}
 
-    // static utility methods
-    public static String formatTime(long seconds)
-    {
-        return seconds < 0 ? "" : formatter.format(new Date(seconds * 1000L));
-    }
+	public static Uid toUid(Xid xid)
+	{
+		return uidConverter.toUid(xid);
+	}
 
-    public static Uid toUid(Xid xid)
-    {
-        return uidConverter.toUid(xid);
-    }
+	private static String inet4AddressToString(int ip)
+	{
+		StringBuffer sb = new StringBuffer(15);
 
-    public static long getCreationTime(Xid xid)
-    {
-        return getCreationTime(toUid(xid));
-    }
+		for (int shift=24; shift > 0; shift -= 8)
+		{
+			sb.append( Integer.toString((ip >>> shift) & 0xff)).append('.');
+		}
 
-    public static long getCreationTime(Uid uid)
-    {
-        if (uid != null)
-        {
-            try
-            {
-                OutputBuffer outBuf = new OutputBuffer();
-                InputBuffer inBuf;
+		return sb.append( Integer.toString(ip & 0xff)).toString();
+	}
 
-                UidHelper.packInto(uid, outBuf);
-                inBuf = new InputBuffer(outBuf.buffer());
+	public void setCommitted(InputObjectState os)
+	{
+		try {
+			header = new HeaderInfo(os);
+		} catch (IOException e) {
+		}
+	}
 
-                //host = inet4AddressToString(inBuf.unpackInt());
-                inBuf.unpackInt();
-                inBuf.unpackInt(); // process
+	private class HeaderInfo
+	{
+		String state;
+		Uid txId = Uid.nullUid();
+		Uid processUid = Uid.nullUid();
+		long birthDate = -1;
 
-                return inBuf.unpackInt();
-//            int other = inBuf.unpackInt();
-            }
-            catch (IOException e)
-            {
-            }
-        }
+		HeaderInfo(InputObjectState os) throws IOException {
+			unpackHeader(os);
+		}
 
-        return -1;
-    }
+		void unpackHeader(InputObjectState os) throws IOException {
+			if (os != null) {
+				state = os.unpackString();
+				byte[] txIdBytes = os.unpackBytes();
+				txId = new Uid(txIdBytes);
 
-    private static String inet4AddressToString(int ip)
-    {
-        StringBuffer sb = new StringBuffer(15);
+				if (state.equals("#ARJUNA#")) {
+					if (!txId.equals(Uid.nullUid())) {
+						byte[] pUidBytes = os.unpackBytes();
+						processUid = new Uid(pUidBytes);
+					}
 
-        for (int shift=24; shift > 0; shift -= 8)
-        {
-            sb.append( Integer.toString((ip >>> shift) & 0xff)).append('.');
-        }
-
-        return sb.append( Integer.toString(ip & 0xff)).toString();
-    }
+					birthDate = os.unpackLong() / 1000L;
+				}
+			}
+		}
+	}
 }

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/XAResourceListNode.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/XAResourceListNode.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/XAResourceListNode.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -23,13 +23,11 @@
 import com.arjuna.ats.tools.objectstorebrowser.treenodes.ListNode;
 import com.arjuna.ats.tools.objectstorebrowser.treenodes.ListNodeListener;
 import com.arjuna.ats.tools.objectstorebrowser.treenodes.ListEntryNode;
-import com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.atomicaction.nodes.AtomicActionListNode;
 import com.arjuna.ats.tools.objectstorebrowser.panels.ObjectStoreViewEntry;
 import com.arjuna.ats.tools.objectstorebrowser.panels.StatePanel;
 import com.arjuna.ats.tools.objectstorebrowser.frames.BrowserFrame;
 import com.arjuna.ats.tools.toolsframework.iconpanel.IconSelectionListener;
 import com.arjuna.ats.tools.toolsframework.iconpanel.IconPanelEntry;
-import com.arjuna.ats.arjuna.coordinator.RecordList;
 
 import java.util.Collection;
 

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/XAResourceViewEntry.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/XAResourceViewEntry.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/XAResourceViewEntry.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -20,12 +20,10 @@
  */
 package com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers;
 
-import com.arjuna.ats.tools.objectstorebrowser.panels.ListViewEntry;
 import com.arjuna.ats.tools.objectstorebrowser.panels.StatePanel;
 import com.arjuna.ats.tools.objectstorebrowser.treenodes.ObjectStoreBrowserNode;
 import com.arjuna.ats.tools.objectstorebrowser.frames.BrowserFrame;
 import com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.atomicaction.icons.AtomicTransactionViewEntry;
-import com.arjuna.ats.tools.toolsframework.iconpanel.IconSelectionListener;
 import com.arjuna.ats.tools.toolsframework.iconpanel.IconPanelEntry;
 
 import java.util.Collection;

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/AtomicActionViewer.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/AtomicActionViewer.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/AtomicActionViewer.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -37,7 +37,6 @@
 import com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.atomicaction.icons.*;
 import com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.TxInfoNode;
 import com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.TxInfoViewEntry;
-import com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.ArjunaTransactionWrapper;
 import com.arjuna.ats.tools.objectstorebrowser.panels.*;
 
 import com.arjuna.ats.arjuna.objectstore.ObjectStore;
@@ -45,10 +44,8 @@
 import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.ats.arjuna.coordinator.RecordList;
 import com.arjuna.ats.arjuna.coordinator.BasicAction;
-import com.arjuna.ats.arjuna.ObjectType;
 
 import javax.swing.tree.*;
-import javax.swing.*;
 
 public class AtomicActionViewer implements StateViewerInterface
 {
@@ -67,7 +64,7 @@
                                 StatePanel infoPanel) throws ObjectStoreException
     {
         Uid theUid = uidNode.getUid();
-        AtomicActionWrapper aaw = new AtomicActionWrapper(theUid);
+        AtomicActionWrapper aaw = new AtomicActionWrapper(os, type, theUid);
 
         if (!activate(aaw))
             infoPanel.reportStatus("Unable to activate " + theUid);

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/AtomicActionWrapper.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/AtomicActionWrapper.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/AtomicActionWrapper.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -22,6 +22,7 @@
 
 import com.arjuna.ats.arjuna.coordinator.RecordList;
 import com.arjuna.ats.arjuna.AtomicAction;
+import com.arjuna.ats.arjuna.objectstore.ObjectStore;
 import com.arjuna.ats.arjuna.exceptions.ObjectStoreException;
 import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.XAResourceInfo;
@@ -45,11 +46,30 @@
 
 public class AtomicActionWrapper extends AtomicAction implements BasicActionInfo
 {
-    public AtomicActionWrapper(Uid objUid)
+    private UidInfo uidInfo;
+    private ObjectStore os;
+
+    public AtomicActionWrapper(ObjectStore os, String type, Uid objUid)
     {
         super(objUid);
+        this.os = os;
+        uidInfo = new UidInfo(get_uid(), getClass().getName() + "@" + Integer.toHexString(hashCode()));
+        
+        try
+        {
+            uidInfo.setCommitted(os.read_committed(objUid, type));
+//            uidInfo.setUncommitted(os.read_uncommitted(objUid, type));
+        }
+        catch (ObjectStoreException e)
+        {
+        }
     }
 
+    public ObjectStore getStore()
+    {
+        return os;
+    }
+    
     public RecordList getFailedList()
     {
         return failedList;
@@ -77,7 +97,7 @@
 
     public UidInfo getUidInfo()
     {
-        return new UidInfo(get_uid(), getClass().getName() + "@" + Integer.toHexString(hashCode()));
+        return uidInfo;
     }
 
     public int getTxTimeout()

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/icons/AtomicTransactionViewEntry.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/icons/AtomicTransactionViewEntry.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/icons/AtomicTransactionViewEntry.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -53,11 +53,11 @@
 
         panel.clear();
         panel.setType(getTypeName());
-        panel.setInfo(list.size()+" entries");
+        panel.setInfo(list == null ? "0 entries" : list.size() + " entries");
 
         updatePanelData(panel, ba);
 
-        if (list.size() != 0)
+        if (list != null && list.size() != 0)
             enableDetailsButton(panel, node);
 
         panel.repaint();

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/treenodes/ListEntryNode.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/treenodes/ListEntryNode.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/treenodes/ListEntryNode.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -20,8 +20,6 @@
  */
 package com.arjuna.ats.tools.objectstorebrowser.treenodes;
 
-import com.arjuna.ats.arjuna.coordinator.AbstractRecord;
-
 /*
  * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004
  *

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/build.xml
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/build.xml	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/build.xml	2009-11-19 20:27:56 UTC (rev 30253)
@@ -86,14 +86,16 @@
                 includes="com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/**/*.class"
                 excludes="com/arjuna/ats/tools/toolsframework/**"/>
             <manifest>
-                <section name="arjuna-tools-objectstorebrowser">
+                <section name="arjuna-tools-objectstorebrowser-jta">
                     <attribute name="plugin-classname-1" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.atomicaction.AtomicActionViewer"/>
-                    <attribute name="plugin-classname-3" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.arjunatransaction.ArjunaTransactionViewer"/>
+                    <attribute name="plugin-classname-2" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.abstractrecord.XAResourceRecordViewer"/>
+                    <attribute name="plugin-classname-3" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.abstractrecord.AbstractRecordViewer"/>
+                    <attribute name="plugin-classname-4" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.InFlightTransactionViewer"/>
+                </section>
+                <section name="arjuna-tools-objectstorebrowser-jts">
+                    <attribute name="plugin-classname-1" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.arjunatransaction.ArjunaTransactionViewer"/>
                     <attribute name="plugin-classname-2" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.abstractrecord.ResourceRecordViewer"/>
-                    <attribute name="plugin-classname-4" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.abstractrecord.XAResourceRecordViewer"/>
-                    <attribute name="plugin-classname-5" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.abstractrecord.AbstractRecordViewer"/>
-                    <attribute name="plugin-classname-6" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.abstractrecord.ExtendedResourceRecordViewer"/>
-                    <attribute name="plugin-classname-7" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.InFlightTransactionViewer"/>
+                    <attribute name="plugin-classname-3" value="com.arjuna.ats.tools.objectstorebrowser.stateviewers.viewers.abstractrecord.ExtendedResourceRecordViewer"/>
                 </section>
             </manifest>
         </jar>
@@ -123,4 +125,4 @@
 
     </target>
 
-</project>
\ No newline at end of file
+</project>

Modified: labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ToolInitializer.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ToolInitializer.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/ToolInitializer.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -14,16 +14,27 @@
 
 public class ToolInitializer implements IToolInitializer
 {
-    static String JTS_TM = "com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple";
+    static String JTS_TM_CLASSNAME_STANDALONE =
+            "com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple";
+    static String JTS_TM_CLASSNAME_ATS =
+            "com.arjuna.ats.jbossatx.jts.TransactionManagerDelegate";
 
+    private boolean isJTS;
+
+    public boolean isJTS() {
+        return isJTS;
+    }
+
     public void initialize(ToolPlugin plugin)
     {
         String tmClassName = jtaPropertyManager.getJTAEnvironmentBean().getJtaTMImplementation();
+        isJTS = (JTS_TM_CLASSNAME_STANDALONE.equals(tmClassName)
+                || JTS_TM_CLASSNAME_ATS.equals(tmClassName));
 
         com.arjuna.ats.internal.jta.Implementations.initialise();   // needed for XAResourceRecord
 
         /* test whether we are using the JTS */
-        if (JTS_TM.equals(tmClassName))
+        if (isJTS)
         {
             try
             {

Modified: labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/AbstractRecordViewer.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/AbstractRecordViewer.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/AbstractRecordViewer.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -57,11 +57,10 @@
 
     protected void updateTableData(AbstractRecord record, StatePanel statePanel)
     {
-        UidInfo uidInfo = new UidInfo(record.order(), record.getClass().getName() + "@" + Integer.toHexString(record.hashCode()));
+        // abstract records do not store their creation time so use the transaction creation date
+        statePanel.setData("Creation Time", UidInfo.formatTime(actionInfo.getUidInfo().getCreationTime()));
+        statePanel.setData("Age (seconds)", String.valueOf(actionInfo.getUidInfo().getAge()));
 
-        statePanel.setData("Creation Time", UidInfo.formatTime(uidInfo.getCreationTime()));
-        statePanel.setData("Age (seconds)", String.valueOf(uidInfo.getAge()));
-
         statePanel.setData("Record Type", record.getClass().getName());
         statePanel.setData("Type", record.type());
         statePanel.setData("Uid", record.order().toString());
@@ -75,10 +74,10 @@
                               final ObjectStoreViewEntry entry,
                               final StatePanel statePanel) throws ObjectStoreException
     {
+        initRecord(action, record, entry);
+        
         updateTableData(record, statePanel);
 
-        initRecord(action, record, entry);
-
         statePanel.enableButton(StatePanel.FORGET_BUTTON_TEXT, new ActionListener() {
             public void actionPerformed(ActionEvent ae)
             {

Modified: labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/ArjunaTransactionViewer.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/ArjunaTransactionViewer.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/ArjunaTransactionViewer.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -67,7 +67,7 @@
                                 StatePanel infoPanel) throws ObjectStoreException
     {
         Uid theUid = uidNode.getUid();
-        ArjunaTransactionWrapper ba = new ArjunaTransactionWrapper(theUid, type);
+        ArjunaTransactionWrapper ba = new ArjunaTransactionWrapper(os, type, theUid);
         ListNode node;
         SubTreeViewEntry entry;
 

Modified: labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/FailedListNode.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/FailedListNode.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/FailedListNode.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -44,6 +44,6 @@
 
     public RecordList getList()
     {
-        return getAction().getFailedList();
+        return getAction().getFailedList() == null ? new RecordList() : getAction().getFailedList();
     }
 }

Modified: labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/HeuristicListNode.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/HeuristicListNode.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/HeuristicListNode.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -56,6 +56,6 @@
 
     public RecordList getList()
     {
-        return getAction().getHeuristicList();
+        return getAction().getHeuristicList() == null ? new RecordList() : getAction().getHeuristicList();
     }
 }

Modified: labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/PendingListNode.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/PendingListNode.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/PendingListNode.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -44,6 +44,6 @@
 
     public RecordList getList()
     {
-        return getAction().getPendingList();
+        return getAction().getPendingList() == null ? new RecordList() : getAction().getPendingList();
     } 
 }

Modified: labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/PreparedListNode.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/PreparedListNode.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/PreparedListNode.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -44,6 +44,6 @@
 
     public RecordList getList()
     {
-        return getAction().getPreparedList();
+        return getAction().getPreparedList() == null ? new RecordList() : getAction().getPreparedList();
     } 
 }

Modified: labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/ReadOnlyListNode.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/ReadOnlyListNode.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/arjunatransaction/nodes/ReadOnlyListNode.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -44,6 +44,6 @@
 
     public RecordList getList()
     {
-        return getAction().getReadOnlyList();
+        return getAction().getReadOnlyList() == null ? new RecordList() : getAction().getReadOnlyList();
     } 
 }

Modified: labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/LiveAtomicActionWrapper.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/LiveAtomicActionWrapper.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTA/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/atomicaction/LiveAtomicActionWrapper.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -44,7 +44,7 @@
 
     public LiveAtomicActionWrapper(Transaction delegate, Uid objUid, String type)
     {
-        super(objUid, type);  //XXX
+        super(objUid, type);
         uidInfo = new UidInfo(objUid, getClass().getName() + "@" + Integer.toHexString(hashCode()));
         this.delegate = delegate;
     }

Modified: labs/jbosstm/trunk/ArjunaJTS/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/ExtendedResourceRecordViewer.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/ExtendedResourceRecordViewer.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTS/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/ExtendedResourceRecordViewer.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -29,6 +29,11 @@
 
 public class ExtendedResourceRecordViewer extends ResourceRecordViewer //AbstractRecordViewer
 {
+	public ExtendedResourceRecordViewer() throws Exception
+	{
+		super();
+	}
+
     protected void updateTableData(AbstractRecord record, StatePanel statePanel)
     {
         super.updateTableData(record, statePanel);

Modified: labs/jbosstm/trunk/ArjunaJTS/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/ResourceRecordViewer.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/ResourceRecordViewer.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/ArjunaJTS/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/stateviewers/viewers/abstractrecord/ResourceRecordViewer.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -66,8 +66,9 @@
 
     /**
      * When this viewer is created we need to ensure that the ORB is initialised.
+     * @throws Exception e 
      */
-    public ResourceRecordViewer()
+    public ResourceRecordViewer() throws Exception
     {
         try
         {
@@ -85,7 +86,7 @@
         catch (Exception e)
         {
             /** The ORB has failed to initialise don't allow this plugin to be used **/
-            _orb = null;
+            throw e;
         }
     }
 

Modified: labs/jbosstm/trunk/qa/tests/scripts/README.txt
===================================================================
--- labs/jbosstm/trunk/qa/tests/scripts/README.txt	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/qa/tests/scripts/README.txt	2009-11-19 20:27:56 UTC (rev 30253)
@@ -1,6 +1,8 @@
 This directory contains ant build scripts for running TS tests with an AS under
 the DTF framework.
 
+It is currently broken (wrong class loader)
+
 To add new tests you may either add new targets to an existing script or write
 a new script. For an example of how to run a target under DTF please refer to
 the test selection jbossts-qa-as-crashrecovery01-testdefs.xml located in
@@ -10,8 +12,7 @@
 standalone mode you will need define a security policy and override the ant
 property product.dir (which controls where the tests will search for product
 resources) as follows:
-   export ANT_OPTS="-Djava.security.policy=../src/org/jboss/jbossts/qa/astests/resources/java.policy
--Dproduct.dir=../../build/"
+   export ANT_OPTS="-Djava.security.policy=../src/org/jboss/jbossts/qa/astests/resources/java.policy -Dproduct.dir=../../.."
 
 If the target product directory does not contain a directory called 'as'
 containing a JBOSS installation then the environment variable JBOSS_HOME will

Modified: labs/jbosstm/trunk/qa/tests/scripts/as-tests.xml
===================================================================
--- labs/jbosstm/trunk/qa/tests/scripts/as-tests.xml	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/qa/tests/scripts/as-tests.xml	2009-11-19 20:27:56 UTC (rev 30253)
@@ -5,31 +5,21 @@
 
   <property environment="env"/>
   <property name="jboss.home" value="${env.JBOSS_HOME}"/>
-  <property name="jboss.server.config" value="default"/>
-  <property name="product.dir" value="${env.DTF_HOME}/JBossTS-JTA-QA/"/>
+  <property name="xxproduct.dir" value="${env.DTF_HOME}/JBossTS-JTA-QA/"/>
+  <property name="product.dir" value="../../.."/>
+  <property name="astest.jar" value="qa/tests/build/astest.jar"/>
 
-  <property name="jbossts.common.jar.dir" value="${product.dir}/lib/ext"/>
-  <property name="astest.jar.dir" value="${product.dir}/qa/lib"/>
-  <property name="astest.jar.deploy.dir" value="qa/lib/"/>
-  <property name="jboss.server.manager.jar.dir" value="${product.dir}/qa/lib"/>
-  <property name="jboss.server.manager.jar.name" value="jboss-server-manager-0.1.1.GA.jar"/>
-
   <path id="astest.taskdef.classpath">
+    <pathelement location="${jboss.home}/client/jboss-remoting.jar"/>
     <pathelement location="${jboss.home}/client/jbossall-client.jar"/>
     <pathelement location="${jboss.home}/client/log4j.jar" />
     <pathelement location="${jboss.home}/client/jboss-logging-spi.jar" />
     <pathelement location="${jboss.home}/lib/trove.jar"/>
+    <pathelement location="."/>
 
-    <pathelement location="${jbossts.common.jar.dir}/jbossts-common.jar"/>
-    <pathelement location="${astest.jar.dir}/astest.jar"/>
-    <pathelement location="${jboss.server.manager.jar.dir}/${jboss.server.manager.jar.name}"/>
-
-    <!-- FIXME Does DTF need this fileset? If not it is needless. -->
-    <fileset dir="${product.dir}">
-       <include name="lib/*.jar"/>
-       <include name="lib/ext/*.jar"/>
-       <include name="qa/lib/*.jar"/>
-    </fileset>
+    <fileset dir="${product.dir}/install/lib" includes="**/*" />
+    <fileset dir="${product.dir}/qa/tests/build" includes="**/*" />
+    <fileset dir="${product.dir}/qa/ext" includes="**/*" />
   </path>
 
   <property name="node0" value="localhost" />
@@ -41,7 +31,7 @@
 standalone mode you will need define a security policy and override the ant
 property product.dir (which controls where the tests will search for product
 resources) as follows:${line.separator}
-   export ANT_OPTS=&quot;-Djava.security.policy=../src/org/jboss/jbossts/qa/astests/resources/java.policy -Dproduct.dir=../../build/&quot;
+   export ANT_OPTS=&quot;-Djava.security.policy=../src/org/jboss/jbossts/qa/astests/resources/java.policy -Dproduct.dir=../build/&quot;
 ${line.separator}
 If the target product directory does not contain a directory called 'as'
 containing a JBOSS installation then the environment variable JBOSS_HOME will be used.
@@ -58,13 +48,27 @@
     -->
   <import file="imports/test-config.xml"/>
 
+  <target name="testhalt">
+    <astest:server method="deploy" serverName="jts" waitFor="10000">
+      <deploy from="${astest.jar}" to="deploy/astest.jar" />
+    </astest:server>
+    <astest:action abortOnFail="false" impl="org.jboss.jbossts.qa.astests.ASCrashRecovery01.Test03">
+        <param key="name" value="testhalt" />
+        <param key="specs" value="none,commit_halt" />
+        <param key="serverName" value="jts" />
+    </astest:action>
+    <astest:server method="undeploy" serverName="jts" >
+      <undeploy from="deploy/astest.jar" />
+    </astest:server>
+  </target>
+
   <target name="test4">
     <!--
         start a server identified by the name default (specified in the imported config file)
         and deploy one artifact
       -->
     <astest:server method="start" serverName="default" >
-      <deploy from="${astest.jar.deploy.dir}astest.jar" to="deploy/astest.jar" />
+      <deploy from="${astest.jar}" to="deploy/astest.jar" />
     </astest:server>
     <!--
         wait 10000 ms and then execute an action (TODO implement a method of detecting when the
@@ -85,7 +89,7 @@
 
   <target name="test5">
     <astest:server method="start" serverName="default" >
-      <deploy from="${astest.jar.deploy.dir}astest.jar" to="deploy/astest.jar" />
+      <deploy from="${astest.jar}" to="deploy/astest.jar" />
     </astest:server>
     <astest:action waitFor="10000" impl="org.jboss.jbossts.qa.astests.ASCrashRecovery01.Test03">
       <param key="name" value="test05" />
@@ -101,7 +105,7 @@
 
   <target name="test6">
     <astest:server method="start" serverName="default" >
-      <deploy from="${astest.jar.deploy.dir}astest.jar" to="deploy/astest.jar" />
+      <deploy from="${astest.jar}" to="deploy/astest.jar" />
     </astest:server>
     <astest:action waitFor="10000" impl="org.jboss.jbossts.qa.astests.ASCrashRecovery01.Test03">
       <param key="name" value="test06" />
@@ -127,7 +131,7 @@
     -->
   <target name="testjta">
     <astest:server method="deploy" serverName="jta" waitFor="10000">
-      <deploy from="${astest.jar.deploy.dir}astest.jar" to="deploy/astest.jar" />
+      <deploy from="${astest.jar}" to="deploy/astest.jar" />
     </astest:server>
     <parallel>
       <astest:action abortOnFail="false" impl="org.jboss.jbossts.qa.astests.ASCrashRecovery01.Test03">
@@ -149,11 +153,16 @@
 
   <target name="testjts">
     <astest:server method="deploy" serverName="jts" waitFor="10000">
-      <deploy from="${astest.jar.deploy.dir}astest.jar" to="deploy/astest.jar" />
+      <deploy from="${astest.jar}" to="deploy/astest.jar" />
     </astest:server>
     <parallel>
       <astest:action abortOnFail="false" impl="org.jboss.jbossts.qa.astests.ASCrashRecovery01.Test03">
         <param key="name" value="testjts" />
+        <param key="specs" value="none,commit_halt" />
+        <param key="serverName" value="jts" />
+      </astest:action>
+      <astest:action abortOnFail="false" impl="org.jboss.jbossts.qa.astests.ASCrashRecovery01.Test03">
+        <param key="name" value="testjts" />
         <param key="specs" value="none,none,none,commit_ex,commit_ex" />
         <param key="serverName" value="jts" />
       </astest:action>
@@ -181,7 +190,7 @@
 
   <target name="as-tests-jta">
     <astest:server method="start" serverName="crashrecovery-jta" >
-      <deploy from="${astest.jar.deploy.dir}astest.jar" to="deploy/astest.jar" />
+      <deploy from="${astest.jar}" to="deploy/astest.jar" />
     </astest:server>
     <parallel>
       <astest:action abortOnFail="false" impl="org.jboss.jbossts.qa.astests.ASCrashRecovery01.Test03">
@@ -203,7 +212,7 @@
 
   <target name="as-tests-jts">
     <astest:server method="start" serverName="crashrecovery-jts" >
-      <deploy from="${astest.jar.deploy.dir}astest.jar" to="deploy/astest.jar" />
+      <deploy from="${astest.jar}" to="deploy/astest.jar" />
     </astest:server>
     <parallel>
       <astest:action abortOnFail="false" impl="org.jboss.jbossts.qa.astests.ASCrashRecovery01.Test03">

Modified: labs/jbosstm/trunk/qa/tests/scripts/imports/test-config.xml
===================================================================
--- labs/jbosstm/trunk/qa/tests/scripts/imports/test-config.xml	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/qa/tests/scripts/imports/test-config.xml	2009-11-19 20:27:56 UTC (rev 30253)
@@ -1,5 +1,11 @@
 <project name="as-tests-server-config" default="help"
          xmlns:astest="http://jboss.org/ns/test/ant/astest">
+<!--
+  <taskdef name="astest:loader" classname="org.jboss.jbossts.qa.astests.taskdefs.ASTestClassLoader"/>
+  <astest:loader ref="astest.loader">
+    <classpath refid="astest.taskdef.classpath"/>
+  </astest:loader>
+  -->
 
   <taskdef name="config" classname="org.jboss.jbossts.qa.astests.taskdefs.ASTestConfig"
            uri="http://jboss.org/ns/test/ant/astest" loaderref="astest.loader">
@@ -11,6 +17,7 @@
     -->
   <taskdef name="server" classname="org.jboss.jbossts.qa.astests.taskdefs.ServerTask"
            uri="http://jboss.org/ns/test/ant/astest" loaderref="astest.loader">
+    <classpath refid="astest.taskdef.classpath"/>
   </taskdef>
 
   <!--
@@ -19,6 +26,7 @@
     -->
   <taskdef name="action" classname="org.jboss.jbossts.qa.astests.taskdefs.ASClientTask"
            uri="http://jboss.org/ns/test/ant/astest" loaderref="astest.loader">
+    <classpath refid="astest.taskdef.classpath"/>
   </taskdef>
 
   <!--
@@ -26,6 +34,7 @@
     -->
   <typedef name="spec" classname="org.jboss.jbossts.qa.astests.recovery.ASFailureSpec"
            uri="http://jboss.org/ns/test/ant/astest" loaderref="astest.loader">
+    <classpath refid="astest.taskdef.classpath"/>
   </typedef>
 
   <!--

Modified: labs/jbosstm/trunk/qa/tests/src/org/jboss/jbossts/qa/astests/ASCrashRecovery01/Test03.java
===================================================================
--- labs/jbosstm/trunk/qa/tests/src/org/jboss/jbossts/qa/astests/ASCrashRecovery01/Test03.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/qa/tests/src/org/jboss/jbossts/qa/astests/ASCrashRecovery01/Test03.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -38,294 +38,295 @@
 
 public class Test03 implements ClientAction
 {
-    // the longest time to wait in millis before declaring a test a failed (overridable)
-    private static final int MAX_TEST_TIME = 180000;
+	// the longest time to wait in millis before declaring a test a failed (overridable)
+	private static final int MAX_TEST_TIME = 180000;
 
-    private ASTestConfig config;
-    private boolean isCMT = false;
-    private boolean clientTx = false;
-    private boolean isDebug = false;
-    private boolean expectFailure = false;
-    private int maxTestTime = MAX_TEST_TIME;
+	private ASTestConfig config;
+	private boolean isCMT = false;
+	private boolean clientTx = false;
+	private boolean isDebug = false;
+	private boolean expectFailure = false;
+	private int maxTestTime = MAX_TEST_TIME;
 
-    private String storeDir = null;
-    private String storeImple = "HashedActionStore";
-    private String storeType = null; //"StateManager/BasicAction/TwoPhaseCoordinator/AtomicAction";
-    private TransactionLog store;
-    private int existingUids;
+	private String storeDir = null;
+//	private String storeImple = "HashedActionStore";
+	private String storeImple = "com.arjuna.ats.internal.arjuna.objectstore.HashedActionStore";
+	private String storeType = null; //"StateManager/BasicAction/TwoPhaseCoordinator/AtomicAction";
+	private TransactionLog store;
+	private int existingUids;
 
-    private String name = "Test";
-    private String serverName = "default";
+	private String name = "Test";
+	private String serverName = "default";
 
-    public boolean execute(ASTestConfig config, Map<String, String> params)
-    {
-        StringBuilder sb = new StringBuilder();
-        ASFailureSpec[] fspecs = null;
+	public boolean execute(ASTestConfig config, Map<String, String> params)
+	{
+		StringBuilder sb = new StringBuilder();
+		ASFailureSpec[] fspecs = null;
 
-        this.config = config;
+		this.config = config;
 
-        for (Map.Entry<String, String> me : params.entrySet())
-        {
-            String key = me.getKey().trim();
-            String val = me.getValue().trim();
+		for (Map.Entry<String, String> me : params.entrySet())
+		{
+			String key = me.getKey().trim();
+			String val = me.getValue().trim();
 
-            if ("name".equals(key))
-                name = val;
-            else if ("cmt".equals(key))
-                isCMT = val.equalsIgnoreCase("true");
-            else if ("debug".equals(key))
-                isDebug = val.equalsIgnoreCase("true");
-            else if ("serverName".equals(key))
-                serverName = val;
-            else if ("storeType".equals(key))
-                storeType = val;
-            else if ("storeDir".equals(key))
-                storeDir = val;
-            else if ("clientTx".equals(key))
-                clientTx = val.equalsIgnoreCase("true");
-            else if ("storeImple".equals(key))
-                storeImple = val;
-            else if ("testTime".equals(key))
-                maxTestTime = parseInt(val, "parameter testTime should represent a number of seconds: ");
-            else if ("specs".equals(key))
-                fspecs = parseSpecs(val, sb);
-            else if ("wait".equals(key))
-                suspendFor(Integer.parseInt(val));
-        }
+			if ("name".equals(key))
+				name = val;
+			else if ("cmt".equals(key))
+				isCMT = val.equalsIgnoreCase("true");
+			else if ("debug".equals(key))
+				isDebug = val.equalsIgnoreCase("true");
+			else if ("serverName".equals(key))
+				serverName = val;
+			else if ("storeType".equals(key))
+				storeType = val;
+			else if ("storeDir".equals(key))
+				storeDir = val;
+			else if ("clientTx".equals(key))
+				clientTx = val.equalsIgnoreCase("true");
+			else if ("storeImple".equals(key))
+				storeImple = val;
+			else if ("testTime".equals(key))
+				maxTestTime = parseInt(val, "parameter testTime should represent a number of seconds: ");
+			else if ("specs".equals(key))
+				fspecs = parseSpecs(val, sb);
+			else if ("wait".equals(key))
+				suspendFor(Integer.parseInt(val));
+		}
 
-        sb.insert(0, ":\n").insert(0, name).insert(0, "Executing test ");
+		sb.insert(0, ":\n").insert(0, name).insert(0, "Executing test ");
 
-        System.out.println(sb);
+		System.out.println(sb);
 
-        ClassLoader loader1 = Thread.currentThread().getContextClassLoader();
-        ClassLoader loader2 = this.getClass().getClassLoader();
+		ClassLoader loader1 = Thread.currentThread().getContextClassLoader();
+		ClassLoader loader2 = this.getClass().getClassLoader();
 
-        try
-        {
-            String serverPath = config.getServerPath(serverName);
+		try
+		{
+			String serverPath = config.getServerPath(serverName);
 
-            // switch class loaders since a custom ant task runs with a different loader from the loader
-            // that loader that loaded the class
-            Thread.currentThread().setContextClassLoader(loader2);
+			// switch class loaders since a custom ant task runs with a different loader from the loader
+			// that loader that loaded the class
+//			Thread.currentThread().setContextClassLoader(loader2);
 
-            // get a handle to the transaction logs
-            if (storeDir == null)
-                storeDir = serverPath + "data/tx-object-store";
-            else
-                storeDir = serverPath + storeDir;
+			// get a handle to the transaction logs
+			if (storeDir == null)
+				storeDir = serverPath + "data/tx-object-store";
+			else
+				storeDir = serverPath + storeDir;
 
-            store = new TransactionLog(storeDir, storeImple);
+			store = new TransactionLog(storeDir, storeImple);
 
-            if (expectFailure)
-            {
-                // this test may halt the VM so make sure the transaction log is empty
-                // before starting the test - then the pass/fail check is simply to
-                // test whether or not the log is empty (see recoverUids() below).
-                try
-                {
-                    store.clearXids(storeType);
-                }
-                catch (Exception ignore)
-                {
-                }
+			if (expectFailure)
+			{
+				// this test may halt the VM so make sure the transaction log is empty
+				// before starting the test - then the pass/fail check is simply to
+				// test whether or not the log is empty (see recoverUids() below).
+				try
+				{
+					store.clearXids(storeType);
+				}
+				catch (Exception ignore)
+				{
+				}
 
-                existingUids = getPendingUids();
-            }
+				existingUids = getPendingUids();
+			}
 
-            // run the crash test
-            return crashTest(fspecs);
-        }
-        catch (Exception e)
-        {
-            if (isDebug)
-                e.printStackTrace();
+			// run the crash test
+			return crashTest(fspecs);
+		}
+		catch (Exception e)
+		{
+			if (isDebug)
+				e.printStackTrace();
 
-            throw new BuildException(e);
-        }
-        finally
-        {
-            Thread.currentThread().setContextClassLoader(loader1);
-        }
-    }
+			throw new BuildException(e);
+		}
+		finally
+		{
+//			Thread.currentThread().setContextClassLoader(loader1);
+		}
+	}
 
-    public boolean cancel() throws UnsupportedOperationException
-    {
-        throw new UnsupportedOperationException("TODO");
-    }
+	public boolean cancel() throws UnsupportedOperationException
+	{
+		throw new UnsupportedOperationException("TODO");
+	}
 
-    private ASFailureSpec[] parseSpecs(String specArg, StringBuilder sb)
-    {
-        ASFailureSpec[] fspecs = config.parseSpecs(specArg);
+	private ASFailureSpec[] parseSpecs(String specArg, StringBuilder sb)
+	{
+		ASFailureSpec[] fspecs = config.parseSpecs(specArg);
 
-        for (ASFailureSpec spec : fspecs)
-        {
-            String name = (spec == null ? "INVALID" : spec.getName());
+		for (ASFailureSpec spec : fspecs)
+		{
+			String name = (spec == null ? "INVALID" : spec.getName());
 
-            if (spec != null && spec.willTerminateVM())
-                expectFailure = true;
+			if (spec != null && spec.willTerminateVM())
+				expectFailure = true;
 
-            sb.append("\t").append(name).append('\n');
-        }
+			sb.append("\t").append(name).append('\n');
+		}
 
-        return fspecs;
-    }
+		return fspecs;
+	}
 
-    private int parseInt(String intValue, String errorMessage) throws IllegalArgumentException
-    {
-        try
-        {
-            return Integer.parseInt(intValue);
-        }
-        catch (NumberFormatException e)
-        {
-            System.out.println(errorMessage + e.getMessage());
+	private int parseInt(String intValue, String errorMessage) throws IllegalArgumentException
+	{
+		try
+		{
+			return Integer.parseInt(intValue);
+		}
+		catch (NumberFormatException e)
+		{
+			System.out.println(errorMessage + e.getMessage());
 
-            throw new IllegalArgumentException(e);
-        }
-    }
+			throw new IllegalArgumentException(e);
+		}
+	}
 
-    // count how many pending transaction branches there are in the transaction log
-    private int getPendingUids()
-    {
-        try
-        {
-            return store.getIds(storeType).size();
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
+	// count how many pending transaction branches there are in the transaction log
+	private int getPendingUids()
+	{
+		try
+		{
+			return store.getIds(storeType).size();
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
 
-            return -1;
-        }
-    }
+			return -1;
+		}
+	}
 
-    private CrashRem lookup(String name) throws Exception
-    {
-        Object o = config.getNamingContext(serverName).lookup(name);
-        CrashRemHome home = (CrashRemHome) PortableRemoteObject.narrow(o, CrashRemHome.class);
+	private CrashRem lookup(String name) throws Exception
+	{
+		Object o = config.getNamingContext(serverName).lookup(name);
+		CrashRemHome home = (CrashRemHome) PortableRemoteObject.narrow(o, CrashRemHome.class);
 
-        return home.create();
-    }
+		return home.create();
+	}
 
-    private UserTransaction startTx() throws NamingException, SystemException, NotSupportedException
-    {
-        UserTransaction tx = (UserTransaction) config.getNamingContext(serverName).lookup("UserTransaction");
+	private UserTransaction startTx() throws NamingException, SystemException, NotSupportedException
+	{
+		UserTransaction tx = (UserTransaction) config.getNamingContext(serverName).lookup("UserTransaction");
 
-        tx.begin();
+		tx.begin();
 
-        return tx;
-    }
+		return tx;
+	}
 
-    private boolean crashTest(ASFailureSpec[] sa) throws Exception
-    {
-        UserTransaction tx = null;
+	private boolean crashTest(ASFailureSpec[] sa) throws Exception
+	{
+		UserTransaction tx = null;
 
-        try
-        {
-            CrashRem cr = lookup(isCMT ? CrashRem.CMT_JNDI_NAME : CrashRem.BMT_JNDI_NAME);
+		try
+		{
+			CrashRem cr = lookup(isCMT ? CrashRem.CMT_JNDI_NAME : CrashRem.BMT_JNDI_NAME);
 
-            if (clientTx)
-                tx = startTx();
+			if (clientTx)
+				tx = startTx();
 
-            String res = cr.testXA(sa);
+			String res = cr.testXA(sa);
 
-            return "Passed".equalsIgnoreCase(res);
-        }
-        catch (CannotConnectException e)
-        {
-            if (expectFailure)
-            {
-                print("Failure was expected: " + e.getMessage());
+			return "Passed".equalsIgnoreCase(res);
+		}
+		catch (CannotConnectException e)
+		{
+			if (expectFailure)
+			{
+				print("Failure was expected: " + e.getMessage());
 
-                return recoverUids();
-            }
-            else
-            {
-                System.err.println("XACrashTest:crashTest: Caught " + e);
+				return recoverUids();
+			}
+			else
+			{
+				System.err.println("XACrashTest:crashTest: Caught " + e);
 
-                e.printStackTrace();
-            }
-        }
-        catch (Throwable t)
-        {
-            t.printStackTrace();
-            System.err.println("XACrashTest:crashTest: Caught " + t);
-        }
-        finally {
-            if (clientTx)
-                try
-                {
-                    tx.commit();
-                }
-                catch (Throwable e)
-                {
-                    System.out.println("User tx commit failure: " + e.getMessage());
-                }
-        }
+				e.printStackTrace();
+			}
+		}
+		catch (Throwable t)
+		{
+			t.printStackTrace();
+			System.err.println("XACrashTest:crashTest: Caught " + t);
+		}
+		finally {
+			if (clientTx)
+				try
+				{
+					tx.commit();
+				}
+				catch (Throwable e)
+				{
+					System.out.println("User tx commit failure: " + e.getMessage());
+				}
+		}
 
-        return false;
-    }
+		return false;
+	}
 
-    /**
-     * Wait for any pending transactions to recover by restaring the AS.
-     * @return true if all pending branches have been recovered
-     * @throws IOException if the server cannot be started
-     */
-    private boolean recoverUids() throws IOException
-    {
-        int retryPeriod = 30000;
-        int maxWait = maxTestTime;
-        int pendingUids;
+	/**
+	 * Wait for any pending transactions to recover by restaring the AS.
+	 * @return true if all pending branches have been recovered
+	 * @throws IOException if the server cannot be started
+	 */
+	private boolean recoverUids() throws IOException
+	{
+		int retryPeriod = 30000;
+		int maxWait = maxTestTime;
+		int pendingUids;
 
-        do
-        {
-            pendingUids = getPendingUids();
+		do
+		{
+			pendingUids = getPendingUids();
 
-            if (pendingUids == -1)
-                return false;   // object store error
+			if (pendingUids == -1)
+				return false;   // object store error
 
-            if (pendingUids <= existingUids)
-                return true;    // all uids recovered
+			if (pendingUids <= existingUids)
+				return true;	// all uids recovered
 
-            pendingUids -= existingUids;
+			pendingUids -= existingUids;
 
-            print("waiting for " + pendingUids + " branches");
+			print("waiting for " + pendingUids + " branches");
 
-            // wait for the server to start up the first time through
-            if (maxWait == maxTestTime)
-                config.startServer(serverName);
+			// wait for the server to start up the first time through
+			if (maxWait == maxTestTime)
+				config.startServer(serverName);
 
-            suspendFor(retryPeriod);
-            maxWait -= retryPeriod;
-        } while (maxWait > 0);
+			suspendFor(retryPeriod);
+			maxWait -= retryPeriod;
+		} while (maxWait > 0);
 
-        // the test failed to recover some uids - clear them out ready for the next test
-        try
-        {
-            store.clearXids(storeType);
-        }
-        catch (Exception e)
-        {
-            e.printStackTrace();
-        }
+		// the test failed to recover some uids - clear them out ready for the next test
+		try
+		{
+			store.clearXids(storeType);
+		}
+		catch (Exception e)
+		{
+			e.printStackTrace();
+		}
 
-        return false;
-    }
+		return false;
+	}
 
-    private void suspendFor(int millis)
-    {
-        try
-        {
-            Thread.sleep(millis);
-        }
-        catch (InterruptedException e)
-        {
-            System.out.println("Test " + name + " interupted");
-        }
-    }
+	private void suspendFor(int millis)
+	{
+		try
+		{
+			Thread.sleep(millis);
+		}
+		catch (InterruptedException e)
+		{
+			System.out.println("Test " + name + " interupted");
+		}
+	}
 
-    static void print(String msg)
-    {
-        System.out.println(msg);
-    }
+	static void print(String msg)
+	{
+		System.out.println(msg);
+	}
 }

Modified: labs/jbosstm/trunk/qa/tests/src/org/jboss/jbossts/qa/astests/taskdefs/TransactionLog.java
===================================================================
--- labs/jbosstm/trunk/qa/tests/src/org/jboss/jbossts/qa/astests/taskdefs/TransactionLog.java	2009-11-19 13:59:04 UTC (rev 30252)
+++ labs/jbosstm/trunk/qa/tests/src/org/jboss/jbossts/qa/astests/taskdefs/TransactionLog.java	2009-11-19 20:27:56 UTC (rev 30253)
@@ -20,6 +20,7 @@
  */
 package org.jboss.jbossts.qa.astests.taskdefs;
 
+import com.arjuna.ats.arjuna.common.ObjectStoreEnvironmentBean;
 import com.arjuna.ats.arjuna.objectstore.ObjectStore;
 import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.ats.arjuna.exceptions.ObjectStoreException;
@@ -27,6 +28,7 @@
 import com.arjuna.ats.arjuna.AtomicAction;
 import com.arjuna.ats.arjuna.coordinator.TxControl;
 import com.arjuna.ats.internal.arjuna.common.UidHelper;
+import com.arjuna.ats.arjuna.common.arjPropertyManager;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -50,7 +52,8 @@
 
     private void init(String storeDir, String impleType)
     {
-        System.setProperty("com.arjuna.ats.arjuna.objectstore.objectStoreDir", storeDir);
+		ObjectStoreEnvironmentBean objectStoreEnvironmentBean = arjPropertyManager.getObjectStoreEnvironmentBean();
+		objectStoreEnvironmentBean.setObjectStoreDir(storeDir);
 
         if (impleType != null)
         {



More information about the jboss-svn-commits mailing list