[jboss-svn-commits] JBL Code SVN: r8922 - in labs/jbosstm/trunk: ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/context and 8 other directories.

jboss-svn-commits at lists.jboss.org jboss-svn-commits at lists.jboss.org
Fri Jan 19 11:08:49 EST 2007


Author: kevin.conner at jboss.com
Date: 2007-01-19 11:08:48 -0500 (Fri, 19 Jan 2007)
New Revision: 8922

Added:
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/InterceptorInfo.java
Modified:
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/context/ContextClientRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/context/ContextServerRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/context/ContextClientRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/context/ContextServerRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/context/ContextClientRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/context/ContextServerRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/context/ContextClientRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/context/ContextServerRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java
   labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java
   labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerService.java
   labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerServiceMBean.java
Log:
Added propagation context configuration via MBean: JBTM-184

Added: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/InterceptorInfo.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/InterceptorInfo.java	                        (rev 0)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/InterceptorInfo.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -0,0 +1,85 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2006, 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 General Public License, v. 2.0.
+ * 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 General Public License for more details.
+ * You should have received a copy of the GNU General Public License,
+ * v. 2.0 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
+ * MA  02110-1301, USA.
+ * 
+ * (C) 2005-2006,
+ * @author JBoss Inc.
+ */
+/*
+ * Copyright (C) 2001, 2002,
+ *
+ * Hewlett-Packard Arjuna Labs,
+ * Newcastle upon Tyne,
+ * Tyne and Wear,
+ * UK.
+ *
+ * $Id: Configuration.javatmpl 2342 2006-03-30 13:06:17Z  $
+ */
+
+package com.arjuna.ats.jts.common;
+
+/**
+ * Runtime configuration information for the interceptors.
+ *
+ * @author Kevin Conner
+ */
+
+public class InterceptorInfo
+{
+    private static final boolean OTS_NEED_TRAN_CONTEXT ;
+    private static final boolean OTS_ALWAYS_PROPAGATE ;
+    
+    static
+    {
+	boolean otsNeedTranContext = Defaults.needTransactionContext ;
+	boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext ;
+	
+        final String needTranContextValue = jtsPropertyManager.propertyManager.getProperty(Environment.NEED_TRAN_CONTEXT) ;
+        
+        if (needTranContextValue != null)
+        {
+            otsNeedTranContext = "YES".equals(needTranContextValue) ;
+        }
+        
+        final String alwaysPropagate = jtsPropertyManager.propertyManager.getProperty(Environment.ALWAYS_PROPAGATE_CONTEXT) ;
+        
+        if (alwaysPropagate != null)
+        {
+            otsAlwaysPropagate = "YES".equals(alwaysPropagate) ;
+        }
+        
+        OTS_NEED_TRAN_CONTEXT = otsNeedTranContext ;
+        OTS_ALWAYS_PROPAGATE = otsAlwaysPropagate ;
+    }
+    
+    /**
+     * Get the flag indicating whether a transaction context is required.
+     * @return true if a context is required, false otherwise.
+     */
+    public static boolean getNeedTranContext()
+    {
+	return OTS_NEED_TRAN_CONTEXT ;
+    }
+    
+    /**
+     * Get the flag indicating whether a transaction context should always be propagated.
+     * @return true if a context is alwats propagated, false if it is only sent to OTS transactional objects.
+     */
+    public static boolean getAlwaysPropagate()
+    {
+	return OTS_ALWAYS_PROPAGATE ;
+    }
+}


Property changes on: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/common/InterceptorInfo.java
___________________________________________________________________
Name: svn:keywords
   + Rev Date
Name: svn:eol-style
   + native

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/context/ContextClientRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/context/ContextClientRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/context/ContextClientRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,37 +31,28 @@
 
 package com.arjuna.ats.jts.orbspecific.hporb.interceptors.context;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.arjuna.common.*;
-
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.*;
-
-import com.arjuna.ats.internal.jts.OTSImpleManager;
 import com.arjuna.ats.internal.jts.ControlWrapper;
 import com.arjuna.ats.internal.jts.ORBManager;
+import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.orbportability.*;
-
-import com.arjuna.common.util.logging.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.PortableInterceptor.ORBInitInfoPackage.*; 
-import org.omg.IOP.*;
-import org.omg.IOP.CodecFactoryPackage.*;
-
-import java.util.Hashtable;
-
-import org.omg.CORBA.SystemException;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
+import org.omg.CORBA.UNKNOWN;
+import org.omg.CosTransactions.Coordinator;
+import org.omg.CosTransactions.TransactionalObject;
 import org.omg.CosTransactions.Unavailable;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.ClientRequestInfo;
