[jboss-svn-commits] JBL Code SVN: r28936 - in labs/jbosstm/trunk: ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common and 44 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Aug 14 10:46:28 EDT 2009


Author: jhalliday
Date: 2009-08-14 10:46:26 -0400 (Fri, 14 Aug 2009)
New Revision: 28936

Added:
   labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/ConcatenationPrefix.java
Modified:
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBeanMBean.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Environment.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBeanMBean.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/arjPropertyManager.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/recoveryPropertyManager.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxControl.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/recovery/RecoveryEnvironment.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/gandiva/inventory/StaticInventory.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/ExpiredEntryMonitor.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/ExpiredTransactionStatusManagerScanner.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/PeriodicRecovery.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/RecActivatorLoader.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/utils/SocketProcessId.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/BeanPopulatorTest.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/JDBCInventory.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/LogStoreRecoveryTest.java
   labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/LogStoreTest2.java
   labs/jbosstm/trunk/ArjunaCore/jbossts-properties-arjunacore.xml
   labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/rootprovider/providers/DefaultRootProvider.java
   labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/common/Environment.java
   labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/internal/txoj/lockstore/BasicPersistentLockStore.java
   labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/Environment.java
   labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/txojPropertyManager.java
   labs/jbosstm/trunk/ArjunaJTA/jbossts-properties-arjunajta.xml
   labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/Environment.java
   labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/jdbcPropertyManager.java
   labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/logging/jdbcLogger.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore/XARecoveryModule.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/XAResourceErrorHandler.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/TransactionImple.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBeanMBean.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/jtaPropertyManager.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/logging/jtaLogger.java
   labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/utils/JNDIManager.java
   labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/basic/BeanPopulatorTest.java
   labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/nested/SimpleNestedTest.java
   labs/jbosstm/trunk/ArjunaJTS/jbossts-properties-arjunajts.xml
   labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java
   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/arjuna/ats/jtax/tests/implicit/server/ImplicitServer.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/JTATransactionCommitTest.java
   labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/nested/SimpleNestedTest.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/OTSImpleManager.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/lifecycle/ShutdownOTS.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/lifecycle/StartupOTS.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/ORBRunner.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/recovery/RecoveryEnablement.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/recovery/recoverycoordinators/GenericRecoveryCoordinator.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/ExpiredAssumedCompleteScanner.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/RecoveredServerTransaction.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TransactionCache.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/OTSManager.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/Environment.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBean.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBeanMBean.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/jtsPropertyManager.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/logging/jtsLogger.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/recovery/RecoveryEnvironment.java
   labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/timeout/DefaultTimeout.java
   labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/logging/XTSLogger.java
   labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/logging/jbossatxLogger.java
   labs/jbosstm/trunk/qa/tests/product/src/com/arjuna/ats/tools/perftest/product/JBossTSProduct.java
Log:
Added further bean based configuration, particularly for properties that use a name prefix to make a list e.g. recovery activators and other plugins. JBTM-596


Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBean.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBean.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -22,8 +22,13 @@
 
 import com.arjuna.common.internal.util.propertyservice.PropertyPrefix;
 import com.arjuna.common.internal.util.propertyservice.FullPropertyName;
+import com.arjuna.common.internal.util.propertyservice.ConcatenationPrefix;
 import com.arjuna.ats.arjuna.utils.Utility;
 
+import java.util.List;
+import java.util.Collections;
+import java.util.ArrayList;
+
 /**
  * A JavaBean containing assorted configuration properties for the core transaction system.
  *
@@ -35,8 +40,8 @@
     @FullPropertyName(name = "com.arjuna.ats.arjuna.common.propertiesFile")
     private String propertiesFile = "";
 
-//    @FullPropertyName(name = "com.arjuna.ats.internal.arjuna.inventory.staticInventoryImple")
-//    private String staticInventoryImple;
+    @ConcatenationPrefix(prefix = "com.arjuna.ats.internal.arjuna.inventory.staticInventoryImple")
+    private List<String> staticInventoryElements = Collections.emptyList();
 
     @FullPropertyName(name = "com.arjuna.ats.arjuna.common.varDir")
     private String varDir = null;
@@ -70,6 +75,20 @@
         this.propertiesFile = propertiesFile;
     }
 
+    public List<String> getStaticInventoryElements()
+    {
+        if(staticInventoryElements == null) {
+            return Collections.emptyList();
+        } else {
+            return new ArrayList<String>(staticInventoryElements);
+        }
+    }
+
+    public void setStaticInventoryElements(List<String> staticInventoryElements)
+    {
+        this.staticInventoryElements = new ArrayList<String>(staticInventoryElements);
+    }
+
     public String getVarDir()
     {
         return varDir;

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBeanMBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBeanMBean.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/CoreEnvironmentBeanMBean.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -20,6 +20,8 @@
  */
 package com.arjuna.ats.arjuna.common;
 
+import java.util.List;
+
 /**
  * A JMX MBean interface containing assorted configuration for the core transaction system.
  *
@@ -31,6 +33,10 @@
 
     void setPropertiesFile(String propertiesFile);
 
+    List<String> getStaticInventoryElements();
+
+    void setStaticInventoryElements(List<String> staticInventoryElements);
+
     String getVarDir();
 
     void setVarDir(String varDir);

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Environment.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Environment.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/Environment.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -89,8 +89,9 @@
  * @author Mark Little (mark at arjuna.com)
  * @version $Id: Environment.java 2342 2006-03-30 13:06:17Z  $
  * @since 1.0.
+ * @deprecated use CoordinatorEnvironentBean, CoreEnvironmentBean, ObjectStoreEnvironmentBean, RecoveryEnvironmentBean instead.
  */
