[jboss-svn-commits] JBL Code SVN: r28879 - in labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS: WSCF/classes11/com/arjuna/mwlabs/wsc11 and 3 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Mon Aug 10 04:38:56 EDT 2009


Author: adinn
Date: 2009-08-10 04:38:55 -0400 (Mon, 10 Aug 2009)
New Revision: 28879

Modified:
   labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSCF/classes10/com/arjuna/mwlabs/wsc/ContextFactoryMapperImple.java
   labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSCF/classes11/com/arjuna/mwlabs/wsc11/ContextFactoryMapperImple.java
   labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes10/com/arjuna/mwlabs/wst/at/RegistrarImple.java
   labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes10/com/arjuna/mwlabs/wst/ba/RegistrarImple.java
   labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes11/com/arjuna/mwlabs/wst11/ba/RegistrarImple.java
Log:
resolved race condition in protocol loading code and updated hashmap change to apply to bas case and also to 1.0 cases -- fixes for JBTM-603

Modified: labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSCF/classes10/com/arjuna/mwlabs/wsc/ContextFactoryMapperImple.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSCF/classes10/com/arjuna/mwlabs/wsc/ContextFactoryMapperImple.java	2009-08-08 11:40:33 UTC (rev 28878)
+++ labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSCF/classes10/com/arjuna/mwlabs/wsc/ContextFactoryMapperImple.java	2009-08-10 08:38:55 UTC (rev 28879)
@@ -93,22 +93,25 @@
 		try
 		{
 			org.w3c.dom.Document doc = convert(coordinationTypeURI);
-			Object type = _protocols.getProtocolImplementation(convert(coordinationTypeURI));
+            // get and replace have to happen atomically
+            synchronized (_protocols) {
+                Object type = _protocols.getProtocolImplementation(convert(coordinationTypeURI));
 
-			if (type instanceof String)
-			{
-				Class c = Class.forName((String) type);
+                if (type instanceof String)
+                {
+                    Class c = Class.forName((String) type);
 
-				ContextFactory factory = (ContextFactory) c.newInstance();
+                    ContextFactory factory = (ContextFactory) c.newInstance();
 
-				_protocols.replaceProtocol(doc, factory);
+                    _protocols.replaceProtocol(doc, factory);
 
-				return factory;
-			}
-			else
-			{
-				return (ContextFactory) type;
-			}
+                    return factory;
+                }
+                else
+                {
+                    return (ContextFactory) type;
+                }
+            }
 		}
 		catch (Exception ex)
 		{

Modified: labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSCF/classes11/com/arjuna/mwlabs/wsc11/ContextFactoryMapperImple.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSCF/classes11/com/arjuna/mwlabs/wsc11/ContextFactoryMapperImple.java	2009-08-08 11:40:33 UTC (rev 28878)
+++ labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSCF/classes11/com/arjuna/mwlabs/wsc11/ContextFactoryMapperImple.java	2009-08-10 08:38:55 UTC (rev 28879)
@@ -93,23 +93,26 @@
 		try
 		{
 			org.w3c.dom.Document doc = convert(coordinationTypeURI);
-			Object type = _protocols.getProtocolImplementation(convert(coordinationTypeURI));
+            // get and replace have to happen atomically
+            synchronized (_protocols) {
+                Object type = _protocols.getProtocolImplementation(convert(coordinationTypeURI));
 
-			if (type instanceof String)
-			{
-				Class c = Class.forName((String) type);
+                if (type instanceof String)
+                {
+                    Class c = Class.forName((String) type);
 
-				ContextFactory factory = (ContextFactory) c.newInstance();
+                    ContextFactory factory = (ContextFactory) c.newInstance();
 
-				_protocols.replaceProtocol(doc, factory);
+                    _protocols.replaceProtocol(doc, factory);
 
-				return factory;
-			}
-			else
-			{
-				return (ContextFactory) type;
-			}
-		}
+                    return factory;
+                }
+                else
+                {
+                    return (ContextFactory) type;
+                }
+            }
+        }
 		catch (Exception ex)
 		{
 			ex.printStackTrace();

Modified: labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes10/com/arjuna/mwlabs/wst/at/RegistrarImple.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes10/com/arjuna/mwlabs/wst/at/RegistrarImple.java	2009-08-08 11:40:33 UTC (rev 28878)
+++ labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes10/com/arjuna/mwlabs/wst/at/RegistrarImple.java	2009-08-10 08:38:55 UTC (rev 28879)
@@ -32,6 +32,7 @@
 package com.arjuna.mwlabs.wst.at;
 
 import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
 
 import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.mw.wsas.activity.ActivityHierarchy;
@@ -345,5 +346,5 @@
     }
 
 	private CoordinatorManager _coordManager = null;
-	private HashMap _hierarchies = new HashMap();
+	private ConcurrentHashMap _hierarchies = new ConcurrentHashMap();
 }

Modified: labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes10/com/arjuna/mwlabs/wst/ba/RegistrarImple.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes10/com/arjuna/mwlabs/wst/ba/RegistrarImple.java	2009-08-08 11:40:33 UTC (rev 28878)
+++ labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes10/com/arjuna/mwlabs/wst/ba/RegistrarImple.java	2009-08-10 08:38:55 UTC (rev 28879)
@@ -32,6 +32,7 @@
 package com.arjuna.mwlabs.wst.ba;
 
 import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
 
 import com.arjuna.ats.arjuna.common.Uid;
 import com.arjuna.mw.wsas.activity.ActivityHierarchy;
@@ -262,5 +263,5 @@
 
 	private CoordinatorManager _coordManager = null;
 
-	private HashMap _hierarchies = new HashMap();
+	private ConcurrentHashMap _hierarchies = new ConcurrentHashMap();
 }

Modified: labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes11/com/arjuna/mwlabs/wst11/ba/RegistrarImple.java
===================================================================
--- labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes11/com/arjuna/mwlabs/wst11/ba/RegistrarImple.java	2009-08-08 11:40:33 UTC (rev 28878)
+++ labs/jbosstm/branches/JBOSSTS_4_6_1_GA_CP/XTS/WSTX/classes11/com/arjuna/mwlabs/wst11/ba/RegistrarImple.java	2009-08-10 08:38:55 UTC (rev 28879)
@@ -57,6 +57,7 @@
 import javax.xml.ws.wsaddressing.W3CEndpointReference;
 import javax.xml.ws.wsaddressing.W3CEndpointReferenceBuilder;
 import java.util.HashMap;
+import java.util.concurrent.ConcurrentHashMap;
 
 public class RegistrarImple implements com.arjuna.wsc11.Registrar
 {
@@ -273,5 +274,5 @@
 
 	private CoordinatorManager _coordManager = null;
 
-	private HashMap _hierarchies = new HashMap();
+	private ConcurrentHashMap _hierarchies = new ConcurrentHashMap();
 }
\ No newline at end of file



More information about the jboss-svn-commits mailing list