+import org.omg.PortableInterceptor.ClientRequestInterceptor;
 
 /**
  * PortableInterceptor::ClientRequestInterceptor implementation which adds a 
@@ -142,15 +133,29 @@
 	if (systemCall(request_info))
 	    return;
 	
+	final boolean otsAlwaysPropagate = InterceptorInfo.getAlwaysPropagate() ;
 	try
 	{
-	    if (!ContextClientRequestInterceptorImpl.otsAlwaysPropagate)
+	    if (!otsAlwaysPropagate)
 	    {
 		TransactionalObject ptr = org.omg.CosTransactions.TransactionalObjectHelper.narrow(request_info.target());
 	    
 		if (ptr == null)
 		    throw new BAD_PARAM();
 	    }
+	    else
+	    {
+		/** If we are set to always propagate then ensure we're not already in use **/
+	        /** If the value is not null then we are currently in use **/
+                if ( _inUse.get() != null )
+                {
+            	    return;
+                }
+                else
+                {
+            	    _inUse.set(_inUse);
+                }
+	    }
 
 	    try
 	    {
@@ -222,7 +227,7 @@
 		     * transaction context and we require one.
 		     */
 			
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		    else
 			stringRef = null;
@@ -255,6 +260,14 @@
 
 		throw new UNKNOWN(ex.toString());
 	    }