-
+ at Deprecated
 public class Environment
 {
     public static final String PROPERTIES_FILE = "com.arjuna.ats.arjuna.common.propertiesFile";

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBean.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBean.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -22,10 +22,14 @@
 
 import com.arjuna.common.internal.util.propertyservice.PropertyPrefix;
 import com.arjuna.common.internal.util.propertyservice.FullPropertyName;
+import com.arjuna.common.internal.util.propertyservice.ConcatenationPrefix;
 import com.arjuna.ats.internal.arjuna.recovery.PeriodicRecovery;
 import com.arjuna.ats.arjuna.utils.Utility;
 
 import java.net.InetAddress;
+import java.util.List;
+import java.util.Collections;
+import java.util.ArrayList;
 
 /**
  * A JavaBean containing configuration properties for the recovery system.
@@ -46,10 +50,19 @@
     private int expiryScanInterval = 12; // hours
     private int transactionStatusManagerExpiryTime = 12; // hours
 
+    @ConcatenationPrefix(prefix = "com.arjuna.ats.arjuna.recovery.expiryScanner")
+    private List<String> expiryScanners = Collections.emptyList();
+
+    @ConcatenationPrefix(prefix = "com.arjuna.ats.arjuna.recovery.recoveryExtension")
+    private List<String> recoveryExtensions = Collections.emptyList();
+
+    @ConcatenationPrefix(prefix = "com.arjuna.ats.arjuna.recovery.recoveryActivator")
+    private List<String> recoveryActivators = Collections.emptyList();
+
     @FullPropertyName(name = "com.arjuna.ats.internal.arjuna.recovery.listener.timeoutsocket")
     private boolean timeoutSocket = false;
 
-//    public static final String PERIODIC_RECOVERY_PERIOD = "com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod" ;
+    //    public static final String PERIODIC_RECOVERY_PERIOD = "com.arjuna.ats.arjuna.recovery.periodicRecoveryPeriod" ;
     public int getPeriodicRecoveryPeriod()
     {
         return periodicRecoveryPeriod;
@@ -158,6 +171,48 @@
         this.transactionStatusManagerExpiryTime = transactionStatusManagerExpiryTime;
     }
 
+    public List<String> getExpiryScanners()
+    {
+        if(expiryScanners == null) {
+            return Collections.emptyList();
+        } else {
+            return new ArrayList<String>(expiryScanners);
+        }
+    }
+
+    public void setExpiryScanners(List<String> expiryScanners)
+    {
+        this.expiryScanners = new ArrayList<String>(expiryScanners);
+    }
+
+    public List<String> getRecoveryExtensions()
+    {
+        if(recoveryExtensions == null) {
+            return Collections.emptyList();
+        } else {
+            return new ArrayList<String>(recoveryExtensions);
+        }
+    }
+
+    public void setRecoveryExtensions(List<String> recoveryExtensions)
+    {
+        this.recoveryExtensions = new ArrayList<String>(recoveryExtensions);
+    }
+
+    public List<String> getRecoveryActivators()
+    {
+        if(recoveryActivators == null) {
+            return Collections.emptyList();
+        } else {
+            return new ArrayList<String>(recoveryActivators);
+        }
+    }
+
+    public void setRecoveryActivators(List<String> recoveryActivators)
+    {
+        this.recoveryActivators = new ArrayList<String>(recoveryActivators);
+    }
+
     public boolean isTimeoutSocket()
     {
         return timeoutSocket;

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBeanMBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBeanMBean.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/RecoveryEnvironmentBeanMBean.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -21,6 +21,7 @@
 package com.arjuna.ats.arjuna.common;
 
 import java.net.InetAddress;
+import java.util.List;
 
 /**
  * A JMX MBean interface containing configuration for the recovery system.
@@ -69,6 +70,18 @@
 
     void setTransactionStatusManagerExpiryTime(int transactionStatusManagerExpiryTime);
 
+    List<String> getExpiryScanners();
+
+    void setExpiryScanners(List<String> expiryScanners);
+
+    List<String> getRecoveryExtensions();
+
+    void setRecoveryExtensions(List<String> recoveryExtensions);
+
+    List<String> getRecoveryActivators();
+
+    void setRecoveryActivators(List<String> recoveryActivators);
+
     boolean isTimeoutSocket();
 
     void setTimeoutSocket(boolean timeoutSocket);

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/arjPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/arjPropertyManager.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/arjPropertyManager.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -49,6 +49,11 @@
         getPropertyManager();
     }
 
+    /**
+     * @deprecated use environment beans instead.
+     * @return
+     */
+    @Deprecated
     public static PropertyManager getPropertyManager()
     {
         return PropertyManagerFactory.getPropertyManagerForModule("arjuna", Environment.PROPERTIES_FILE);

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/recoveryPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/recoveryPropertyManager.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/common/recoveryPropertyManager.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -35,6 +35,11 @@
     private static final AtomicBoolean recoveryEnvironmentBeanInit = new AtomicBoolean(false);
     private static final RecoveryEnvironmentBean recoveryEnvironmentBean = new RecoveryEnvironmentBean();
 
+    /**
+     * @deprecated use RecoveryEnvironmentBean instead
+     * @return
+     */
+    @Deprecated
     public static PropertyManager getPropertyManager()
     {
         return PropertyManagerFactory.getPropertyManagerForModule("arjuna", Environment.PROPERTIES_FILE);

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxControl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxControl.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/coordinator/TxControl.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -418,8 +418,7 @@
 
 		if (writeNodeName)
 		{
-		    arjPropertyManager.getPropertyManager().setProperty(
-		            Environment.XA_NODE_IDENTIFIER, new String(xaNodeName));
+            arjPropertyManager.getCoreEnvironmentBean().setNodeIdentifier( new String(xaNodeName) );
 		}
 
         _enableTSM = arjPropertyManager.getCoordinatorEnvironmentBean().isTransactionStatusManagerEnable();

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/recovery/RecoveryEnvironment.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/recovery/RecoveryEnvironment.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/recovery/RecoveryEnvironment.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -33,7 +33,9 @@
 
 /**
  * Container for property names used by recovery
+ * @deprecated use RecoveryEnvironmentBean instead.
  */
+ at Deprecated
 public class RecoveryEnvironment
 {
     public static final String MODULE_PROPERTY_PREFIX  = "com.arjuna.ats.arjuna.recovery.recoveryExtension" ;

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/gandiva/inventory/StaticInventory.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/gandiva/inventory/StaticInventory.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/gandiva/inventory/StaticInventory.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -264,39 +264,25 @@
      * added dynamically. If we find them, instantiate them and
      * hope that works!
      */
-
-private synchronized final void initialise ()
+    private synchronized final void initialise ()
     {
-	Implementations.initialise();
+        Implementations.initialise();
 
-	Enumeration e = arjPropertyManager.getPropertyManager().propertyNames();
-	
-	if (e != null)
-	{
-	    while (e.hasMoreElements())
-	    {
-		String name = (String) e.nextElement();
-		
-		if (name.startsWith(com.arjuna.ats.arjuna.common.Environment.STATIC_INVENTORY_IMPLE))
-		{
-		    String className = arjPropertyManager.getPropertyManager().getProperty(name);
-
-		    try
-		    {
-			Class c = Thread.currentThread().getContextClassLoader().loadClass(className);
-			Object o = c.newInstance();
+        for(String className : arjPropertyManager.getCoreEnvironmentBean().getStaticInventoryElements()) {
+            try
+            {
+                Class c = Thread.currentThread().getContextClassLoader().loadClass(className);
+                Object o = c.newInstance();
                 if (o instanceof InventoryElement)
                     Inventory.inventory().addToList((InventoryElement) o);
             }
-		    catch (Exception ex)
-		    {
-			ex.printStackTrace();
-		    }
-		}
-	    }
-	}
+            catch (Exception ex)
+            {
+                ex.printStackTrace();
+            }
+        }
 
-	initialised = true;
+        initialised = true;
     }
     
 private static InventoryList headOfList = null;

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/ExpiredEntryMonitor.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/ExpiredEntryMonitor.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/ExpiredEntryMonitor.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -34,12 +34,9 @@
 import java.text.*;
 import java.util.Date;
 import java.util.Enumeration;
-import java.util.Properties;
 import java.util.Vector;
 
 import com.arjuna.ats.arjuna.recovery.ExpiryScanner;
-import com.arjuna.ats.arjuna.recovery.RecoveryEnvironment;
-import com.arjuna.ats.arjuna.common.arjPropertyManager;
 import com.arjuna.ats.arjuna.common.recoveryPropertyManager;
 
 import com.arjuna.ats.arjuna.logging.tsLogger;
@@ -279,23 +276,9 @@
   {
       _expiryScanners = new Vector();
 
-    // search our properties
-    Properties properties = arjPropertyManager.getPropertyManager().getProperties();
-    
-    if (properties != null)
-    {
-	Enumeration names = properties.propertyNames();
-	
-	while (names.hasMoreElements())
-	{
-	    String propertyName = (String) names.nextElement();
-	    
-	    if ( propertyName.startsWith(RecoveryEnvironment.SCANNER_PROPERTY_PREFIX) )
-	    {
-		loadScanner( properties.getProperty(propertyName));
-	    }
-	}
-    }
+      for(String scannerName : recoveryPropertyManager.getRecoveryEnvironmentBean().getExpiryScanners()) {
+          loadScanner(scannerName);
+      }
   }
     
   private static void loadScanner( String className )

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/ExpiredTransactionStatusManagerScanner.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/ExpiredTransactionStatusManagerScanner.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/ExpiredTransactionStatusManagerScanner.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -35,11 +35,9 @@
 import java.text.* ;
 
 import com.arjuna.ats.arjuna.common.Uid ;
-import com.arjuna.ats.arjuna.common.arjPropertyManager;
 import com.arjuna.ats.arjuna.common.recoveryPropertyManager;
 import com.arjuna.ats.arjuna.objectstore.ObjectStore ;
 import com.arjuna.ats.arjuna.recovery.ExpiryScanner ;
-import com.arjuna.ats.arjuna.recovery.RecoveryEnvironment ;
 import com.arjuna.ats.arjuna.state.InputObjectState ;
 
 import com.arjuna.ats.arjuna.logging.tsLogger;

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/PeriodicRecovery.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/PeriodicRecovery.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/PeriodicRecovery.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -33,17 +33,12 @@
 
 import java.lang.InterruptedException;
 import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Enumeration;
-import java.util.Properties;
-import java.util.Vector;
+import java.util.*;
 import java.net.*;
 import java.io.*;
 
 import com.arjuna.ats.arjuna.recovery.RecoveryModule;
-import com.arjuna.ats.arjuna.recovery.RecoveryEnvironment;
 import com.arjuna.ats.arjuna.recovery.RecoveryManager;
-import com.arjuna.ats.arjuna.common.arjPropertyManager;
 import com.arjuna.ats.arjuna.common.recoveryPropertyManager;
 
 import com.arjuna.ats.arjuna.logging.FacilityCode;
@@ -912,49 +907,17 @@
     }
 
     /**
-     * Load recovery modules prior to starting to recovery. The property
-     * name of each module is used to indicate relative ordering.
+     * Load recovery modules prior to starting to recovery. These are loaded in list iteration order.
      */
+    private void loadModules ()
+    {
+        Vector<String> moduleNames = new Vector<String>(recoveryPropertyManager.getRecoveryEnvironmentBean().getRecoveryExtensions());
 
-   private void loadModules ()
-   {
-      // scan the relevant properties so as to get them into sort order
-       Properties properties = arjPropertyManager.getPropertyManager().getProperties();
+        for(String moduleName : moduleNames) {
+            loadModule(moduleName);
+        }
+    }
 
-      if (properties != null)
-      {
-         Vector moduleNames = new Vector();
-         Enumeration names = properties.propertyNames();
-
-         while (names.hasMoreElements())
-         {
-            String attrName = (String) names.nextElement();
-
-            if (attrName.startsWith(RecoveryEnvironment.MODULE_PROPERTY_PREFIX))
-            {
-               // this is one of ours - put it in the right place
-               int position = 0;
-
-               while ( position < moduleNames.size() &&
-                       attrName.compareTo( (String)moduleNames.elementAt(position)) > 0 )
-               {
-                  position++;
-               }
-               moduleNames.add(position,attrName);
-            }
-         }
-         // now go through again and load them
-         names = moduleNames.elements();
-
-         while (names.hasMoreElements())
-         {
-            String attrName = (String) names.nextElement();
-
-            loadModule(properties.getProperty(attrName));
-         }
-      }
-   }
-
     /**
      * load a specific recovery module and add it to the recovery modules list
      *

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/RecActivatorLoader.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/RecActivatorLoader.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/recovery/RecActivatorLoader.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -21,17 +21,10 @@
 
 package com.arjuna.ats.internal.arjuna.recovery ;
 
-import java.lang.InterruptedException ;
-import java.text.SimpleDateFormat ;
-import java.util.Date ;
-import java.util.Enumeration ;
-import java.util.Properties ;
-import java.util.Vector ;
+import java.util.*;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
 import com.arjuna.ats.arjuna.recovery.RecoveryActivator ;
-import com.arjuna.ats.arjuna.recovery.RecoveryEnvironment ;
-import com.arjuna.ats.arjuna.common.arjPropertyManager;
+import com.arjuna.ats.arjuna.common.recoveryPropertyManager;
 
 import com.arjuna.ats.arjuna.logging.FacilityCode ;
 import com.arjuna.ats.arjuna.logging.tsLogger;
@@ -90,44 +83,16 @@
 
   }
 
-  private static void loadRecoveryActivators ()
-  {
-      // scan the relevant properties so as to get them into sort order
-      Properties properties = arjPropertyManager.getPropertyManager().getProperties();
+    // These are loaded in list iteration order.
+    private static void loadRecoveryActivators ()
+    {
+        Vector<String> activatorNames = new Vector<String>(recoveryPropertyManager.getRecoveryEnvironmentBean().getRecoveryActivators());
 
-      if (properties != null)
-	  {
-	      Vector activatorNames = new Vector();
-	      Enumeration names = properties.propertyNames();
+        for(String activatorName : activatorNames) {
+            loadActivator(activatorName);
+        }
+    }
 
-	      while (names.hasMoreElements())
-		  {
-		      String attrName = (String) names.nextElement();
-
-		      if (attrName.startsWith(RecoveryEnvironment.ACTIVATOR_PROPERTY_PREFIX) )
-			  {
-			      // this is one of ours - put it in the right place
-			      int position = 0;
-			      while ( position < activatorNames.size() &&
-				      attrName.compareTo( (String)activatorNames.elementAt(position)) > 0 )
-				  {
-				      position++;
-				  }
-			      activatorNames.add(position,attrName);
-			  }
-		  }
-         // now go through again and load them
-	      names = activatorNames.elements();
-
-	      while (names.hasMoreElements())
-		  {
-		  String attrName = (String) names.nextElement();
-		  loadActivator(properties.getProperty(attrName));
-		  }
-
-	  }
-  }
-
   private static void loadActivator (String className)
   {
       if (tsLogger.arjLogger.isDebugEnabled())

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/utils/SocketProcessId.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/utils/SocketProcessId.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/utils/SocketProcessId.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -32,7 +32,6 @@
 package com.arjuna.ats.internal.arjuna.utils;
 
 import com.arjuna.ats.arjuna.logging.tsLogger;
-import com.arjuna.ats.arjuna.common.Environment;
 import com.arjuna.ats.arjuna.common.arjPropertyManager;
 
 import com.arjuna.ats.arjuna.utils.Utility;

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/BeanPopulatorTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/BeanPopulatorTest.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/common/BeanPopulatorTest.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -46,14 +46,14 @@
 
         DummyPropertyManager testManager = new DummyPropertyManager(null);
 
+        testManager.addConcatenationKeys(RecoveryEnvironmentBean.class);
+        testManager.addConcatenationKeys(CoreEnvironmentBean.class);
+
         BeanPopulator.configureFromPropertyManager(new CoordinatorEnvironmentBean(), testManager);
         BeanPopulator.configureFromPropertyManager(new RecoveryEnvironmentBean(), testManager);
         BeanPopulator.configureFromPropertyManager(new CoreEnvironmentBean(), testManager);
         BeanPopulator.configureFromPropertyManager(new ObjectStoreEnvironmentBean(), testManager);
 
-        // we expect this one to be missing - that's ok.
-        testManager.usedKeys.add("com.arjuna.ats.internal.arjuna.inventory.staticInventoryImple");
-
         Set<String> expectedKeys = new HashSet<String>();
         expectedKeys.addAll( DummyPropertyManager.extractKeys(Environment.class));
 

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/JDBCInventory.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/JDBCInventory.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/JDBCInventory.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -32,7 +32,6 @@
  */
 
 import com.arjuna.ats.arjuna.ArjunaNames;
-import com.arjuna.ats.arjuna.common.Environment;
 import com.arjuna.ats.arjuna.common.arjPropertyManager;
 import com.arjuna.ats.arjuna.exceptions.ObjectStoreError;
 import com.arjuna.ats.arjuna.objectstore.ObjectStoreImple;
@@ -41,12 +40,18 @@
 import org.junit.Test;
 import static org.junit.Assert.*;
 
+import java.util.ArrayList;
+import java.util.List;
+
 public class JDBCInventory
 {
     @Test
     public void test()
     {
-        arjPropertyManager.getPropertyManager().setProperty(Environment.STATIC_INVENTORY_IMPLE + "1", "com.arjuna.ats.internal.arjuna.objectstore.JDBCStoreSetup");
+        List<String> staticImpleList = new ArrayList<String>();
+        staticImpleList.add("com.arjuna.ats.internal.arjuna.objectstore.JDBCStoreSetup");
+        arjPropertyManager.getCoreEnvironmentBean().setStaticInventoryElements(staticImpleList);
+
         arjPropertyManager.getObjectStoreEnvironmentBean().setJdbcUserDbAccess("com.hp.mwtests.ts.arjuna.objectstore.MyAccess");
 
         boolean passed = false;

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/LogStoreRecoveryTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/LogStoreRecoveryTest.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/LogStoreRecoveryTest.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -34,7 +34,6 @@
 import com.arjuna.ats.arjuna.ArjunaNames;
 import com.arjuna.ats.arjuna.objectstore.ObjectStore;
 import com.arjuna.ats.arjuna.state.*;
-import com.arjuna.ats.arjuna.common.Environment;
 import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.ats.arjuna.common.arjPropertyManager;
 import com.arjuna.ats.arjuna.coordinator.TxControl;
@@ -49,9 +48,9 @@
     @Before
     public void setUp()
 	{
-        System.setProperty(Environment.OBJECTSTORE_TYPE, ArjunaNames.Implementation_ObjectStore_ActionLogStore().stringForm());
-        System.setProperty(Environment.TRANSACTION_LOG, "ON");
-
+        arjPropertyManager.getObjectStoreEnvironmentBean().setObjectStoreType(ArjunaNames.Implementation_ObjectStore_ActionLogStore().stringForm());
+        arjPropertyManager.getCoordinatorEnvironmentBean().setTransactionLog(true);
+        
         super.setUp();
 	}
 

Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/LogStoreTest2.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/LogStoreTest2.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/LogStoreTest2.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -34,8 +34,8 @@
 import com.arjuna.ats.arjuna.ArjunaNames;
 import com.arjuna.ats.arjuna.objectstore.ObjectStore;
 import com.arjuna.ats.arjuna.state.*;
-import com.arjuna.ats.arjuna.common.Environment;
 import com.arjuna.ats.arjuna.common.Uid;
+import com.arjuna.ats.arjuna.common.arjPropertyManager;
 import com.arjuna.ats.arjuna.coordinator.TxControl;
 
 import org.junit.Test;
@@ -46,8 +46,9 @@
     @Test
     public void test()
     {
-        System.setProperty(Environment.OBJECTSTORE_TYPE, ArjunaNames.Implementation_ObjectStore_ActionLogStore().stringForm());
-        System.setProperty(Environment.TRANSACTION_LOG, "ON");
+        arjPropertyManager.getObjectStoreEnvironmentBean().setObjectStoreType(ArjunaNames.Implementation_ObjectStore_ActionLogStore().stringForm());
+        arjPropertyManager.getCoordinatorEnvironmentBean().setTransactionLog(true);
+
         // the byteman script will manage this
         //System.setProperty(Environment.TRANSACTION_LOG_PURGE_TIME, "10000");
 

Modified: labs/jbosstm/trunk/ArjunaCore/jbossts-properties-arjunacore.xml
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/jbossts-properties-arjunacore.xml	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/jbossts-properties-arjunacore.xml	2009-08-14 14:46:26 UTC (rev 28936)
@@ -69,7 +69,7 @@
       Use the value 0 to allow the system to select the first available port number.
       If the port number is non-zero and the port is in use then the value will be incremented until either a successful binding
       to the loopback address is created or until the the maximum number of ports (specified by the
-      com.arjuna.ats.internal.arjuna.utils.SocketProcessIdMaxPorts property) have been tried or until the port number
+      CoreEnvironmentBean.socketProcessIdMaxPorts property) have been tried or until the port number
       reaches the maximum possible port number.
     -->
     <entry key="CoreEnvironmentBean.socketProcessIdPort">0</entry>
@@ -77,25 +77,27 @@
     
 
     <!--
-      Periodic recovery modules to use.  Invoked in sort-order of names.
+      Periodic recovery modules to use.  Invoked in the order they appear in the list.
          Check http://www.jboss.org/community/docs/DOC-10788 for more information
          on recovery modules and their configuration when running in various
          deployments.
     -->
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryExtension1">com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule</entry>
+    <entry key="RecoveryEnvironmentBean.recoveryExtensions">
+        com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule
+        com.arjuna.ats.internal.txoj.recovery.TORecoveryModule
+    </entry>
 
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryExtension2">com.arjuna.ats.internal.txoj.recovery.TORecoveryModule</entry>
+    <!-- Expiry scanners to use (order of invocation is random). -->
+    <entry key="RecoveryEnvironmentBean.expiryScanners">
+        com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner
+    </entry>
 
     <!--
-      Expiry scanners to use (order of invocation is random).
-      Names must begin with "com.arjuna.ats.arjuna.recovery.expiryScanner"
+        Add the following to the set of expiryScanners above to move logs that cannot be completed by failure recovery.
+            But be sure you know what you are doing and why!
+             com.arjuna.ats.internal.arjuna.recovery.AtomicActionExpiryScanner
     -->
-    <entry key="com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager">com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner</entry>
 
-    <!-- Enable the following to move logs that cannot be completed by failure recovery. But
-be sure you know what you are doing and why! -->
-    <!-- entry key="com.arjuna.ats.arjuna.recovery.expiryScannerAtomicActionLog">com.arjuna.ats.internal.arjuna.recovery.AtomicActionExpiryScanner</entry> -->
-
     <!--
       The address and port number on which the recovery manager listens
       If running within an AS then the address the AS is bound to (jboss.bind.address) takes precedence
@@ -125,5 +127,4 @@
     -->
     <entry key="RecoveryEnvironmentBean.recoveryListener">YES</entry>
 
-
 </properties>

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-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/bin/com/arjuna/ats/tools/objectstorebrowser/rootprovider/providers/DefaultRootProvider.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -43,7 +43,7 @@
 
     public DefaultRootProvider()
     {
-        File objectStoreRoot = new File(arjPropertyManager.getPropertyManager().getProperty(Environment.OBJECTSTORE_DIR,"."));
+        File objectStoreRoot = new File(arjPropertyManager.getObjectStoreEnvironmentBean().getObjectStoreDir());
         File[] files = objectStoreRoot.listFiles();
 
         if ( files != null )

Modified: labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/common/Environment.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/common/Environment.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/tsmx/classes/com/arjuna/ats/tsmx/common/Environment.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -30,6 +30,10 @@
  */
 package com.arjuna.ats.tsmx.common;
 
+/**
+ * @deprecated
+ */
+ at Deprecated
 public class Environment
 {
 	public static final String PROPERTIES_FILE = "com.arjuna.ats.tsmx.common.propertiesFile";

Modified: labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/internal/txoj/lockstore/BasicPersistentLockStore.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/internal/txoj/lockstore/BasicPersistentLockStore.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/internal/txoj/lockstore/BasicPersistentLockStore.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -34,12 +34,9 @@
 import com.arjuna.ats.txoj.TxOJNames;
 import com.arjuna.ats.txoj.lockstore.LockStoreImple;
 import com.arjuna.ats.arjuna.objectstore.ObjectStore;
-import com.arjuna.ats.txoj.common.Environment;
-import com.arjuna.ats.txoj.common.Configuration;
 import com.arjuna.ats.txoj.common.txojPropertyManager;
 import com.arjuna.ats.arjuna.ArjunaNames;
 import com.arjuna.ats.arjuna.common.Uid;
-import com.arjuna.common.util.propertyservice.PropertyManager;
 import com.arjuna.ats.arjuna.state.*;
 import com.arjuna.ats.arjuna.gandiva.ClassName;
 

Modified: labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/Environment.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/Environment.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/Environment.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -37,8 +37,9 @@
  * @author Mark Little (mark at arjuna.com)
  * @version $Id: Environment.java 2342 2006-03-30 13:06:17Z  $
  * @since JTS 1.0.
+ * @deprecated use TxojEnvironmentBean instead
  */
-
+ at Deprecated
 public class Environment
 {
     public static final String PROPERTIES_FILE = "com.arjuna.ats.txoj.common.propertiesFile";

Modified: labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/txojPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/txojPropertyManager.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaCore/txoj/classes/com/arjuna/ats/txoj/common/txojPropertyManager.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -44,6 +44,11 @@
  */
 public class txojPropertyManager
 {
+    /**
+     * @deprecated use TxojEnvironmentBean instead
+     * @return
+     */
+    @Deprecated
     public static PropertyManager getPropertyManager()
     {
         return PropertyManagerFactory.getPropertyManagerForModule("txoj", Environment.PROPERTIES_FILE);

Modified: labs/jbosstm/trunk/ArjunaJTA/jbossts-properties-arjunajta.xml
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jbossts-properties-arjunajta.xml	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jbossts-properties-arjunajta.xml	2009-08-14 14:46:26 UTC (rev 28936)
@@ -64,7 +64,7 @@
     <entry key="CoreEnvironmentBean.nodeIdentifier">1</entry>
 
 	<!-- Which Xid types to recover -->
-	<entry key="com.arjuna.ats.jta.xaRecoveryNode">1</entry>
+	<entry key="JTAEnvironmentBean.xaRecoveryNodes">1</entry>
 	
     <!--
       Base port number for determining a unique number to associate with an instance of the transaction service
@@ -72,37 +72,36 @@
       Use the value 0 to allow the system to select the first available port number.
       If the port number is non-zero and the port is in use then the value will be incremented until either a successful binding
       to the loopback address is created or until the the maximum number of ports (specified by the
-      com.arjuna.ats.internal.arjuna.utils.SocketProcessIdMaxPorts property) have been tried or until the port number
+      CoreEnvironmentBean.socketProcessIdMaxPorts property) have been tried or until the port number
       reaches the maximum possible port number.
     -->
     <entry key="CoreEnvironmentBean.socketProcessIdPort">0</entry>
 
 
 
-
-
     <!--
-      Periodic recovery modules to use.  Invoked in sort-order of names.
+      Periodic recovery modules to use.  Invoked in the order they appear in the list.
          Check http://www.jboss.org/community/docs/DOC-10788 for more information
          on recovery modules and their configuration when running in various
          deployments.
     -->
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryExtension1">com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule</entry>
+    <entry key="RecoveryEnvironmentBean.recoveryExtensions">
+        com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule
+        com.arjuna.ats.internal.txoj.recovery.TORecoveryModule
+        com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule
+    </entry>
 
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryExtension2">com.arjuna.ats.internal.txoj.recovery.TORecoveryModule</entry>
+    <!-- Expiry scanners to use (order of invocation is random). -->
+    <entry key="RecoveryEnvironmentBean.expiryScanners">
+        com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner
+    </entry>
 
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryExtension3">com.arjuna.ats.internal.jta.recovery.arjunacore.XARecoveryModule</entry>
-
     <!--
-      Expiry scanners to use (order of invocation is random).
-      Names must begin with "com.arjuna.ats.arjuna.recovery.expiryScanner"
+        Add the following to the set of expiryScanners above to move logs that cannot be completed by failure recovery.
+            But be sure you know what you are doing and why!
+             com.arjuna.ats.internal.arjuna.recovery.AtomicActionExpiryScanner
     -->
-    <entry key="com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager">com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner</entry>
 
-    <!-- Enable the following to move logs that cannot be completed by failure recovery. But
-be sure you know what you are doing and why! -->
-    <!-- entry key="com.arjuna.ats.arjuna.recovery.expiryScannerAtomicActionLog">com.arjuna.ats.internal.arjuna.recovery.AtomicActionExpiryScanner</entry> -->
-
     <!--
       The address and port number on which the recovery manager listens
       If running within an AS then the address the AS is bound to (jboss.bind.address) takes precedence

Modified: labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/Environment.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/Environment.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/Environment.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -38,8 +38,9 @@
  * @author Mark Little (mark_little at hp.com)
  * @version $Id: Environment.java 2342 2006-03-30 13:06:17Z  $
  * @since JTS 2.0.
+ * @deprecated user JDBCEnvironmentBean instead
  */
-
+ at Deprecated
 public class Environment
 {
     public static final String PROPERTIES_FILE = "com.arjuna.ats.jdbc.common.propertiesFile";

Modified: labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/jdbcPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/jdbcPropertyManager.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/common/jdbcPropertyManager.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -41,6 +41,16 @@
  */
 public class jdbcPropertyManager
 {
+    // ensure properties are loaded
+    public static void init() {
+        getPropertyManager();
+    }
+
+    /**
+     * @deprecated use JDBCEnvironmentBean instead
+     * @return
+     */
+    @Deprecated
     public static PropertyManager getPropertyManager()
     {
         return PropertyManagerFactory.getPropertyManagerForModule("jdbc", Environment.PROPERTIES_FILE);

Modified: labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/logging/jdbcLogger.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/logging/jdbcLogger.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jdbc/classes/com/arjuna/ats/jdbc/logging/jdbcLogger.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -51,7 +51,7 @@
     static
     {
         /** Ensure the properties are loaded before initialising the logger **/
-        jdbcPropertyManager.getPropertyManager();
+        jdbcPropertyManager.init();
         
         logger = LogFactory.getLogNoi18n("com.arjuna.ats.jdbc.logging.logger");
 

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore/XARecoveryModule.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore/XARecoveryModule.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore/XARecoveryModule.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -43,7 +43,6 @@
 
 import com.arjuna.ats.jta.logging.jtaLogger;
 import com.arjuna.ats.jta.common.jtaPropertyManager;
-import com.arjuna.ats.jta.common.Environment;
 import com.arjuna.ats.jta.recovery.*;
 import com.arjuna.ats.jta.utils.XAHelper;
 import com.arjuna.ats.jta.xa.XidImple;
@@ -295,122 +294,84 @@
 			_recoveryManagerClass = null;
 		}
 
-		Properties props = jtaPropertyManager.getPropertyManager().getProperties();
 
-		if (props != null)
-		{
-			Enumeration names = props.propertyNames();
+        List<String> instances = jtaPropertyManager.getJTAEnvironmentBean().getXaResourceRecoveryInstances();
 
-			while (names.hasMoreElements())
-			{
-				String propName = (String) names.nextElement();
+        for(String theClassAndParameter : instances)
+        {
+            /*
+                        * Given the recovery string, create the class it refers to
+                        * and store it.
+                        */
 
-				if (propName
-						.startsWith(XARecoveryModule.XARecoveryPropertyNamePrefix))
-				{
-					/*
-					 * Given the recovery string, create the class it refers to
-					 * and store it.
-					 */
+            // see if there is a string parameter
 
-					String theClassAndParameter = jtaPropertyManager.getPropertyManager()
-							.getProperty(propName);
+            int breakPosition = theClassAndParameter.indexOf(BREAKCHARACTER);
 
-					// see if there is a string parameter
+            String theClass = null;
+            String theParameter = null;
 
-					int breakPosition = theClassAndParameter
-							.indexOf(BREAKCHARACTER);
+            if (breakPosition != -1)
+            {
+                theClass = theClassAndParameter.substring(0, breakPosition);
+                theParameter = theClassAndParameter.substring(breakPosition + 1);
+            }
+            else
+            {
+                theClass = theClassAndParameter;
+            }
 
-					String theClass = null;
-					String theParameter = null;
+            if (jtaLogger.loggerI18N.isInfoEnabled())
+            {
+                if (jtaLogger.loggerI18N.isInfoEnabled())
+                {
+                    jtaLogger.loggerI18N
+                            .info("com.arjuna.ats.internal.jta.recovery.info.loading",
+                                    new Object[] {
+                                        _logName,(theClass + ((theParameter != null) ? theParameter : "")) });
+                }
+            }
 
-					if (breakPosition != -1)
-					{
-						theClass = theClassAndParameter.substring(0,
-								breakPosition);
-						theParameter = theClassAndParameter
-								.substring(breakPosition + 1);
-					}
-					else
-					{
-						theClass = theClassAndParameter;
-					}
+            if (theClass == null)
+            {
+                if (jtaLogger.loggerI18N.isWarnEnabled())
+                {
+                    jtaLogger.loggerI18N
+                            .warn("com.arjuna.ats.internal.jta.recovery.classloadfail",
+                                new Object[] { _logName, theClassAndParameter });
+                }
+            }
+            else
+            {
+                try
+                {
+                    Class c = Thread.currentThread()
+                            .getContextClassLoader()
+                            .loadClass(theClass);
 
-					if (jtaLogger.loggerI18N.isInfoEnabled())
-					{
-						if (jtaLogger.loggerI18N.isInfoEnabled())
-						{
-							jtaLogger.loggerI18N
-									.info(
-											"com.arjuna.ats.internal.jta.recovery.info.loading",
-											new Object[]
-											{
-													_logName,
-													(theClass + ((theParameter != null) ? theParameter
-															: "")) });
-						}
-					}
+                    XAResourceRecovery ri = (XAResourceRecovery) c
+                            .newInstance();
 
-					if (theClass == null)
-					{
-						if (jtaLogger.loggerI18N.isWarnEnabled())
-						{
-							jtaLogger.loggerI18N
-									.warn(
-											"com.arjuna.ats.internal.jta.recovery.classloadfail",
-											new Object[]
-											{ _logName, propName });
-						}
-					}
-					else
-					{
-						try
-						{
-							Class c = Thread.currentThread()
-									.getContextClassLoader()
-									.loadClass(theClass);
+                    if (theParameter != null)
+                        ri.initialise(theParameter);
 
-							XAResourceRecovery ri = (XAResourceRecovery) c
-									.newInstance();
+                    _xaRecoverers.addElement(ri);
+                }
+                catch (Exception e)
+                {
+                    if (jtaLogger.loggerI18N.isWarnEnabled())
+                    {
+                        jtaLogger.loggerI18N
+                                .warn("com.arjuna.ats.internal.jta.recovery.general",
+                                        new Object[] { e, theClass }, e);
+                    }
+                }
+            }
+        }
 
-							if (theParameter != null)
-								ri.initialise(theParameter);
+        // Find the node(s) we can recover on behalf of.
+        _xaRecoveryNodes = new Vector<String>(jtaPropertyManager.getJTAEnvironmentBean().getXaRecoveryNodes());
 
-							_xaRecoverers.addElement(ri);
-						}
-						catch (Exception e)
-						{
-							if (jtaLogger.loggerI18N.isWarnEnabled())
-							{
-								jtaLogger.loggerI18N
-										.warn(
-												"com.arjuna.ats.internal.jta.recovery.general",
-												new Object[]
-												{ e, theClass });
-							}
-						}
-					}
-				}
-				else
-				{
-					if (propName.startsWith(Environment.XA_RECOVERY_NODE))
-					{
-						/*
-						 * Find the node(s) we can recover on behalf of.
-						 */
-
-						String name = jtaPropertyManager.getPropertyManager()
-								.getProperty(propName);
-
-						if (_xaRecoveryNodes == null)
-							_xaRecoveryNodes = new Vector();
-
-						_xaRecoveryNodes.addElement(name);
-					}
-				}
-			}
-		}
-
 		if ((_xaRecoveryNodes == null) || (_xaRecoveryNodes.size() == 0))
 		{
 			if (jtaLogger.loggerI18N.isInfoEnabled())

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/XAResourceErrorHandler.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/XAResourceErrorHandler.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/XAResourceErrorHandler.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -34,11 +34,8 @@
 import com.arjuna.ats.jta.resources.XAResourceMap;
 
 import com.arjuna.ats.jta.common.jtaPropertyManager;
-import com.arjuna.ats.jta.common.Environment;
 
 import java.util.HashMap;
-import java.util.Enumeration;
-import java.util.Properties;
 
 public class XAResourceErrorHandler
 {
@@ -61,43 +58,24 @@
 
 	private static HashMap _maps = new HashMap();
 
-	static
-	{
-		// explicitly add tibco
+    static
+    {
+        for(String theClass : jtaPropertyManager.getJTAEnvironmentBean().getXaErrorHandlers())
+        {
+            // Given the recovery string, create the class it refers to and store it.
 
-		Properties props = jtaPropertyManager.getPropertyManager().getProperties();
+            try
+            {
+                Class c = Thread.currentThread().getContextClassLoader().loadClass(theClass);
 
-		if (props != null)
-		{
-			Enumeration names = props.propertyNames();
+                XAResourceMap map = (XAResourceMap) c.newInstance();
 
-			while (names.hasMoreElements())
-			{
-				String propName = (String) names.nextElement();
-
-				if (propName.startsWith(Environment.XA_ERROR_HANDLER))
-				{
-					/*
-					 * Given the recovery string, create the class it refers to
-					 * and store it.
-					 */
-
-					String theClass = jtaPropertyManager.getPropertyManager().getProperty(propName);
-
-					try
-					{
-						Class c = Thread.currentThread().getContextClassLoader().loadClass(theClass);
-
-						XAResourceMap map = (XAResourceMap) c.newInstance();
-
-						XAResourceErrorHandler.addXAResourceMap(map.getXAResourceName(), map);
-					}
-					catch (Exception ex)
-					{
-						ex.printStackTrace();
-					}
-				}
-			}
-		}
-	}
+                XAResourceErrorHandler.addXAResourceMap(map.getXAResourceName(), map);
+            }
+            catch (Exception ex)
+            {
+                ex.printStackTrace();
+            }
+        }
+    }
 }

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/arjunacore/XAResourceRecord.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -34,7 +34,6 @@
 import com.arjuna.ats.jta.recovery.*;
 
 import com.arjuna.ats.jta.common.jtaPropertyManager;
-import com.arjuna.ats.jta.common.Environment;
 
 import com.arjuna.ats.jta.xa.RecoverableXAConnection;
 import com.arjuna.ats.jta.xa.XidImple;

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/TransactionImple.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/TransactionImple.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/transaction/arjunacore/TransactionImple.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -39,7 +39,6 @@
 import com.arjuna.ats.internal.jta.resources.arjunacore.XAResourceRecord;
 
 import com.arjuna.ats.jta.common.Configuration;
-import com.arjuna.ats.jta.common.Environment;
 import com.arjuna.ats.jta.common.jtaPropertyManager;
 import com.arjuna.ats.jta.exceptions.InactiveTransactionException;
 import com.arjuna.ats.jta.exceptions.InvalidTerminationStateException;

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -22,7 +22,12 @@
 
 import com.arjuna.common.internal.util.propertyservice.PropertyPrefix;
 import com.arjuna.common.internal.util.propertyservice.FullPropertyName;
+import com.arjuna.common.internal.util.propertyservice.ConcatenationPrefix;
 
+import java.util.List;
+import java.util.Collections;
+import java.util.ArrayList;
+
 /**
  * A JavaBean containing configuration properties for the JTA subsystem.
  *
@@ -41,7 +46,13 @@
     private String jtaTSRImplementation = "com.arjuna.ats.internal.jta.transaction.arjunacore.TransactionSynchronizationRegistryImple";
 
     private int xaBackoffPeriod = 20000;
-    private String xaRecoveryNode; // key only
+
+    @ConcatenationPrefix(prefix = "com.arjuna.ats.jta.xaRecoveryNode")
+    private List<String> xaRecoveryNodes = Collections.emptyList();
+
+    @ConcatenationPrefix(prefix = "com.arjuna.ats.jta.recovery.XAResourceRecovery")
+    private List<String> xaResourceRecoveryInstances = Collections.emptyList();
+
     private boolean xaRollbackOptimization = false;
     private boolean xaAssumeRecoveryComplete = false;
 
@@ -53,7 +64,9 @@
     @FullPropertyName(name = "com.arjuna.ats.jta.utils.TSRJNDIContext")
     private String jtaTSRJNDIContext = "java:/TransactionSynchronizationRegistry";
 
-    private String xaErrorHandler; // key only
+    @ConcatenationPrefix(prefix = "com.arjuna.ats.jta.xaErrorHandler")
+    private List<String> xaErrorHandlers = Collections.emptyList();
+
     private boolean xaTransactionTimeoutEnabled = true;
     private String lastResourceOptimisationInterface = null;
 
@@ -123,18 +136,35 @@
         this.xaBackoffPeriod = xaBackoffPeriod;
     }
 
-//    public static final String XA_RECOVERY_NODE = "com.arjuna.ats.jta.xaRecoveryNode";
-    public String getXaRecoveryNode()
+    public List<String> getXaRecoveryNodes()
     {
-        return xaRecoveryNode;
+        if(xaRecoveryNodes == null) {
+            return Collections.emptyList();
+        } else {
+            return new ArrayList<String>(xaRecoveryNodes);
+        }
     }
 
-    public void setXaRecoveryNode(String xaRecoveryNode)
+    public void setXaRecoveryNodes(List<String> xaRecoveryNodes)
     {
-        this.xaRecoveryNode = xaRecoveryNode;
+        this.xaRecoveryNodes = new ArrayList<String>(xaRecoveryNodes);
     }
 
-//    public static final String XA_ROLLBACK_OPTIMIZATION = "com.arjuna.ats.jta.xaRollbackOptimization";
+    public List<String> getXaResourceRecoveryInstances()
+    {
+        if(xaResourceRecoveryInstances == null) {
+            return Collections.emptyList();
+        } else {
+            return new ArrayList<String>(xaResourceRecoveryInstances);
+        }
+    }
+
+    public void setXaResourceRecoveryInstances(List<String> xaResourceRecoveryInstances)
+    {
+        this.xaResourceRecoveryInstances = new ArrayList<String>(xaResourceRecoveryInstances);
+    }
+
+    //    public static final String XA_ROLLBACK_OPTIMIZATION = "com.arjuna.ats.jta.xaRollbackOptimization";
     public boolean isXaRollbackOptimization()
     {
         return xaRollbackOptimization;
@@ -189,18 +219,21 @@
         this.jtaTSRJNDIContext = jtaTSRJNDIContext;
     }
 
-//    public static final String XA_ERROR_HANDLER = "com.arjuna.ats.jta.xaErrorHandler";
-    public String getXaErrorHandler()
+    public List<String> getXaErrorHandlers()
     {
-        return xaErrorHandler;
+        if(xaErrorHandlers == null) {
+            return Collections.emptyList();
+        } else {
+            return new ArrayList<String>(xaErrorHandlers);
+        }
     }
 
-    public void setXaErrorHandler(String xaErrorHandler)
+    public void setXaErrorHandlers(List<String> xaErrorHandlers)
     {
-        this.xaErrorHandler = xaErrorHandler;
+        this.xaErrorHandlers = new ArrayList(xaErrorHandlers);
     }
 
-//    public static final String XA_TRANSACTION_TIMEOUT_ENABLED = "com.arjuna.ats.jta.xaTransactionTimeoutEnabled";
+    // public static final String XA_TRANSACTION_TIMEOUT_ENABLED = "com.arjuna.ats.jta.xaTransactionTimeoutEnabled";
     public boolean isXaTransactionTimeoutEnabled()
     {
         return xaTransactionTimeoutEnabled;

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBeanMBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBeanMBean.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBeanMBean.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -20,6 +20,8 @@
  */
 package com.arjuna.ats.jta.common;
 
+import java.util.List;
+
 /**
  * A JMX MBean interface containing configuration for the JTA system.
  *
@@ -51,10 +53,14 @@
 
     void setXaBackoffPeriod(int xaBackoffPeriod);
 
-    String getXaRecoveryNode();
+    List<String> getXaRecoveryNodes();
 
-    void setXaRecoveryNode(String xaRecoveryNode);
+    void setXaRecoveryNodes(List<String> xaRecoveryNodes);
 
+    List<String> getXaResourceRecoveryInstances();
+
+    void setXaResourceRecoveryInstances(List<String> xaResourceRecoveryInstances);
+    
     boolean isXaRollbackOptimization();
 
     void setXaRollbackOptimization(boolean xaRollbackOptimization);
@@ -75,10 +81,10 @@
 
     void setJtaTSRJNDIContext(String jtaTSRJNDIContext);
 
-    String getXaErrorHandler();
+    List<String> getXaErrorHandlers();
 
-    void setXaErrorHandler(String xaErrorHandler);
-
+    void setXaErrorHandlers(List<String> xaErrorHandlers);
+    
     boolean isXaTransactionTimeoutEnabled();
 
     void setXaTransactionTimeoutEnabled(boolean xaTransactionTimeoutEnabled);

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/jtaPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/jtaPropertyManager.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/jtaPropertyManager.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -42,6 +42,16 @@
 
 public class jtaPropertyManager
 {
+    // ensure properties are loaded
+    public static void init() {
+        getPropertyManager();
+    }
+
+    /**
+     * @deprecated use JTAEnvironmentBean instead
+     * @return
+     */
+    @Deprecated
     public static PropertyManager getPropertyManager()
     {
         return PropertyManagerFactory.getPropertyManagerForModule("jta", Environment.PROPERTIES_FILE);

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/logging/jtaLogger.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/logging/jtaLogger.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/logging/jtaLogger.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -52,7 +52,7 @@
     static
     {
         /** Ensure we load the properties before initialising the logger **/
-        jtaPropertyManager.getPropertyManager();
+        jtaPropertyManager.init();
         
         logger = LogFactory.getLogNoi18n("com.arjuna.ats.jta.logging.logger");
 

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/utils/JNDIManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/utils/JNDIManager.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/utils/JNDIManager.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -32,7 +32,6 @@
 
 import com.arjuna.ats.jta.common.jtaPropertyManager;
 
-import com.arjuna.ats.jta.common.Environment;
 import com.arjuna.ats.jta.logging.jtaLogger;
 
 import javax.naming.InitialContext;

Modified: labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/basic/BeanPopulatorTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/basic/BeanPopulatorTest.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/basic/BeanPopulatorTest.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -46,12 +46,16 @@
         // properties are looked for. i.e. that the Environment and Beans are in sync
 
         DummyPropertyManager testManager = new DummyPropertyManager(null);
+        testManager.addConcatenationKeys(JTAEnvironmentBean.class);
 
         BeanPopulator.configureFromPropertyManager(new JTAEnvironmentBean(), testManager);
 
         Set<String> expectedKeys = new HashSet<String>();
         expectedKeys.addAll( DummyPropertyManager.extractKeys(Environment.class));
 
+        System.out.println("expectedKeys: "+expectedKeys);
+        System.out.println("usedKeys: "+testManager.usedKeys);
+
         assertTrue( testManager.usedKeys.containsAll(expectedKeys) );
     }
 }

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	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/tests/classes/com/hp/mwtests/ts/jta/nested/SimpleNestedTest.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -32,6 +32,7 @@
 package com.hp.mwtests.ts.jta.nested;
 
 import com.hp.mwtests.ts.jta.common.TestResource;
+import com.arjuna.ats.jta.common.jtaPropertyManager;
 
 import javax.transaction.Transaction;
 import javax.transaction.xa.XAResource;
@@ -44,7 +45,7 @@
     @Test
     public void test() throws Exception
     {
-        com.arjuna.ats.jta.common.jtaPropertyManager.getPropertyManager().setProperty(com.arjuna.ats.jta.common.Environment.SUPPORT_SUBTRANSACTIONS, "YES");
+        jtaPropertyManager.getJTAEnvironmentBean().setSupportSubtransactions(true);
 
         javax.transaction.TransactionManager transactionManager = com.arjuna.ats.jta.TransactionManager.transactionManager();
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jbossts-properties-arjunajts.xml
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jbossts-properties-arjunajts.xml	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jbossts-properties-arjunajts.xml	2009-08-14 14:46:26 UTC (rev 28936)
@@ -64,7 +64,7 @@
     <entry key="CoreEnvironmentBean.nodeIdentifier">1</entry>
 
 	<!-- Which Xid types to recover -->
-	<entry key="com.arjuna.ats.jta.xaRecoveryNode">1</entry>
+	<entry key="JTAEnvironmentBean.xaRecoveryNodes">1</entry>
 
     <!--
       Base port number for determining a unique number to associate with an instance of the transaction service
@@ -72,47 +72,41 @@
       Use the value 0 to allow the system to select the first available port number.
       If the port number is non-zero and the port is in use then the value will be incremented until either a successful binding
       to the loopback address is created or until the the maximum number of ports (specified by the
-      com.arjuna.ats.internal.arjuna.utils.SocketProcessIdMaxPorts property) have been tried or until the port number
+      CoreEnvironmentBean.socketProcessIdMaxPorts property) have been tried or until the port number
       reaches the maximum possible port number.
     -->
     <entry key="CoreEnvironmentBean.socketProcessIdPort">0</entry>
 
 
 
-
     <!--
-      Periodic recovery modules to use.  Invoked in sort-order of names.
+      Periodic recovery modules to use.  Invoked in the order they appear in the list.
          Check http://www.jboss.org/community/docs/DOC-10788 for more information
          on recovery modules and their configuration when running in various
          deployments.
     -->
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryExtension1">com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule</entry>
+    <entry key="RecoveryEnvironmentBean.recoveryExtensions">
+        com.arjuna.ats.internal.arjuna.recovery.AtomicActionRecoveryModule
+        com.arjuna.ats.internal.txoj.recovery.TORecoveryModule
+        com.arjuna.ats.internal.jts.recovery.transactions.TopLevelTransactionRecoveryModule
+        com.arjuna.ats.internal.jts.recovery.transactions.ServerTransactionRecoveryModule
+        com.arjuna.ats.internal.jta.recovery.jts.XARecoveryModule
+    </entry>
 
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryExtension2">com.arjuna.ats.internal.txoj.recovery.TORecoveryModule</entry>
+    <!-- Expiry scanners to use (order of invocation is random). -->
+    <entry key="RecoveryEnvironmentBean.expiryScanners">
+        com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner
+        com.arjuna.ats.internal.jts.recovery.contact.ExpiredContactScanner
+        com.arjuna.ats.internal.jts.recovery.transactions.ExpiredToplevelScanner
+        com.arjuna.ats.internal.jts.recovery.transactions.ExpiredServerScanner
+    </entry>
 
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryExtension3">com.arjuna.ats.internal.jts.recovery.transactions.TopLevelTransactionRecoveryModule</entry>
-
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryExtension4">com.arjuna.ats.internal.jts.recovery.transactions.ServerTransactionRecoveryModule</entry>
-
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryExtension5">com.arjuna.ats.internal.jta.recovery.jts.XARecoveryModule</entry>
-
-
     <!--
-      Expiry scanners to use (order of invocation is random).
-      Names must begin with "com.arjuna.ats.arjuna.recovery.expiryScanner"
+        Add the following to the set of expiryScanners above to move logs that cannot be completed by failure recovery.
+            But be sure you know what you are doing and why!
+             com.arjuna.ats.internal.arjuna.recovery.AtomicActionExpiryScanner
     -->
-    <entry key="com.arjuna.ats.arjuna.recovery.expiryScannerTransactionStatusManager">com.arjuna.ats.internal.arjuna.recovery.ExpiredTransactionStatusManagerScanner</entry>
 
-    <entry key="com.arjuna.ats.arjuna.recovery.expiryScannerContact">com.arjuna.ats.internal.jts.recovery.contact.ExpiredContactScanner</entry>
-
-    <entry key="com.arjuna.ats.arjuna.recovery.expiryScannerTopLevelTran">com.arjuna.ats.internal.jts.recovery.transactions.ExpiredToplevelScanner</entry>
-
-    <entry key="com.arjuna.ats.arjuna.recovery.expiryScannerServerTran">com.arjuna.ats.internal.jts.recovery.transactions.ExpiredServerScanner</entry>
-    
-    <!-- Enable the following to move logs that cannot be completed by failure recovery. But
-be sure you know what you are doing and why! -->
-    <!-- entry key="com.arjuna.ats.arjuna.recovery.expiryScannerAtomicActionLog">com.arjuna.ats.internal.arjuna.recovery.AtomicActionExpiryScanner</entry> -->
-
    <!--
       The address and port number on which the recovery manager listens
       If running within an AS then the address the AS is bound to (jboss.bind.address) takes precedence
@@ -143,8 +137,8 @@
     <entry key="RecoveryEnvironmentBean.recoveryListener">YES</entry>
 
 
-    <!-- Recovery Activator to use. -->
-    <entry key="com.arjuna.ats.arjuna.recovery.recoveryActivator_1">com.arjuna.ats.internal.jts.orbspecific.recovery.RecoveryEnablement</entry>
+    <!-- Recovery Activators to use. -->
+    <entry key="RecoveryEnvironmentBean.recoveryActivators">com.arjuna.ats.internal.jts.orbspecific.recovery.RecoveryEnablement</entry>
 
 
 	<entry key="JTAEnvironmentBean.jtaTMImplementation">com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple</entry>

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/resources/jts/orbspecific/XAResourceRecord.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -34,7 +34,6 @@
 import com.arjuna.ats.jta.recovery.*;
 
 import com.arjuna.ats.jta.common.jtaPropertyManager;
-import com.arjuna.ats.jta.common.Environment;
 
 import com.arjuna.ats.jta.xa.*;
 import com.arjuna.ats.jta.utils.XAHelper;

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	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/BaseTransaction.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -326,10 +326,6 @@
 
 	static
 	{
-		String subtran = jtaPropertyManager.getPropertyManager().getProperty(com.arjuna.ats.jta.common.Environment.SUPPORT_SUBTRANSACTIONS);
-
-		if ((subtran != null) && (subtran.equals("YES")))
-			_supportSubtransactions = true;
-	}
-
+        _supportSubtransactions = jtaPropertyManager.getJTAEnvironmentBean().isSupportSubtransactions();
+    }
 }

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	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/classes/com/arjuna/ats/internal/jta/transaction/jts/TransactionImple.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -51,7 +51,6 @@
 
 import com.arjuna.ats.jta.xa.*;
 import com.arjuna.ats.jta.common.Configuration;
-import com.arjuna.ats.jta.common.Environment;
 import com.arjuna.ats.jta.common.jtaPropertyManager;
 import com.arjuna.ats.jta.exceptions.InactiveTransactionException;
 import com.arjuna.ats.jta.exceptions.InvalidTerminationStateException;

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/arjuna/ats/jtax/tests/implicit/server/ImplicitServer.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/arjuna/ats/jtax/tests/implicit/server/ImplicitServer.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/arjuna/ats/jtax/tests/implicit/server/ImplicitServer.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -35,7 +35,6 @@
 
 import com.arjuna.ats.jtax.tests.implicit.impl.*;
 import com.arjuna.ats.jta.common.jtaPropertyManager;
-import com.arjuna.ats.jta.common.Environment;
 
 import org.junit.Test;
 import static org.junit.Assert.*;

Modified: labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/JTATransactionCommitTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/JTATransactionCommitTest.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/basic/JTATransactionCommitTest.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -20,11 +20,7 @@
  */
 package com.hp.mwtests.ts.jta.jts.basic;
 
-import com.arjuna.orbportability.ORB;
-import com.arjuna.orbportability.OA;
 import com.arjuna.ats.jta.common.jtaPropertyManager;
-import com.arjuna.ats.jta.common.Environment;
-import com.arjuna.ats.internal.jta.transaction.jts.TransactionManagerImple;
 import com.hp.mwtests.ts.jta.jts.JTSTestCase;
 
 import javax.transaction.TransactionManager;

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	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jtax/tests/classes/com/hp/mwtests/ts/jta/jts/nested/SimpleNestedTest.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -64,9 +64,8 @@
 
         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(true);
 
-        jtaPropertyManager.getPropertyManager().setProperty(com.arjuna.ats.jta.common.Environment.SUPPORT_SUBTRANSACTIONS,"YES");
-
         javax.transaction.TransactionManager transactionManager = com.arjuna.ats.jta.TransactionManager.transactionManager();
 
         transactionManager.begin();

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/OTSImpleManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/OTSImpleManager.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/OTSImpleManager.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -31,7 +31,6 @@
 
 package com.arjuna.ats.internal.jts;
 
-import com.arjuna.ats.jts.common.Environment;
 import com.arjuna.ats.jts.common.jtsPropertyManager;
 import com.arjuna.ats.jts.logging.*;
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/lifecycle/ShutdownOTS.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/lifecycle/ShutdownOTS.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/lifecycle/ShutdownOTS.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -31,35 +31,6 @@
 
 package com.arjuna.ats.internal.jts.lifecycle;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.jts.common.Environment;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-
-import com.arjuna.orbportability.*;
-
-import com.arjuna.ats.arjuna.common.*;
-import com.arjuna.ats.arjuna.coordinator.TransactionReaper;
-
-import com.arjuna.ats.internal.jts.orbspecific.CurrentImple;
-import com.arjuna.ats.internal.jts.orbspecific.ControlImple;
-import com.arjuna.ats.internal.jts.orbspecific.TransactionFactoryImple;
-import com.arjuna.ats.internal.jts.ORBManager;
-import com.arjuna.ats.internal.jts.utils.Helper;
-
-import org.omg.CosTransactions.*;
-
-import com.arjuna.ArjunaOTS.*;
-
-import java.io.PrintStream;
-
-import org.omg.CORBA.SystemException;
-import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
-import org.omg.CORBA.UserException;
-import org.omg.CORBA.ORBPackage.InvalidName;
-import java.io.IOException;
-
 public class ShutdownOTS extends com.arjuna.orbportability.oa.PreShutdown
 {
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/lifecycle/StartupOTS.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/lifecycle/StartupOTS.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/lifecycle/StartupOTS.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -31,35 +31,6 @@
 
 package com.arjuna.ats.internal.jts.lifecycle;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.jts.common.Environment;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-
-import com.arjuna.orbportability.*;
-
-import com.arjuna.ats.arjuna.common.*;
-import com.arjuna.ats.arjuna.coordinator.TransactionReaper;
-
-import com.arjuna.ats.internal.jts.orbspecific.CurrentImple;
-import com.arjuna.ats.internal.jts.orbspecific.ControlImple;
-import com.arjuna.ats.internal.jts.orbspecific.TransactionFactoryImple;
-import com.arjuna.ats.internal.jts.ORBManager;
-import com.arjuna.ats.internal.jts.utils.Helper;
-
-import org.omg.CosTransactions.*;
-
-import com.arjuna.ArjunaOTS.*;
-
-import java.io.PrintStream;
-
-import org.omg.CORBA.SystemException;
-import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
-import org.omg.CORBA.UserException;
-import org.omg.CORBA.ORBPackage.InvalidName;
-import java.io.IOException;
-
 public class StartupOTS
 {
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/ORBRunner.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/ORBRunner.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/jacorb/recoverycoordinators/ORBRunner.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -32,26 +32,6 @@
 
 package com.arjuna.ats.internal.jts.orbspecific.jacorb.recoverycoordinators;
 
-import com.arjuna.ats.arjuna.recovery.RecoveryActivator;
-import com.arjuna.ats.jts.logging.*;
-import com.arjuna.common.util.logging.*;
-import com.arjuna.orbportability.common.Environment;
-
-
-import org.omg.CORBA.NO_IMPLEMENT;
-import org.omg.CORBA.SystemException;
-
-import com.arjuna.ats.arjuna.common.*;
-import com.arjuna.ats.arjuna.logging.FacilityCode;
-
-import com.arjuna.orbportability.debug.OAAttribute;
-
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.internal.jts.ORBManager;
-import com.arjuna.ats.arjuna.common.*;
-import com.arjuna.orbportability.*;
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
 public class ORBRunner extends Thread 
 {
     

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/recovery/RecoveryEnablement.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/recovery/RecoveryEnablement.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/recovery/RecoveryEnablement.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -34,26 +34,11 @@
 
 import com.arjuna.ats.arjuna.recovery.RecoveryActivator;
 import com.arjuna.ats.jts.logging.*;
-import com.arjuna.common.util.logging.*;
-import com.arjuna.orbportability.common.Environment;
 
-import org.omg.CORBA.NO_IMPLEMENT;
-import org.omg.CORBA.SystemException;
-
-import com.arjuna.ats.arjuna.common.*;
-import com.arjuna.ats.arjuna.logging.FacilityCode;
-
-import com.arjuna.orbportability.orb.Attribute;
-
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.internal.jts.ORBManager;
-import com.arjuna.ats.arjuna.common.*;
 import com.arjuna.orbportability.*;
-import com.arjuna.common.util.propertyservice.PropertyManager;
 
 import com.arjuna.ats.internal.jts.Implementations;
 
-import com.arjuna.ats.internal.jts.recovery.recoverycoordinators.GenericRecoveryCreator;
 import com.arjuna.ats.internal.jts.recovery.*;
 import com.arjuna.ats.internal.jts.recovery.recoverycoordinators.RecoveryServiceInit;
 
@@ -89,9 +74,6 @@
     private static boolean _isNormalProcess = true;
     private static String  _RecoveryManagerTag = null;
 
-    // no accessible variable for this first property name prefix
-    private static final String eventHandlerPropertyPrefix = Environment.EVENT_HANDLER;
-
     /**
      * Constructor does the work as a result of being registered as an ORBPreInit
      * class

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/recovery/recoverycoordinators/GenericRecoveryCoordinator.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/recovery/recoverycoordinators/GenericRecoveryCoordinator.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/orbspecific/recovery/recoverycoordinators/GenericRecoveryCoordinator.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -414,15 +414,7 @@
 
     static
     {
-	_issueRecoveryRollback = true;
-	
-	String issueRecoveryRollback = jtsPropertyManager.getPropertyManager().getProperty(com.arjuna.ats.jts.recovery.RecoveryEnvironment.OTS_ISSUE_RECOVERY_ROLLBACK);
-	
-	if (issueRecoveryRollback != null)
-	{
-	    if (issueRecoveryRollback.compareTo("NO") == 0)
-		_issueRecoveryRollback = false;
-	}
+        _issueRecoveryRollback = jtsPropertyManager.getJTSEnvironmentBean().isIssueRecoveryRollback();
     }
 
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/ExpiredAssumedCompleteScanner.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/ExpiredAssumedCompleteScanner.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/ExpiredAssumedCompleteScanner.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -38,10 +38,8 @@
 
 import com.arjuna.ats.arjuna.common.Uid ;
 import com.arjuna.ats.arjuna.common.recoveryPropertyManager;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
 import com.arjuna.ats.arjuna.objectstore.ObjectStore ;
 import com.arjuna.ats.arjuna.recovery.ExpiryScanner ;
-import com.arjuna.ats.arjuna.recovery.RecoveryEnvironment ;
 import com.arjuna.ats.arjuna.state.InputObjectState ;
 
 import com.arjuna.ats.jts.logging.jtsLogger;

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/RecoveredServerTransaction.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/RecoveredServerTransaction.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/RecoveredServerTransaction.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -98,12 +98,8 @@
 
     public RecoveredServerTransaction ( Uid actionUid )
     {
-	this(actionUid, "");
-	String assumedExistString = jtsPropertyManager.getPropertyManager().getProperty(com.arjuna.ats.jts.recovery.RecoveryEnvironment.ASSUMED_OBJECT_NOT_EXIST);
-	if (assumedExistString != null) {
-	  Integer assumedExistInteger = new Integer(assumedExistString);
-          _assumed_not_exist = 	assumedExistInteger.intValue();
-	}
+        this(actionUid, "");
+        _assumed_not_exist = jtsPropertyManager.getJTSEnvironmentBean().getAssumedObjectNotExist();
     }
 
     /**
@@ -117,12 +113,7 @@
     {
 	super(actionUid);
 
-	String assumedExistString = jtsPropertyManager.getPropertyManager().getProperty(com.arjuna.ats.jts.recovery.RecoveryEnvironment.ASSUMED_OBJECT_NOT_EXIST);
-
-	if (assumedExistString != null) {
-	    Integer assumedExistInteger = new Integer(assumedExistString);
-	    _assumed_not_exist =  assumedExistInteger.intValue();
-	}
+        _assumed_not_exist = jtsPropertyManager.getJTSEnvironmentBean().getAssumedObjectNotExist();
 	
 	if (jtsLogger.loggerI18N.isDebugEnabled())
 	    {

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TransactionCache.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TransactionCache.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/internal/jts/recovery/transactions/TransactionCache.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -37,7 +37,6 @@
 import com.arjuna.ats.jts.common.jtsPropertyManager;
 
 import org.omg.CosTransactions.*;
-import com.arjuna.ats.jts.recovery.RecoveryEnvironment;
 
 import com.arjuna.ats.jts.logging.jtsLogger;
 import com.arjuna.ats.arjuna.logging.FacilityCode;
@@ -353,24 +352,8 @@
     private static Hashtable _theCache = new Hashtable();
     private static int attemptsBeforeConversion = 3;
 
- static
-     {
-	String retryLimitString = jtsPropertyManager.getPropertyManager().getProperty(com.arjuna.ats.jts.recovery.RecoveryEnvironment.COMMITTED_TRANSACTION_RETRY_LIMIT);
-
-	if (retryLimitString != null)
-	{
-	    try
-	    {
-		Integer i = new Integer(retryLimitString);
-
-		attemptsBeforeConversion = i.intValue();
-	    }
-	    catch (Exception e)
-	    {
-		jtsLogger.loggerI18N.warn("com.arjuna.ats.internal.jts.recovery.transactions.TransactionCache_8", new Object[]{RecoveryEnvironment.COMMITTED_TRANSACTION_RETRY_LIMIT}); 
-	    }
-	}
-     }
-
-
+    static
+    {
+        attemptsBeforeConversion = jtsPropertyManager.getJTSEnvironmentBean().getCommitedTransactionRetryLimit();
+    }
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/OTSManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/OTSManager.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/OTSManager.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -31,23 +31,14 @@
 
 package com.arjuna.ats.jts;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.jts.common.Environment;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
 import com.arjuna.ats.jts.logging.*;
 
-import com.arjuna.orbportability.*;
-
 import com.arjuna.common.util.logging.*;
 
-import com.arjuna.ats.arjuna.common.*;
 import com.arjuna.ats.arjuna.coordinator.TransactionReaper;
 
-import com.arjuna.ats.internal.jts.orbspecific.CurrentImple;
 import com.arjuna.ats.internal.jts.orbspecific.ControlImple;
 import com.arjuna.ats.internal.jts.orbspecific.TransactionFactoryImple;
-import com.arjuna.ats.internal.jts.ORBManager;
 import com.arjuna.ats.internal.jts.PseudoControlWrapper;
 import com.arjuna.ats.internal.jts.utils.Helper;
 
@@ -55,14 +46,8 @@
 
 import com.arjuna.ArjunaOTS.*;
 
-import java.io.PrintStream;
-
 import org.omg.CORBA.SystemException;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
-import org.omg.CORBA.UserException;
-import org.omg.CORBA.ORBPackage.InvalidName;
-import java.io.IOException;
 
 /**
  * This class is essentially here for convenience purposes, and until

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/Environment.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/Environment.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/Environment.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -38,8 +38,9 @@
  * @author Mark Little (mark at arjuna.com)
  * @version $Id: Environment.java 2342 2006-03-30 13:06:17Z  $
  * @since JTS 1.0.
+ * @deprecated use JTSEnvironmentBean instead
  */
-
+ at Deprecated
 public class Environment
 {
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBean.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBean.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -53,7 +53,16 @@
     @FullPropertyName(name = "com.arjuna.ats.jts.ots_1_0.timeoutPropagation")
     private boolean timeoutPropagation;
 
+    @FullPropertyName(name = "com.arjuna.ats.jts.recovery.issueRecoveryRollback")
+    private boolean issueRecoveryRollback = true;
 
+    @FullPropertyName(name = "com.arjuna.ats.jts.recovery.commitTransactionRetryLimit")
+    private int commitedTransactionRetryLimit = 3;
+
+    @FullPropertyName(name = "com.arjuna.ats.jts.recovery.assumedObjectNotExist")
+    private int assumedObjectNotExist = 10;
+
+
 //    public static final String PROPERTIES_FILE = "com.arjuna.ats.jts.common.propertiesFile";
     public String getPropertiesFile()
     {
@@ -222,4 +231,34 @@
     {
         this.timeoutPropagation = timeoutPropagation;
     }
+
+    public boolean isIssueRecoveryRollback()
+    {
+        return issueRecoveryRollback;
+    }
+
+    public void setIssueRecoveryRollback(boolean issueRecoveryRollback)
+    {
+        this.issueRecoveryRollback = issueRecoveryRollback;
+    }
+
+    public int getCommitedTransactionRetryLimit()
+    {
+        return commitedTransactionRetryLimit;
+    }
+
+    public void setCommitedTransactionRetryLimit(int commitedTransactionRetryLimit)
+    {
+        this.commitedTransactionRetryLimit = commitedTransactionRetryLimit;
+    }
+
+    public int getAssumedObjectNotExist()
+    {
+        return assumedObjectNotExist;
+    }
+
+    public void setAssumedObjectNotExist(int assumedObjectNotExist)
+    {
+        this.assumedObjectNotExist = assumedObjectNotExist;
+    }
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBeanMBean.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBeanMBean.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/JTSEnvironmentBeanMBean.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -90,4 +90,16 @@
     boolean isTimeoutPropagation();
 
     void setTimeoutPropagation(boolean timeoutPropagation);
+
+    boolean isIssueRecoveryRollback();
+
+    void setIssueRecoveryRollback(boolean issueRecoveryRollback);
+
+    int getCommitedTransactionRetryLimit();
+
+    void setCommitedTransactionRetryLimit(int commitedTransactionRetryLimit);
+
+    int getAssumedObjectNotExist();
+
+    void setAssumedObjectNotExist(int assumedObjectNotExist);
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/jtsPropertyManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/jtsPropertyManager.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/jtsPropertyManager.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -43,6 +43,16 @@
 
 public class jtsPropertyManager
 {
+    // ensure properties are loaded
+    public static void init() {
+        getPropertyManager();
+    }
+
+    /**
+     * @deprecated use JTSEnvironmentBean instead
+     * @return
+     */
+    @Deprecated
     public static PropertyManager getPropertyManager()
     {
         return PropertyManagerFactory.getPropertyManagerForModule("jts", Environment.PROPERTIES_FILE);

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/logging/jtsLogger.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/logging/jtsLogger.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/logging/jtsLogger.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -52,7 +52,7 @@
     static
     {
         /** Ensure the properties are loaded before initialising the logger **/
-        jtsPropertyManager.getPropertyManager();
+        jtsPropertyManager.init();
         
         logger = LogFactory.getLogNoi18n("com.arjuna.ats.jts.logging.logger");
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/recovery/RecoveryEnvironment.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/recovery/RecoveryEnvironment.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/recovery/RecoveryEnvironment.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -33,7 +33,9 @@
 
 /**
  * Container for property names used by recovery
+ * @deprecated use JTSEnvironmentBean instead
  */
+ at Deprecated
 public class RecoveryEnvironment
 {
     public static final String OTS_ISSUE_RECOVERY_ROLLBACK  = "com.arjuna.ats.jts.recovery.issueRecoveryRollback" ;

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/timeout/DefaultTimeout.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/timeout/DefaultTimeout.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/tests/classes/com/hp/mwtests/ts/jts/local/timeout/DefaultTimeout.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -34,7 +34,6 @@
 import com.arjuna.orbportability.*;
 
 import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Environment;
 
 import com.arjuna.ats.jts.OTSManager;
 

Modified: labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/logging/XTSLogger.java
===================================================================
--- labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/logging/XTSLogger.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/XTS/recovery/src/org/jboss/jbossts/xts/logging/XTSLogger.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -18,7 +18,7 @@
     static
     {
         /** Ensure the properties are loaded before initialising the logger **/
-        arjPropertyManager.getPropertyManager();
+        arjPropertyManager.init();
 
     	arjLogger = LogFactory.getLogNoi18n("com.arjuna.webservices.logging.XTSLogger");
 

Modified: labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/logging/jbossatxLogger.java
===================================================================
--- labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/logging/jbossatxLogger.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/logging/jbossatxLogger.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -51,7 +51,7 @@
     static
     {
         /** Ensure the properties are loaded before initialising the logger **/
-        jtaPropertyManager.getPropertyManager();
+        jtaPropertyManager.init();
         
         logger = LogFactory.getLogNoi18n("com.arjuna.ats.jbossatx.logging.logger");
 

Added: labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/ConcatenationPrefix.java
===================================================================
--- labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/ConcatenationPrefix.java	                        (rev 0)
+++ labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/ConcatenationPrefix.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -0,0 +1,38 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2009, 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) 2009,
+ * @author JBoss, a division of Red Hat.
+ */
+package com.arjuna.common.internal.util.propertyservice;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+import java.lang.annotation.ElementType;
+
+/**
+ * Annotation used to set the common name prefix of a list type property.
+ *
+ * @author Jonathan Halliday (jonathan.halliday at redhat.com)
+ */
+ at Retention(RetentionPolicy.RUNTIME)
+ at Target(ElementType.FIELD)
+public @interface ConcatenationPrefix
+{
+    String prefix();
+}

Modified: labs/jbosstm/trunk/qa/tests/product/src/com/arjuna/ats/tools/perftest/product/JBossTSProduct.java
===================================================================
--- labs/jbosstm/trunk/qa/tests/product/src/com/arjuna/ats/tools/perftest/product/JBossTSProduct.java	2009-08-14 14:03:12 UTC (rev 28935)
+++ labs/jbosstm/trunk/qa/tests/product/src/com/arjuna/ats/tools/perftest/product/JBossTSProduct.java	2009-08-14 14:46:26 UTC (rev 28936)
@@ -2,7 +2,6 @@
 
 import com.arjuna.ats.jdbc.TransactionalDriver;
 import com.arjuna.ats.arjuna.common.arjPropertyManager;
-import com.arjuna.ats.arjuna.common.Environment;
 import com.arjuna.ats.tools.perftest.DbWrapper;
 
 import javax.sql.DataSource;
@@ -39,10 +38,11 @@
 
     protected String getStoreType()
     {
-        if ("ON".equals(arjPropertyManager.propertyManager.getProperty(Environment.TRANSACTION_LOG)))
+        if (arjPropertyManager.getCoordinatorEnvironmentBean().isTransactionLog()) {
             return "LogStore";
+        }
         
-        String st = arjPropertyManager.propertyManager.getProperty(Environment.OBJECTSTORE_TYPE, "DefaultStore");
+        String st = arjPropertyManager.getObjectStoreEnvironmentBean().getObjectStoreType();
 
         int ind = st.lastIndexOf('.') + 1;
 



More information about the jboss-svn-commits mailing list