[jboss-svn-commits] JBL Code SVN: r32463 - in labs/jbosstm/trunk: ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore and 3 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Apr 7 11:16:55 EDT 2010
Author: jhalliday
Date: 2010-04-07 11:16:53 -0400 (Wed, 07 Apr 2010)
New Revision: 32463
Modified:
labs/jbosstm/trunk/ArjunaJTA/jbossts-properties-arjunajta.xml
labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore/XARecoveryModule.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/ArjunaJTS/jbossts-properties-arjunajts.xml
labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/BeanPopulator.java
Log:
Continue moving class loading responsibility to the environment bean classes. JBTM-735
Modified: labs/jbosstm/trunk/ArjunaJTA/jbossts-properties-arjunajta.xml
===================================================================
--- labs/jbosstm/trunk/ArjunaJTA/jbossts-properties-arjunajta.xml 2010-04-07 15:09:16 UTC (rev 32462)
+++ labs/jbosstm/trunk/ArjunaJTA/jbossts-properties-arjunajta.xml 2010-04-07 15:16:53 UTC (rev 32463)
@@ -64,7 +64,7 @@
<!-- Which Xid types to recover -->
<entry key="JTAEnvironmentBean.xaRecoveryNodes">1</entry>
- <entry key="JTAEnvironmentBean.xaResourceOrphanFilters">
+ <entry key="JTAEnvironmentBean.xaResourceOrphanFilterClassNames">
com.arjuna.ats.internal.jta.recovery.arjunacore.JTATransactionLogXAResourceOrphanFilter
com.arjuna.ats.internal.jta.recovery.arjunacore.JTANodeNameXAResourceOrphanFilter
</entry>
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 2010-04-07 15:09:16 UTC (rev 32462)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/internal/jta/recovery/arjunacore/XARecoveryModule.java 2010-04-07 15:16:53 UTC (rev 32463)
@@ -294,25 +294,7 @@
}
_xaRecoverers = jtaPropertyManager.getJTAEnvironmentBean().getXaResourceRecoveries();
-
- for(String xaResourceOrphanFilterClassname : jtaPropertyManager.getJTAEnvironmentBean().getXaResourceOrphanFilters())
- {
- try
- {
- Class c = Thread.currentThread().getContextClassLoader().loadClass(xaResourceOrphanFilterClassname);
- XAResourceOrphanFilter filter = (XAResourceOrphanFilter)c.newInstance();
- _xaResourceOrphanFilters.add(filter);
- }
- catch(Exception e)
- {
- if (jtaLogger.loggerI18N.isWarnEnabled())
- {
- jtaLogger.loggerI18N
- .warn("com.arjuna.ats.internal.jta.recovery.general",
- new Object[] { e, xaResourceOrphanFilterClassname }, e);
- }
- }
- }
+ _xaResourceOrphanFilters = jtaPropertyManager.getJTAEnvironmentBean().getXaResourceOrphanFilters();
}
/**
@@ -1070,7 +1052,7 @@
private final List<XAResourceRecoveryHelper> _xaResourceRecoveryHelpers = new LinkedList<XAResourceRecoveryHelper>();
- private final List<XAResourceOrphanFilter> _xaResourceOrphanFilters = new LinkedList<XAResourceOrphanFilter>();
+ private final List<XAResourceOrphanFilter> _xaResourceOrphanFilters;
private Hashtable _failures = null;
@@ -1080,12 +1062,4 @@
private String _logName = null;
- // 'type' within the Object Store for AtomicActions.
- private String _transactionType = new AtomicAction().type();
-
- // Reference to the Object Store.
- private static ObjectStore _transactionStore = null;
-
- private static final char BREAKCHARACTER = ';'; // delimiter for xaconnrecov
- // property
}
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:09:16 UTC (rev 32462)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBean.java 2010-04-07 15:16:53 UTC (rev 32463)
@@ -21,6 +21,7 @@
package com.arjuna.ats.jta.common;
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.common.internal.util.propertyservice.PropertyPrefix;
import com.arjuna.common.internal.util.propertyservice.FullPropertyName;
@@ -58,7 +59,8 @@
private volatile List<String> xaResourceRecoveryClassNames = new ArrayList<String>();
private volatile List<XAResourceRecovery> xaResourceRecoveries = null;
- private volatile List<String> xaResourceOrphanFilters = new ArrayList<String>();
+ private volatile List<String> xaResourceOrphanFilterClassNames = new ArrayList<String>();
+ private volatile List<XAResourceOrphanFilter> xaResourceOrphanFilters = null;
private volatile boolean xaRollbackOptimization = false;
private volatile boolean xaAssumeRecoveryComplete = false;
@@ -433,8 +435,8 @@
List<XAResourceRecovery> instances = ClassloadingUtility.loadAndInstantiateClassesWithInit(XAResourceRecovery.class, xaResourceRecoveryClassNames);
xaResourceRecoveries = instances;
}
+ return new ArrayList<XAResourceRecovery>(xaResourceRecoveries);
}
- return new ArrayList<XAResourceRecovery>(xaResourceRecoveries);
}
/**
@@ -470,28 +472,85 @@
*
* @return a list of XAResourceOrphanFilter implementation class names.
*/
- public List<String> getXaResourceOrphanFilters()
+ public List<String> getXaResourceOrphanFilterClassNames()
{
- return new ArrayList<String>(xaResourceOrphanFilters);
+ synchronized(this)
+ {
+ return new ArrayList<String>(xaResourceOrphanFilterClassNames);
+ }
}
/**
- * Sets the XAResource orphan filters.
+ * Sets the class names of XAResourceOrphanFilter implementations.
* List elements should be names of classes that implement XAResourceOrphanFilter.
* The provided list will be copied, not retained.
*
- * @param xaResourceOrphanFilters a list of XAResourceOrphanFilter implementation classes.
+ * @param xaResourceOrphanFilterClassNames a list of XAResourceOrphanFilter implementation classes.
*/
- public void setXaResourceOrphanFilters(List<String> xaResourceOrphanFilters)
+ public void setXaResourceOrphanFilterClassNames(List<String> xaResourceOrphanFilterClassNames)
{
- if(xaResourceOrphanFilters == null) {
- this.xaResourceOrphanFilters = new ArrayList<String>();
- } else {
- this.xaResourceOrphanFilters = new ArrayList<String>(xaResourceOrphanFilters);
+ synchronized(this)
+ {
+ if(xaResourceOrphanFilterClassNames == null)
+ {
+ this.xaResourceOrphanFilters = null;
+ this.xaResourceOrphanFilterClassNames = new ArrayList<String>();
+ }
+ else if(!xaResourceOrphanFilterClassNames.equals(this.xaResourceOrphanFilterClassNames))
+ {
+ this.xaResourceOrphanFilters = null;
+ this.xaResourceOrphanFilterClassNames = new ArrayList<String>(xaResourceOrphanFilterClassNames);
+ }
}
}
/**
+ * Returns the set of XAResourceOrphanFilter 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 XAResourceOrphanFilter instances.
+ */
+ public List<XAResourceOrphanFilter> getXaResourceOrphanFilters()
+ {
+ synchronized(this)
+ {
+ if(xaResourceOrphanFilters == null) {
+ List<XAResourceOrphanFilter> instances = ClassloadingUtility.loadAndInstantiateClassesWithInit(XAResourceOrphanFilter.class, xaResourceOrphanFilterClassNames);
+ xaResourceOrphanFilters = instances;
+ }
+ return new ArrayList<XAResourceOrphanFilter>(xaResourceOrphanFilters);
+ }
+ }
+
+ /**
+ * Sets the instances of XAResourceOrphanFilter.
+ * The provided list will be copied, not retained.
+ *
+ * @param xaResourceOrphanFilters the set of XAResourceOrphanFilter instances.
+ */
+ public void setXaResourceOrphanFilters(List<XAResourceOrphanFilter> xaResourceOrphanFilters)
+ {
+ synchronized(this)
+ {
+ if(xaResourceOrphanFilters == null)
+ {
+ this.xaResourceOrphanFilters = new ArrayList<XAResourceOrphanFilter>();
+ this.xaResourceOrphanFilterClassNames = new ArrayList<String>();
+ }
+ else
+ {
+ this.xaResourceOrphanFilters = new ArrayList<XAResourceOrphanFilter>(xaResourceOrphanFilters);
+ List<String> names = ClassloadingUtility.getNamesForClasses(this.xaResourceOrphanFilters);
+ this.xaResourceOrphanFilterClassNames = names;
+ }
+ }
+ }
+
+ /**
* Returns if connections associated to XAResources that fail during prepare should be cleaned up immediately.
* TODO move to JDBC module as it's only for our own connection manager?
*
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:09:16 UTC (rev 32462)
+++ labs/jbosstm/trunk/ArjunaJTA/jta/classes/com/arjuna/ats/jta/common/JTAEnvironmentBeanMBean.java 2010-04-07 15:16:53 UTC (rev 32463)
@@ -53,9 +53,9 @@
void setXaResourceRecoveryClassNames(List<String> xaResourceRecoveryInstances);
- List<String> getXaResourceOrphanFilters();
+ List<String> getXaResourceOrphanFilterClassNames();
- void setXaResourceOrphanFilters(List<String> xaResourceOrphanFilters);
+ void setXaResourceOrphanFilterClassNames(List<String> xaResourceOrphanFilters);
boolean isXaRollbackOptimization();
Modified: labs/jbosstm/trunk/ArjunaJTS/jbossts-properties-arjunajts.xml
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jbossts-properties-arjunajts.xml 2010-04-07 15:09:16 UTC (rev 32462)
+++ labs/jbosstm/trunk/ArjunaJTS/jbossts-properties-arjunajts.xml 2010-04-07 15:16:53 UTC (rev 32463)
@@ -64,7 +64,7 @@
<!-- Which Xid types to recover -->
<entry key="JTAEnvironmentBean.xaRecoveryNodes">1</entry>
- <entry key="JTAEnvironmentBean.xaResourceOrphanFilters">
+ <entry key="JTAEnvironmentBean.xaResourceOrphanFilterClassNames">
com.arjuna.ats.internal.jta.recovery.arjunacore.JTATransactionLogXAResourceOrphanFilter
com.arjuna.ats.internal.jta.recovery.arjunacore.JTANodeNameXAResourceOrphanFilter
</entry>
Modified: labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/BeanPopulator.java
===================================================================
--- labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/BeanPopulator.java 2010-04-07 15:09:16 UTC (rev 32462)
+++ labs/jbosstm/trunk/common/classes/com/arjuna/common/internal/util/propertyservice/BeanPopulator.java 2010-04-07 15:16:53 UTC (rev 32463)
@@ -193,13 +193,17 @@
for(String name : listOfMatchingPropertyNames) {
String value = properties.getProperty(name);
lines.add(value);
- }
+ }
+
+ if(lines.size() == 0) {
+ return; // no relevant value in properties file, so leave bean defaults alone.
+ }
}
Object replacementValue = null;
if(java.util.Map.class.isAssignableFrom(field.getType())) {
- // we have a list but need a map. split eash element into key/value pair.
+ // we have a list but need a map. split each element into key/value pair.
Map<String, String> map = new HashMap<String, String>();
for(String element : lines) {
String[] tokens = element.split("=");
More information about the jboss-svn-commits
mailing list