+            finally
+            {
+                /** If we are set to always propagate then ensure we clear the inuse flag **/
+                if (otsAlwaysPropagate)
+                {
+                        _inUse.set(null);
+                }
+            }
 	}
 	catch (BAD_PARAM ex)
 	{
@@ -310,34 +323,6 @@
     
     private int   _localSlot;
     private Codec _codec;
-
-    private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-    private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-    private static boolean otsHaveChecked = false;
-
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
+    private ThreadLocal _inUse = new ThreadLocal();
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/context/ContextServerRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/context/ContextServerRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/context/ContextServerRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,38 +31,27 @@
 
 package com.arjuna.ats.jts.orbspecific.hporb.interceptors.context;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.arjuna.common.*;
-
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.exceptions.ExceptionCodes;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.*;
-
 import com.arjuna.ats.internal.jts.ControlWrapper;
-import com.arjuna.ats.internal.jts.OTSImpleManager;
 import com.arjuna.ats.internal.jts.ORBManager;
+import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.orbportability.*;
-
-import com.arjuna.common.util.logging.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.PortableInterceptor.ORBInitInfoPackage.*; 
-import org.omg.IOP.*;
-import org.omg.IOP.CodecFactoryPackage.*;
-
-import java.util.Hashtable;
-
-import org.omg.CORBA.SystemException;
+import org.omg.CORBA.BAD_OPERATION;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
-import org.omg.CosTransactions.Unavailable;
+import org.omg.CORBA.UNKNOWN;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.InvalidSlot;
+import org.omg.PortableInterceptor.ServerRequestInfo;
+import org.omg.PortableInterceptor.ServerRequestInterceptor;
 
 /**
  * PortableInterceptor::ServerRequestInterceptor implementation which checks 
@@ -140,7 +129,7 @@
 	{
 	    try
 	    {
-		if (!ContextServerRequestInterceptorImpl.otsAlwaysPropagate)
+		if (!InterceptorInfo.getAlwaysPropagate())
 		{
 		    if (!request_info.target_is_a(org.omg.CosTransactions.TransactionalObjectHelper.id()))
 			throw new BAD_PARAM();
@@ -187,7 +176,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 	    }
@@ -389,34 +378,5 @@
     
 private Codec _codec;
 private int   _dataSlot;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,38 +31,30 @@
 
 package com.arjuna.ats.jts.orbspecific.hporb.interceptors.interposition;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.arjuna.common.*;
-
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.common.Environment;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.*;
-
-import com.arjuna.ats.internal.jts.ORBManager;
 import com.arjuna.ats.internal.jts.ControlWrapper;
+import com.arjuna.ats.internal.jts.ORBManager;
 import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.common.util.logging.*;
-
-import com.arjuna.orbportability.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.PortableInterceptor.ORBInitInfoPackage.*; 
-import org.omg.IOP.*;
-import org.omg.IOP.CodecFactoryPackage.*;
-
-import java.util.Hashtable;
-
-import org.omg.CORBA.SystemException;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
+import org.omg.CORBA.UNKNOWN;
+import org.omg.CosTransactions.Coordinator;
+import org.omg.CosTransactions.PropagationContext;
+import org.omg.CosTransactions.PropagationContextHelper;
+import org.omg.CosTransactions.TransactionalObject;
 import org.omg.CosTransactions.Unavailable;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.ClientRequestInfo;
+import org.omg.PortableInterceptor.ClientRequestInterceptor;
 
 /**
  * PortableInterceptor::ClientRequestInterceptor implementation which adds a 
@@ -138,15 +130,29 @@
 	if (systemCall(request_info))
 	    return;
 
+	final boolean otsAlwaysPropagate = InterceptorInfo.getAlwaysPropagate() ;
 	try
 	{
-	    if (!InterpositionClientRequestInterceptorImpl.otsAlwaysPropagate)
+	    if (!otsAlwaysPropagate)
 	    {
 		TransactionalObject ptr = org.omg.CosTransactions.TransactionalObjectHelper.narrow(request_info.target());
 	    
 		if (ptr == null)
 		    throw new BAD_PARAM();
 	    }
+	    else
+	    {
+		/** If we are set to always propagate then ensure we're not already in use **/
+	        /** If the value is not null then we are currently in use **/
+                if ( _inUse.get() != null )
+                {
+            	    return;
+                }
+                else
+                {
+            	    _inUse.set(_inUse);
+                }
+	    }
 
 	    try
 	    {
@@ -225,7 +231,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 		    
@@ -246,6 +252,14 @@
 	    {
 		throw new UNKNOWN(ex.toString());
 	    }
+            finally
+            {
+                /** If we are set to always propagate then ensure we clear the inuse flag **/
+                if (otsAlwaysPropagate)
+                {
+                        _inUse.set(null);
+                }
+            }
 	}
 	catch (BAD_PARAM ex)
 	{
@@ -317,34 +331,6 @@
 
 private int   _localSlot;
 private Codec _codec;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
+private ThreadLocal _inUse = new ThreadLocal();
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/hporb/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,38 +31,25 @@
 
 package com.arjuna.ats.jts.orbspecific.hporb.interceptors.interposition;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.arjuna.common.*;
-
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.common.Environment;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.*;
-
-import com.arjuna.ats.internal.jts.ORBManager;
 import com.arjuna.ats.internal.jts.ControlWrapper;
 import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.common.util.logging.*;
-
-import com.arjuna.orbportability.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.PortableInterceptor.ORBInitInfoPackage.*; 
-import org.omg.IOP.*;
-import org.omg.IOP.CodecFactoryPackage.*;
-
-import java.util.Hashtable;
-
-import org.omg.CORBA.SystemException;
+import org.omg.CORBA.BAD_OPERATION;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
-import org.omg.CosTransactions.Unavailable;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.InvalidSlot;
+import org.omg.PortableInterceptor.ServerRequestInfo;
+import org.omg.PortableInterceptor.ServerRequestInterceptor;
 
 /**
  * PortableInterceptor::ServerRequestInterceptor implementation which checks 
@@ -140,7 +127,7 @@
 	{
 	    try
 	    {
-		if (!InterpositionServerRequestInterceptorImpl.otsAlwaysPropagate)
+		if (!InterceptorInfo.getAlwaysPropagate())
 		{
 		    if (!request_info.target_is_a(org.omg.CosTransactions.TransactionalObjectHelper.id()))
 			throw new BAD_PARAM();
@@ -192,7 +179,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 	    }
@@ -373,34 +360,5 @@
 
 private Codec _codec;
 private int   _dataSlot;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/context/ContextClientRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/context/ContextClientRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/context/ContextClientRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,31 +31,33 @@
 
 package com.arjuna.ats.jts.orbspecific.jacorb.interceptors.context;
 
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.jtsLogger;
-import com.arjuna.ats.jts.logging.FacilityCode;
-
-import com.arjuna.ats.internal.jts.OTSImpleManager;
 import com.arjuna.ats.internal.jts.ControlWrapper;
 import com.arjuna.ats.internal.jts.ORBManager;
+import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.FacilityCode;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.common.util.logging.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.IOP.*;
-
-import org.omg.CORBA.SystemException;
+import org.omg.CORBA.Any;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.OBJECT_NOT_EXIST;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
+import org.omg.CORBA.UNKNOWN;
+import org.omg.CosTransactions.Coordinator;
+import org.omg.CosTransactions.TransactionalObject;
+import org.omg.CosTransactions.TransactionalObjectHelper;
 import org.omg.CosTransactions.Unavailable;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.ClientRequestInfo;
+import org.omg.PortableInterceptor.ClientRequestInterceptor;
 
-import java.lang.Object;
-
 /**
  * PortableInterceptor::ClientRequestInterceptor implementation which adds a 
  * service context carrying the transaction context.
@@ -131,9 +133,10 @@
 	if (systemCall(request_info))
 	    return;
 	
+	final boolean otsAlwaysPropagate = InterceptorInfo.getAlwaysPropagate() ;
 	try
 	{
-	    if (!ContextClientRequestInterceptorImpl.otsAlwaysPropagate)
+	    if (!otsAlwaysPropagate)
 	    {
 		TransactionalObject ptr = TransactionalObjectHelper.narrow(request_info.target());
 	    
@@ -224,7 +227,7 @@
 		     * transaction context and we require one.
 		     */
 			
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		    else
 			stringRef = null;
@@ -326,34 +329,5 @@
 private int   _localSlot;
 private Codec _codec;
 private ThreadLocal _inUse = new ThreadLocal();
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/context/ContextServerRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/context/ContextServerRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/context/ContextServerRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,26 +31,29 @@
 
 package com.arjuna.ats.jts.orbspecific.jacorb.interceptors.context;
 
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.*;
-
 import com.arjuna.ats.internal.jts.ControlWrapper;
-import com.arjuna.ats.internal.jts.OTSImpleManager;
 import com.arjuna.ats.internal.jts.ORBManager;
+import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.common.util.logging.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.IOP.*;
-
-import org.omg.CORBA.SystemException;
+import org.omg.CORBA.Any;
+import org.omg.CORBA.BAD_OPERATION;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
+import org.omg.CORBA.UNKNOWN;
+import org.omg.CosTransactions.TransactionalObjectHelper;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.InvalidSlot;
+import org.omg.PortableInterceptor.ServerRequestInfo;
+import org.omg.PortableInterceptor.ServerRequestInterceptor;
 
 /**
  * PortableInterceptor::ServerRequestInterceptor implementation which checks 
@@ -124,7 +127,7 @@
 	{
 	    try
 	    {
-		if (!ContextServerRequestInterceptorImpl.otsAlwaysPropagate)
+		if (!InterceptorInfo.getAlwaysPropagate())
 		{
 		    if (!request_info.target_is_a(TransactionalObjectHelper.id()))
 			throw new BAD_PARAM();
@@ -171,7 +174,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 	    }
@@ -375,34 +378,5 @@
 
 private Codec _codec;
 private int   _dataSlot;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,31 +31,34 @@
 
 package com.arjuna.ats.jts.orbspecific.jacorb.interceptors.interposition;
 
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.common.Environment;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.*;
-
-import com.arjuna.ats.internal.jts.ORBManager;
 import com.arjuna.ats.internal.jts.ControlWrapper;
+import com.arjuna.ats.internal.jts.ORBManager;
 import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.common.util.logging.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.IOP.*;
-
-import org.omg.CORBA.SystemException;
+import org.omg.CORBA.Any;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.OBJECT_NOT_EXIST;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
+import org.omg.CORBA.UNKNOWN;
+import org.omg.CosTransactions.Coordinator;
+import org.omg.CosTransactions.PropagationContext;
+import org.omg.CosTransactions.PropagationContextHelper;
+import org.omg.CosTransactions.TransactionalObject;
+import org.omg.CosTransactions.TransactionalObjectHelper;
 import org.omg.CosTransactions.Unavailable;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.ClientRequestInfo;
+import org.omg.PortableInterceptor.ClientRequestInterceptor;
 
-import java.lang.Object;
-
 /**
  * PortableInterceptor::ClientRequestInterceptor implementation which adds a 
  * service context carrying the transaction context.
@@ -130,9 +133,10 @@
 	if (systemCall(request_info))
 	    return;
 
+	final boolean otsAlwaysPropagate = InterceptorInfo.getAlwaysPropagate() ;
 	try
 	{
-	    if (!InterpositionClientRequestInterceptorImpl.otsAlwaysPropagate)
+	    if (!otsAlwaysPropagate)
 	    {
 		TransactionalObject ptr = TransactionalObjectHelper.narrow(request_info.target());
 
@@ -230,7 +234,7 @@
 		     * context and we require one.
 		     */
 
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 
@@ -254,7 +258,7 @@
             finally
             {
                 /** If we are set to always propagate then ensure we clear the inuse flag **/
-                if (InterpositionClientRequestInterceptorImpl.otsAlwaysPropagate)
+                if (otsAlwaysPropagate)
                 {
                         _inUse.set(null);
                 }
@@ -336,34 +340,5 @@
 private int   _localSlot;
 private Codec _codec;
 private ThreadLocal _inUse = new ThreadLocal();
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/jacorb/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,25 +31,28 @@
 
 package com.arjuna.ats.jts.orbspecific.jacorb.interceptors.interposition;
 
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.common.Environment;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.*;
-
 import com.arjuna.ats.internal.jts.ControlWrapper;
 import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.common.util.logging.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.IOP.*;
-
-import org.omg.CORBA.SystemException;
+import org.omg.CORBA.Any;
+import org.omg.CORBA.BAD_OPERATION;
 import org.omg.CORBA.BAD_PARAM;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
+import org.omg.CosTransactions.PropagationContextHelper;
+import org.omg.CosTransactions.TransactionalObjectHelper;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.InvalidSlot;
+import org.omg.PortableInterceptor.ServerRequestInfo;
+import org.omg.PortableInterceptor.ServerRequestInterceptor;
 
 /**
  * PortableInterceptor::ServerRequestInterceptor implementation which checks 
@@ -123,7 +126,7 @@
 	{
 	    try
 	    {
-		if (!InterpositionServerRequestInterceptorImpl.otsAlwaysPropagate)
+		if (!InterceptorInfo.getAlwaysPropagate())
 		{
 		    if (!request_info.target_is_a(TransactionalObjectHelper.id()))
 			throw new BAD_PARAM();
@@ -175,7 +178,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 	    }
@@ -364,33 +367,4 @@
 
 private Codec _codec;
 private int   _dataSlot;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/context/ContextClientRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/context/ContextClientRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/context/ContextClientRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,38 +31,31 @@
 
 package com.arjuna.ats.jts.orbspecific.javaidl.interceptors.context;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.arjuna.common.*;
-
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.jtsLogger;
-import com.arjuna.ats.jts.logging.FacilityCode;
-
-import com.arjuna.ats.internal.jts.OTSImpleManager;
 import com.arjuna.ats.internal.jts.ControlWrapper;
 import com.arjuna.ats.internal.jts.ORBManager;
+import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.FacilityCode;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.orbportability.*;
-
-import com.arjuna.common.util.logging.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.PortableInterceptor.ORBInitInfoPackage.*; 
-import org.omg.IOP.*;
-import org.omg.IOP.CodecFactoryPackage.*;
-
-import java.util.Hashtable;
-
-import org.omg.CORBA.SystemException;
+import org.omg.CORBA.Any;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
+import org.omg.CORBA.UNKNOWN;
+import org.omg.CosTransactions.Coordinator;
+import org.omg.CosTransactions.TransactionalObject;
+import org.omg.CosTransactions.TransactionalObjectHelper;
 import org.omg.CosTransactions.Unavailable;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.ClientRequestInfo;
+import org.omg.PortableInterceptor.ClientRequestInterceptor;
 
 /**
  * PortableInterceptor::ClientRequestInterceptor implementation which adds a 
@@ -159,15 +152,29 @@
 	if (systemCall(request_info))
 	    return;
 	
+	final boolean otsAlwaysPropagate = InterceptorInfo.getAlwaysPropagate() ;
 	try
 	{
-	    if (!ContextClientRequestInterceptorImpl.otsAlwaysPropagate)
+	    if (!otsAlwaysPropagate)
 	    {
 		TransactionalObject ptr = TransactionalObjectHelper.narrow(request_info.target());
 	    
 		if (ptr == null)
 		    throw new BAD_PARAM();
 	    }
+	    else
+	    {
+		/** If we are set to always propagate then ensure we're not already in use **/
+	        /** If the value is not null then we are currently in use **/
+                if ( _inUse.get() != null )
+                {
+            	    return;
+                }
+                else
+                {
+            	    _inUse.set(_inUse);
+                }
+	    }
 
 	    try
 	    {
@@ -239,7 +246,7 @@
 		     * transaction context and we require one.
 		     */
 			
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		    else
 			stringRef = null;
@@ -272,6 +279,14 @@
 
 		throw new UNKNOWN(ex.toString());
 	    }
+            finally
+            {
+                /** If we are set to always propagate then ensure we clear the inuse flag **/
+                if (otsAlwaysPropagate)
+                {
+                        _inUse.set(null);
+                }
+            }
 	}
 	catch (BAD_PARAM ex)
 	{
@@ -327,34 +342,6 @@
     
 private int   _localSlot;
 private Codec _codec;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
+private ThreadLocal _inUse = new ThreadLocal();
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/context/ContextServerRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/context/ContextServerRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/context/ContextServerRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,38 +31,29 @@
 
 package com.arjuna.ats.jts.orbspecific.javaidl.interceptors.context;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.arjuna.common.*;
-
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.exceptions.ExceptionCodes;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.*;
-
 import com.arjuna.ats.internal.jts.ControlWrapper;
-import com.arjuna.ats.internal.jts.OTSImpleManager;
 import com.arjuna.ats.internal.jts.ORBManager;
+import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.orbportability.*;
-
-import com.arjuna.common.util.logging.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.PortableInterceptor.ORBInitInfoPackage.*; 
-import org.omg.IOP.*;
-import org.omg.IOP.CodecFactoryPackage.*;
-
-import java.util.Hashtable;
-
-import org.omg.CORBA.SystemException;
+import org.omg.CORBA.Any;
+import org.omg.CORBA.BAD_OPERATION;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
-import org.omg.CosTransactions.Unavailable;
+import org.omg.CORBA.UNKNOWN;
+import org.omg.CosTransactions.TransactionalObjectHelper;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.InvalidSlot;
+import org.omg.PortableInterceptor.ServerRequestInfo;
+import org.omg.PortableInterceptor.ServerRequestInterceptor;
 
 /**
  * PortableInterceptor::ServerRequestInterceptor implementation which checks 
@@ -156,7 +147,7 @@
 	{
 	    try
 	    {
-		if (!ContextServerRequestInterceptorImpl.otsAlwaysPropagate)
+		if (!InterceptorInfo.getAlwaysPropagate())
 		{
 		    if (!request_info.target_is_a(TransactionalObjectHelper.id()))
 			throw new BAD_PARAM();
@@ -203,7 +194,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 	    }
@@ -402,34 +393,5 @@
     
 private Codec _codec;
 private int   _dataSlot;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,38 +31,32 @@
 
 package com.arjuna.ats.jts.orbspecific.javaidl.interceptors.interposition;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.arjuna.common.*;
-
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.common.Environment;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.*;
-
-import com.arjuna.ats.internal.jts.ORBManager;
 import com.arjuna.ats.internal.jts.ControlWrapper;
+import com.arjuna.ats.internal.jts.ORBManager;
 import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.orbportability.*;
-
-import com.arjuna.common.util.logging.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.PortableInterceptor.ORBInitInfoPackage.*; 
-import org.omg.IOP.*;
-import org.omg.IOP.CodecFactoryPackage.*;
-
-import java.util.Hashtable;
-
-import org.omg.CORBA.SystemException;
+import org.omg.CORBA.Any;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
+import org.omg.CORBA.UNKNOWN;
+import org.omg.CosTransactions.Coordinator;
+import org.omg.CosTransactions.PropagationContext;
+import org.omg.CosTransactions.PropagationContextHelper;
+import org.omg.CosTransactions.TransactionalObject;
+import org.omg.CosTransactions.TransactionalObjectHelper;
 import org.omg.CosTransactions.Unavailable;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.ClientRequestInfo;
+import org.omg.PortableInterceptor.ClientRequestInterceptor;
 
 /**
  * PortableInterceptor::ClientRequestInterceptor implementation which adds a 
@@ -158,15 +152,29 @@
 	if (systemCall(request_info))
 	    return;
 
+	final boolean otsAlwaysPropagate = InterceptorInfo.getAlwaysPropagate() ;
 	try
 	{
-	    if (!InterpositionClientRequestInterceptorImpl.otsAlwaysPropagate)
+	    if (!otsAlwaysPropagate)
 	    {
 		TransactionalObject ptr = TransactionalObjectHelper.narrow(request_info.target());
 	    
 		if (ptr == null)
 		    throw new BAD_PARAM();
 	    }
+	    else
+	    {
+		/** If we are set to always propagate then ensure we're not already in use **/
+	        /** If the value is not null then we are currently in use **/
+                if ( _inUse.get() != null )
+                {
+            	    return;
+                }
+                else
+                {
+            	    _inUse.set(_inUse);
+                }
+	    }
 
 	    try
 	    {
@@ -245,7 +253,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 		    
@@ -266,6 +274,14 @@
 	    {
 		throw new UNKNOWN(ex.toString());
 	    }
+            finally
+            {
+                /** If we are set to always propagate then ensure we clear the inuse flag **/
+                if (otsAlwaysPropagate)
+                {
+                        _inUse.set(null);
+                }
+            }
 	}
 	catch (BAD_PARAM ex)
 	{
@@ -337,34 +353,6 @@
 
 private int   _localSlot;
 private Codec _codec;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
+private ThreadLocal _inUse = new ThreadLocal();
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/javaidl/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -31,38 +31,28 @@
 
 package com.arjuna.ats.jts.orbspecific.javaidl.interceptors.interposition;
 
-import com.arjuna.common.util.propertyservice.PropertyManager;
-
-import com.arjuna.ats.arjuna.common.*;
-
-import com.arjuna.ats.jts.*;
-import com.arjuna.ats.jts.common.Environment;
-import com.arjuna.ats.jts.common.jtsPropertyManager;
-import com.arjuna.ats.jts.common.Defaults;
-import com.arjuna.ats.jts.logging.*;
-
-import com.arjuna.ats.internal.jts.ORBManager;
 import com.arjuna.ats.internal.jts.ControlWrapper;
 import com.arjuna.ats.internal.jts.OTSImpleManager;
+import com.arjuna.ats.jts.OTSManager;
+import com.arjuna.ats.jts.common.InterceptorInfo;
+import com.arjuna.ats.jts.logging.jtsLogger;
+import com.arjuna.common.util.logging.DebugLevel;
+import com.arjuna.common.util.logging.VisibilityLevel;
 
-import com.arjuna.orbportability.*;
-
-import com.arjuna.common.util.logging.*;
-
-import org.omg.CosTransactions.*;
-import org.omg.CORBA.*;
-import org.omg.PortableInterceptor.*; 
-import org.omg.PortableInterceptor.ORBInitInfoPackage.*; 
-import org.omg.IOP.*;
-import org.omg.IOP.CodecFactoryPackage.*;
-
-import java.util.Hashtable;
-
-import org.omg.CORBA.SystemException;
+import org.omg.CORBA.Any;
+import org.omg.CORBA.BAD_OPERATION;
 import org.omg.CORBA.BAD_PARAM;
-import org.omg.CORBA.UNKNOWN;
+import org.omg.CORBA.LocalObject;
+import org.omg.CORBA.SystemException;
+import org.omg.CORBA.TCKind;
 import org.omg.CORBA.TRANSACTION_REQUIRED;
-import org.omg.CosTransactions.Unavailable;
+import org.omg.CosTransactions.PropagationContextHelper;
+import org.omg.CosTransactions.TransactionalObjectHelper;
+import org.omg.IOP.Codec;
+import org.omg.IOP.ServiceContext;
+import org.omg.PortableInterceptor.InvalidSlot;
+import org.omg.PortableInterceptor.ServerRequestInfo;
+import org.omg.PortableInterceptor.ServerRequestInterceptor;
 
 /**
  * PortableInterceptor::ServerRequestInterceptor implementation which checks 
@@ -156,7 +146,7 @@
 	{
 	    try
 	    {
-		if (!InterpositionServerRequestInterceptorImpl.otsAlwaysPropagate)
+		if (!InterceptorInfo.getAlwaysPropagate())
 		{
 		    if (!request_info.target_is_a(TransactionalObjectHelper.id()))
 			throw new BAD_PARAM();
@@ -208,7 +198,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 	    }
@@ -389,33 +379,4 @@
 
 private Codec _codec;
 private int   _dataSlot;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
 }

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/context/ContextClientRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/context/ContextClientRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/context/ContextClientRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -36,6 +36,7 @@
 import com.arjuna.ats.arjuna.common.*;
 
 import com.arjuna.ats.jts.*;
+import com.arjuna.ats.jts.common.InterceptorInfo;
 import com.arjuna.ats.jts.common.jtsPropertyManager;
 import com.arjuna.ats.jts.common.Defaults;
 import com.arjuna.ats.jts.logging.jtsLogger;
@@ -139,15 +140,29 @@
 	if (systemCall(request_info))
 	    return;
 	
+	final boolean otsAlwaysPropagate = InterceptorInfo.getAlwaysPropagate() ;
 	try
 	{
-	    if (!ContextClientRequestInterceptorImpl.otsAlwaysPropagate)
+	    if (!otsAlwaysPropagate)
 	    {
 		TransactionalObject ptr = org.omg.CosTransactions.TransactionalObjectHelper.narrow(request_info.target());
 	    
 		if (ptr == null)
 		    throw new BAD_PARAM();
 	    }
+	    else
+	    {
+		/** If we are set to always propagate then ensure we're not already in use **/
+	        /** If the value is not null then we are currently in use **/
+                if ( _inUse.get() != null )
+                {
+            	    return;
+                }
+                else
+                {
+            	    _inUse.set(_inUse);
+                }
+	    }
 
 	    try
 	    {
@@ -219,7 +234,7 @@
 		     * transaction context and we require one.
 		     */
 			
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		    else
 			stringRef = null;
@@ -252,6 +267,14 @@
 
 		throw new UNKNOWN(ex.toString());
 	    }
