[jboss-svn-commits] JBL Code SVN: r32466 - in labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats: jta/common and 1 other directory.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Apr 7 11:51:30 EDT 2010
Author: jhalliday
Date: 2010-04-07 11:51:30 -0400 (Wed, 07 Apr 2010)
New Revision: 32466
Modified:
labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/XAResourceErrorHandler.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
Log:
Continue moving class loading responsibility to the environment bean classes. JBTM-735
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 2010-04-07 15:46:50 UTC (rev 32465)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/resources/XAResourceErrorHandler.java 2010-04-07 15:51:30 UTC (rev 32466)
@@ -60,22 +60,9 @@
static
{
- for(String theClass : jtaPropertyManager.getJTAEnvironmentBean().getXaErrorHandlers())
+ for(XAResourceMap xaResourceMap : jtaPropertyManager.getJTAEnvironmentBean().getXaResourceMaps())
{
- // Given the recovery string, create the class it refers to and store it.
-
- 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(xaResourceMap.getXAResourceName(), xaResourceMap);
}
}
}
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 2010-04-07 15:46:50 UTC (rev 32465)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java 2010-04-07 15:51:30 UTC (rev 32466)
@@ -23,6 +23,7 @@
import com.arjuna.ats.internal.arjuna.common.ClassloadingUtility;
import com.arjuna.ats.jta.recovery.XAResourceOrphanFilter;
import com.arjuna.ats.jta.recovery.XAResourceRecovery;
+import com.arjuna.ats.jta.resources.XAResourceMap;
import com.arjuna.common.internal.util.propertyservice.PropertyPrefix;
import com.arjuna.common.internal.util.propertyservice.FullPropertyName;
import com.arjuna.common.internal.util.propertyservice.ConcatenationPrefix;
@@ -74,7 +75,8 @@
private volatile String transactionSynchronizationRegistryJNDIContext = "java:/TransactionSynchronizationRegistry";
@ConcatenationPrefix(prefix = "com.arjuna.ats.jta.xaErrorHandler")
- private volatile List<String> xaErrorHandlers = new ArrayList<String>();
+ private volatile List<String> xaResourceMapClassNames = new ArrayList<String>();
+ private volatile List<XAResourceMap> xaResourceMaps = null;
private volatile boolean xaTransactionTimeoutEnabled = true;
private volatile String lastResourceOptimisationInterface = null;
@@ -669,35 +671,92 @@
}
/**
- * Returns the set of XAResourceMap implementation classnames used to configure XAException handling.
+ * Returns the set of XAResourceMap implementation class names used to configure XAException handling.
* The returned list is a copy. May return an empty list, will not return null.
*
* Default: empty list.
* Equivalent deprecated property prefix: com.arjuna.ats.jta.xaErrorHandler
*
- * @return a set of classnames, each an implementation of XAResourceMap.
+ * @return a set of class names, each an implementation of XAResourceMap.
*/
- public List<String> getXaErrorHandlers()
+ public List<String> getXaResourceMapClassNames()
{
- return new ArrayList<String>(xaErrorHandlers);
+ synchronized(this)
+ {
+ return new ArrayList<String>(xaResourceMapClassNames);
+ }
}
/**
* Sets the names of the XAResourceMap classes used for XAException handling.
* The provided list will be copied, not retained.
*
- * @param xaErrorHandlers a set of names of classes, each implementing XAResourceMap.
+ * @param xaResourceMapClassNames a set of names of classes, each implementing XAResourceMap.
*/
- public void setXaErrorHandlers(List<String> xaErrorHandlers)
+ public void setXaResourceMapClassNames(List<String> xaResourceMapClassNames)
{
- if(xaErrorHandlers == null) {
- this.xaErrorHandlers = new ArrayList<String>();
- } else {
- this.xaErrorHandlers = new ArrayList<String>(xaErrorHandlers);
+ synchronized(this)
+ {
+ if(xaResourceMapClassNames == null)
+ {
+ this.xaResourceMaps = null;
+ this.xaResourceMapClassNames = new ArrayList<String>();
+ }
+ else if(!xaResourceMapClassNames.equals(this.xaResourceMapClassNames))
+ {
+ this.xaResourceMaps = null;
+ this.xaResourceMapClassNames = new ArrayList<String>(xaResourceMapClassNames);
+ }
}
}
/**
+ * Returns the set of XAResourceMap instances.
+ * The returned list is a copy. May return an empty list, will not return null.
+ *
+ * If there is no pre-instantiated instance set and classloading or instantiation of one or more
+ * elements fails, this method will log an appropriate warning and return a non-null set with
+ * fewer elements.
+ *
+ * @return the set of XAResourceMap instances.
+ */
+ public List<XAResourceMap> getXaResourceMaps()
+ {
+ synchronized(this)
+ {
+ if(xaResourceMaps == null) {
+ List<XAResourceMap> instances = ClassloadingUtility.loadAndInstantiateClassesWithInit(XAResourceMap.class, xaResourceMapClassNames);
+ xaResourceMaps = instances;
+ }
+ return new ArrayList<XAResourceMap>(xaResourceMaps);
+ }
+ }
+
+ /**
+ * Sets the instances of XAResourceMap.
+ * The provided list will be copied, not retained.
+ *
+ * @param xaResourceMaps the set of XAResourceMap instances.
+ */
+ public void setXaResourceMaps(List<XAResourceMap> xaResourceMaps)
+ {
+ synchronized(this)
+ {
+ if(xaResourceMaps == null)
+ {
+ this.xaResourceMaps = new ArrayList<XAResourceMap>();
+ this.xaResourceMapClassNames = new ArrayList<String>();
+ }
+ else
+ {
+ this.xaResourceMaps = new ArrayList<XAResourceMap>(xaResourceMaps);
+ List<String> names = ClassloadingUtility.getNamesForClasses(this.xaResourceMaps);
+ this.xaResourceMapClassNames = names;
+ }
+ }
+ }
+
+ /**
* Returns if the transaction timeout is passed on to the enlisted XAResources.
*
* Default: true.
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 2010-04-07 15:46:50 UTC (rev 32465)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBeanMBean.java 2010-04-07 15:51:30 UTC (rev 32466)
@@ -77,9 +77,9 @@
void setTransactionSynchronizationRegistryJNDIContext(String jtaTSRJNDIContext);
- List<String> getXaErrorHandlers();
+ List<String> getXaResourceMapClassNames();
- void setXaErrorHandlers(List<String> xaErrorHandlers);
+ void setXaResourceMapClassNames(List<String> xaErrorHandlers);
boolean isXaTransactionTimeoutEnabled();
More information about the jboss-svn-commits
mailing list