+            finally
+            {
+                /** If we are set to always propagate then ensure we clear the inuse flag **/
+                if (otsAlwaysPropagate)
+                {
+                        _inUse.set(null);
+                }
+            }
 	}
 	catch (BAD_PARAM ex)
 	{
@@ -307,34 +330,6 @@
     
 private int   _localSlot;
 private Codec _codec;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
+private ThreadLocal _inUse = new ThreadLocal();
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/context/ContextServerRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/context/ContextServerRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/context/ContextServerRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -37,6 +37,7 @@
 
 import com.arjuna.ats.jts.*;
 import com.arjuna.ats.jts.exceptions.ExceptionCodes;
+import com.arjuna.ats.jts.common.InterceptorInfo;
 import com.arjuna.ats.jts.common.jtsPropertyManager;
 import com.arjuna.ats.jts.common.Defaults;
 import com.arjuna.ats.jts.logging.*;
@@ -136,7 +137,7 @@
 	{
 	    try
 	    {
-		if (!ContextServerRequestInterceptorImpl.otsAlwaysPropagate)
+		if (!InterceptorInfo.getAlwaysPropagate())
 		{
 		    if (!request_info.target_is_a(org.omg.CosTransactions.TransactionalObjectHelper.id()))
 			throw new BAD_PARAM();
@@ -183,7 +184,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 	    }
@@ -382,34 +383,5 @@
     
 private Codec _codec;
 private int   _dataSlot;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/interposition/InterpositionClientRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -37,6 +37,7 @@
 
 import com.arjuna.ats.jts.*;
 import com.arjuna.ats.jts.common.Environment;
+import com.arjuna.ats.jts.common.InterceptorInfo;
 import com.arjuna.ats.jts.common.jtsPropertyManager;
 import com.arjuna.ats.jts.common.Defaults;
 import com.arjuna.ats.jts.logging.*;
@@ -140,15 +141,29 @@
 	if (systemCall(request_info))
 	    return;
 
+	final boolean otsAlwaysPropagate = InterceptorInfo.getAlwaysPropagate() ;
 	try
 	{
-	    if (!InterpositionClientRequestInterceptorImpl.otsAlwaysPropagate)
+	    if (!otsAlwaysPropagate)
 	    {
 		TransactionalObject ptr = org.omg.CosTransactions.TransactionalObjectHelper.narrow(request_info.target());
 	    
 		if (ptr == null)
 		    throw new BAD_PARAM();
 	    }
+	    else
+	    {
+		/** If we are set to always propagate then ensure we're not already in use **/
+	        /** If the value is not null then we are currently in use **/
+                if ( _inUse.get() != null )
+                {
+            	    return;
+                }
+                else
+                {
+            	    _inUse.set(_inUse);
+                }
+	    }
 
 	    try
 	    {
@@ -227,7 +242,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 		    
@@ -248,6 +263,14 @@
 	    {
 		throw new UNKNOWN(ex.toString());
 	    }
+            finally
+            {
+                /** If we are set to always propagate then ensure we clear the inuse flag **/
+                if (otsAlwaysPropagate)
+                {
+                        _inUse.set(null);
+                }
+            }
 	}
 	catch (BAD_PARAM ex)
 	{
@@ -319,34 +342,6 @@
 
 private int   _localSlot;
 private Codec _codec;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
+private ThreadLocal _inUse = new ThreadLocal();
 }
 

Modified: labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java
===================================================================
--- labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/ArjunaJTS/jts/classes/com/arjuna/ats/jts/orbspecific/orbix2000/interceptors/interposition/InterpositionServerRequestInterceptorImpl.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -37,6 +37,7 @@
 
 import com.arjuna.ats.jts.*;
 import com.arjuna.ats.jts.common.Environment;
+import com.arjuna.ats.jts.common.InterceptorInfo;
 import com.arjuna.ats.jts.common.jtsPropertyManager;
 import com.arjuna.ats.jts.common.Defaults;
 import com.arjuna.ats.jts.logging.*;
@@ -136,7 +137,7 @@
 	{
 	    try
 	    {
-		if (!InterpositionServerRequestInterceptorImpl.otsAlwaysPropagate)
+		if (!InterceptorInfo.getAlwaysPropagate())
 		{
 		    if (!request_info.target_is_a(org.omg.CosTransactions.TransactionalObjectHelper.id()))
 			throw new BAD_PARAM();
@@ -188,7 +189,7 @@
 		     * context and we require one.
 		     */
 	    
-		    if (otsNeedTranContext)
+		    if (InterceptorInfo.getNeedTranContext())
 			throw new TRANSACTION_REQUIRED();
 		}
 	    }
@@ -369,33 +370,4 @@
 
 private Codec _codec;
 private int   _dataSlot;
-
-private static boolean otsNeedTranContext = Defaults.needTransactionContext;
-private static boolean otsAlwaysPropagate = Defaults.alwaysPropagateContext;
-private static boolean otsHaveChecked = false;
-    
-    static
-    {
-	if (!otsHaveChecked)
-	{
-	    String env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.NEED_TRAN_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsNeedTranContext = true;
-	    }
-
-	    env = jtsPropertyManager.propertyManager.getProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, null);
-
-	    if (env != null)
-	    {
-		if (env.compareTo("YES") == 0)
-		    otsAlwaysPropagate = true;
-	    }
-	    
-	    otsHaveChecked = true;
-	}
-    }
-
 }

Modified: labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerService.java
===================================================================
--- labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerService.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerService.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -90,8 +90,6 @@
 		//System.setProperty(LogFactory.LOGGER_PROPERTY, "log4j_releveler") ;
 	}
 
-    public final static String PROPAGATE_FULL_CONTEXT_PROPERTY = "com.arjuna.ats.jbossatx.jts.propagatefullcontext";
-
     private final static String SERVICE_NAME = "TransactionManagerService";
     private final static String PROPAGATION_CONTEXT_IMPORTER_JNDI_REFERENCE = "java:/TransactionPropagationContextImporter";
     private final static String PROPAGATION_CONTEXT_EXPORTER_JNDI_REFERENCE = "java:/TransactionPropagationContextExporter";
@@ -99,7 +97,7 @@
 
     private RecoveryManager _recoveryManager;
     private boolean _runRM = true;
-
+    private boolean alwaysPropagateContext = true ;
     /**
      * Use the short class name as the default for the service name.
      */
@@ -129,6 +127,9 @@
         System.setProperty(com.arjuna.ats.tsmx.TransactionServiceMX.AGENT_IMPLEMENTATION_PROPERTY,
                 com.arjuna.ats.internal.jbossatx.agent.LocalJBossAgentImpl.class.getName());
         System.setProperty(Environment.LAST_RESOURCE_OPTIMISATION_INTERFACE, LastResource.class.getName()) ;
+        
+        final String alwaysPropagateProperty = alwaysPropagateContext ? "YES" : "NO" ;
+        System.setProperty(com.arjuna.ats.jts.common.Environment.ALWAYS_PROPAGATE_CONTEXT, alwaysPropagateProperty);
 
         /** Register management plugin **/
         com.arjuna.ats.arjuna.common.arjPropertyManager.propertyManager.addManagementPlugin(new PropertyServiceJMXPlugin());
@@ -457,4 +458,13 @@
         Reference ref = new Reference(className, className, null);
         new InitialContext().bind(jndiName, ref);
     }
+
+    /**
+     * Set the flag indicating whether the propagation context should always be propagated.
+     * @param alwaysPropagateContext true if the context should always be propagated, false if only propagated to OTS transactional objects.
+     */
+    public void setAlwaysPropagateContext(final boolean alwaysPropagateContext)
+    {
+	this.alwaysPropagateContext = alwaysPropagateContext ;
+    }
 }

Modified: labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerServiceMBean.java
===================================================================
--- labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerServiceMBean.java	2007-01-19 14:58:45 UTC (rev 8921)
+++ labs/jbosstm/trunk/atsintegration/classes/com/arjuna/ats/jbossatx/jts/TransactionManagerServiceMBean.java	2007-01-19 16:08:48 UTC (rev 8922)
@@ -137,5 +137,11 @@
      * @param runRM
      */
     public void setRunInVMRecoveryManager(boolean runRM);
+
+    /**
+     * Set the flag indicating whether the propagation context should always be propagated.
+     * @param alwaysPropagateContext true if the context should always be propagated, false if only propagated to OTS transactional objects.
+     */
+    public void setAlwaysPropagateContext(final boolean alwaysPropagateContext) ;
 }
 




More information about the jboss-svn-commits mailing list