You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ad...@apache.org on 2009/12/29 00:14:05 UTC

svn commit: r894271 [2/2] - in /ofbiz/branches/executioncontext20090812: ./ framework/api/src/org/ofbiz/api/authorization/ framework/api/src/org/ofbiz/api/context/ framework/context/src/org/ofbiz/context/ framework/entity/src/org/ofbiz/entity/ framewor...

Modified: ofbiz/branches/executioncontext20090812/framework/security/src/org/ofbiz/security/SecurityFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/security/src/org/ofbiz/security/SecurityFactory.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/security/src/org/ofbiz/security/SecurityFactory.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/security/src/org/ofbiz/security/SecurityFactory.java Mon Dec 28 23:14:02 2009
@@ -50,8 +50,8 @@
      * @param delegator the generic delegator
      * @return instance of security implementation (default: OFBizSecurity)
      */
-    public static AuthorizationManager getInstance(GenericDelegator delegator) throws SecurityConfigurationException {
-    	AuthorizationManager security = null;
+    public static Security getInstance(GenericDelegator delegator) throws SecurityConfigurationException {
+        Security security = null;
 
         // Make securityName a singleton
         if (securityName == null) {
@@ -65,7 +65,7 @@
             try {
                 ClassLoader loader = Thread.currentThread().getContextClassLoader();
                 Class<?> c = loader.loadClass(getSecurityClass(securityName));
-                security = (AuthorizationManager) c.newInstance();
+                security = (Security) c.newInstance();
                 security.setDelegator(delegator);
             } catch (ClassNotFoundException cnf) {
                 throw new SecurityConfigurationException("Cannot load security implementation class", cnf);
@@ -112,7 +112,7 @@
         if (securityInfo == null) {
             SecurityConfigUtil.SecurityInfo _securityInfo = SecurityConfigUtil.getSecurityInfo(securityName);
 
-            // Make sure, that the security context name is defined and present
+            // Make sure, that the security conetxt name is defined and present
             if (_securityInfo == null) {
                 throw new SecurityConfigurationException("ERROR: no security definition was found with the name " + securityName + " in security.xml");
             }
@@ -121,10 +121,7 @@
 
         // This is the default implementation and uses org.ofbiz.security.OFBizSecurity
         if (UtilValidate.isEmpty(securityInfo.className)) {
-        	className = UtilProperties.getPropertyValue("api.properties", "authorizationManager.class");
-        	if (UtilValidate.isEmpty(className)) {
-        		className = DEFAULT_SECURITY;
-        	}
+            className = DEFAULT_SECURITY;
         } else {
             // Use a customized security
             className = securityInfo.className;

Modified: ofbiz/branches/executioncontext20090812/framework/security/src/org/ofbiz/security/authz/AuthorizationFactory.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/security/src/org/ofbiz/security/authz/AuthorizationFactory.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/security/src/org/ofbiz/security/authz/AuthorizationFactory.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/security/src/org/ofbiz/security/authz/AuthorizationFactory.java Mon Dec 28 23:14:02 2009
@@ -66,7 +66,8 @@
         synchronized (AuthorizationFactory.class) {
             try {
                 ClassLoader loader = Thread.currentThread().getContextClassLoader();
-                Class c = loader.loadClass(getAuthorizationClass(securityName));
+//                Class c = loader.loadClass(getAuthorizationClass(securityName));
+                Class c = loader.loadClass(DEFAULT_AUTHORIZATION);
                 security = (Authorization) c.newInstance();
                 security.setDelegator(delegator);
             } catch (ClassNotFoundException cnf) {

Modified: ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ExecutionContext.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ExecutionContext.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ExecutionContext.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ExecutionContext.java Mon Dec 28 23:14:02 2009
@@ -18,9 +18,6 @@
  */
 package org.ofbiz.service;
 
-import java.util.Map;
-
-import org.ofbiz.security.SecurityConfigurationException;
 import org.ofbiz.service.LocalDispatcher;
 
 /**
@@ -35,14 +32,6 @@
 	 */
 	public LocalDispatcher getDispatcher();
 
-	/** Initializes this ExecutionContext with artifacts found in
-	 * <code>params</code>.
-	 * 
-	 * @param params
-	 * @throws SecurityConfigurationException 
-	 */
-	public void initializeContext(Map<String, ? extends Object> params);
-
 	/** Sets the current <code>LocalDispatcher</code> instance.
 	 * 
 	 * @param dispatcher The new <code>LocalDispatcher</code> instance

Modified: ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ModelService.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ModelService.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ModelService.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ModelService.java Mon Dec 28 23:14:02 2009
@@ -56,8 +56,6 @@
 import javolution.util.FastMap;
 
 import org.ofbiz.api.context.ExecutionArtifact;
-import org.ofbiz.api.context.ExecutionContext;
-import org.ofbiz.api.context.ExecutionContextFactory;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
 import org.ofbiz.base.util.ObjectType;
@@ -862,23 +860,6 @@
             }
         }
 
-        // Copy/create ExecutionContext
-        ExecutionContext executionContext = null;
-        if (source.containsKey("executionContext")) {
-        	executionContext = (ExecutionContext) source.get("executionContext");
-        } else {
-        	try {
-				executionContext = ExecutionContextFactory.getInstance();
-	        	executionContext.setLocale(locale);
-	        	executionContext.setTimeZone(timeZone);
-			} catch (Exception e) {
-				Debug.logError(e, "Error while getting ExecutionContext: ", module);
-			}
-        }
-        if (executionContext != null) {
-            target.put("executionContext", executionContext);
-        }
-        
         for (ModelParam param: contextParamList) {
             //boolean internalParam = param.internal;
 

Modified: ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ServiceDispatcher.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ServiceDispatcher.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ServiceDispatcher.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ServiceDispatcher.java Mon Dec 28 23:14:02 2009
@@ -30,8 +30,6 @@
 import javolution.util.FastMap;
 
 import org.ofbiz.api.authorization.AccessController;
-import org.ofbiz.security.AuthorizationManager;
-import org.ofbiz.api.context.ExecutionContextFactory;
 import org.ofbiz.api.context.GenericParametersArtifact;
 import org.ofbiz.base.config.GenericConfigException;
 import org.ofbiz.base.util.Debug;
@@ -82,7 +80,7 @@
     protected GenericDelegator delegator = null;
     protected GenericEngineFactory factory = null;
     protected Authorization authz = null;
-    protected AuthorizationManager security = null;
+    protected Security security = null;
     protected Map<String, DispatchContext> localContext = null;
     protected Map<String, List<GenericServiceCallback>> callbacks = null;
     protected JobManager jm = null;
@@ -113,11 +111,12 @@
             if (!this.delegator.getOriginalDelegatorName().equals(delegatorName)) {
             	delegatorName = this.delegator.getOriginalDelegatorName();
             }
-            ExecutionContext executionContext = (ExecutionContext) ExecutionContextFactory.getInstance();
-            GenericDelegator newDelegator = DelegatorFactory.getGenericDelegator(delegatorName, executionContext);
+            ThreadContext.reset();
+            GenericDelegator newDelegator = DelegatorFactory.getGenericDelegator(delegatorName);
+            ThreadContext.setDelegator(newDelegator);
             GenericValue userLogin = newDelegator.makeValue("UserLogin");
             userLogin.set("userLoginId", "system");
-            executionContext.setUserLogin(userLogin);
+            ThreadContext.setUserLogin(userLogin);
             this.jm = JobManager.getInstance(newDelegator, enableJM);
         } catch (Exception e) {
             Debug.logWarning(e.getMessage(), module);
@@ -303,21 +302,11 @@
         // for isolated transactions
         Transaction parentTransaction = null;
 
-        ExecutionContext executionContext = (ExecutionContext) context.get("executionContext");
-        if (executionContext == null) {
-            try {
-                executionContext = (ExecutionContext) ExecutionContextFactory.getInstance();
-			} catch (Exception e) {
-				throw new GenericServiceException(e);
-			}
-            context.put("executionContext", executionContext);
-        }
         GenericDelegator newDelegator = DelegatorFactory.getGenericDelegator(this.delegator.getDelegatorName());
-        executionContext.setDelegator(newDelegator);
-        executionContext.setDispatcher(ctx.getDispatcher());
-        executionContext.setSecurity(this.security);
-        executionContext.initializeContext(context);
-        executionContext.pushExecutionArtifact(new GenericParametersArtifact(modelService, context));
+        ThreadContext.setDelegator(newDelegator);
+        ThreadContext.setDispatcher(ctx.getDispatcher());
+        ThreadContext.initializeContext(context);
+        ThreadContext.pushExecutionArtifact(new GenericParametersArtifact(modelService, context));
         // start the transaction
         boolean beganTrans = false;
         try {
@@ -329,7 +318,7 @@
                 }
             }
             if (!permissionService) {
-            	AccessController accessController = executionContext.getAccessController();
+            	AccessController accessController = ThreadContext.getAccessController();
             	accessController.checkPermission(Access);
             }
             //Debug.logInfo("=========================== " + modelService.name + " 1 tx status =" + TransactionUtil.getStatusString() + ", modelService.requireNewTransaction=" + modelService.requireNewTransaction + ", modelService.useTransaction=" + modelService.useTransaction + ", TransactionUtil.isTransactionInPlace()=" + TransactionUtil.isTransactionInPlace(), module);
@@ -594,7 +583,7 @@
             Debug.logError(te, "Problems with the transaction", module);
             throw new GenericServiceException("Problems with the transaction.", te.getNested());
         } finally {
-            executionContext.popExecutionArtifact();
+            ThreadContext.popExecutionArtifact();
             // release the semaphore lock
             if (lock != null) {
                 lock.release();

Added: ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ThreadContext.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ThreadContext.java?rev=894271&view=auto
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ThreadContext.java (added)
+++ ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ThreadContext.java Mon Dec 28 23:14:02 2009
@@ -0,0 +1,41 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ *******************************************************************************/
+package org.ofbiz.service;
+
+
+/** A convenience class for accessing the current thread's <code>ExecutionContext</code>.
+ * @see {@link org.ofbiz.service.ExecutionContext} 
+ */
+public class ThreadContext extends org.ofbiz.entity.ThreadContext {
+
+    protected static final String module = ThreadContext.class.getName();
+
+    public static LocalDispatcher getDispatcher() {
+        return getExecutionContext().getDispatcher();
+    }
+
+    protected static ExecutionContext getExecutionContext() {
+        return (ExecutionContext) executionContext.get();
+    }
+
+    public static void setDispatcher(LocalDispatcher dispatcher) {
+        getExecutionContext().setDispatcher(dispatcher);
+    }
+
+}

Propchange: ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ThreadContext.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ThreadContext.java
------------------------------------------------------------------------------
    svn:keywords = "Date Rev Author URL Id"

Propchange: ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/ThreadContext.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/job/JobPoller.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/job/JobPoller.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/job/JobPoller.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/job/JobPoller.java Mon Dec 28 23:14:02 2009
@@ -24,7 +24,10 @@
 import javolution.util.FastList;
 import javolution.util.FastMap;
 
+import org.ofbiz.api.context.GenericExecutionArtifact;
+import org.ofbiz.service.ThreadContext;
 import org.ofbiz.base.util.Debug;
+import org.ofbiz.api.authorization.NullAuthorizationManager;
 import org.ofbiz.service.config.ServiceConfigUtil;
 
 /**
@@ -84,6 +87,8 @@
             java.lang.Thread.sleep(30000);
         } catch (InterruptedException e) {
         }
+        ThreadContext.setSecurity(new NullAuthorizationManager());
+        ThreadContext.pushExecutionArtifact(new GenericExecutionArtifact("ofbiz/framework/service/job", "JobPoller"));
         while (isRunning) {
             try {
                 // grab a list of jobs to run.
@@ -103,6 +108,7 @@
                 stop();
             }
         }
+        ThreadContext.popExecutionArtifact();
     }
 
     /**

Modified: ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/job/PersistedServiceJob.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/job/PersistedServiceJob.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/job/PersistedServiceJob.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/service/src/org/ofbiz/service/job/PersistedServiceJob.java Mon Dec 28 23:14:02 2009
@@ -28,7 +28,6 @@
 
 import javolution.util.FastMap;
 
-import org.ofbiz.api.context.ExecutionContextFactory;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilDateTime;
 import org.ofbiz.base.util.UtilGenerics;
@@ -45,10 +44,9 @@
 import org.ofbiz.entity.serialize.SerializeException;
 import org.ofbiz.entity.serialize.XmlSerializer;
 import org.ofbiz.service.DispatchContext;
-import org.ofbiz.service.ExecutionContext;
 import org.ofbiz.service.GenericRequester;
-import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.ServiceUtil;
+import org.ofbiz.service.ThreadContext;
 import org.ofbiz.service.calendar.RecurrenceInfo;
 import org.ofbiz.service.config.ServiceConfigUtil;
 import org.xml.sax.SAXException;
@@ -306,15 +304,11 @@
             if (!UtilValidate.isEmpty(jobObj.get("runAsUser"))) {
                 context.put("userLogin", ServiceUtil.getUserLogin(dctx, context, jobObj.getString("runAsUser")));
             }
-            ExecutionContext executionContext = (ExecutionContext) context.get("executionContext");
-            if (executionContext == null) {
-                executionContext = (ExecutionContext) ExecutionContextFactory.getInstance();
-                context.put("executionContext", executionContext);
-            }
+            ThreadContext.reset();
             GenericDelegator newDelegator = DelegatorFactory.getGenericDelegator(this.delegator.getDelegatorName());
-            executionContext.setDelegator(newDelegator);
-            executionContext.setDispatcher(this.dctx.getDispatcher());
-            executionContext.initializeContext(context);
+            ThreadContext.setDelegator(newDelegator);
+            ThreadContext.setDispatcher(this.dctx.getDispatcher());
+            ThreadContext.initializeContext(context);
         } catch (GenericEntityException e) {
             Debug.logError(e, "PersistedServiceJob.getContext(): Entity Exception", module);
         } catch (SerializeException e) {

Modified: ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/ControlServlet.java Mon Dec 28 23:14:02 2009
@@ -31,7 +31,7 @@
 
 import org.apache.bsf.BSFManager;
 
-import org.ofbiz.api.context.ExecutionContextFactory;
+import org.ofbiz.service.ThreadContext;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.UtilHttp;
 import org.ofbiz.base.util.UtilJ2eeCompat;
@@ -42,9 +42,8 @@
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.entity.transaction.GenericTransactionException;
 import org.ofbiz.entity.transaction.TransactionUtil;
-import org.ofbiz.security.AuthorizationManager;
+import org.ofbiz.api.authorization.AuthorizationManager;
 import org.ofbiz.security.authz.Authorization;
-import org.ofbiz.service.ExecutionContext;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.webapp.stats.ServerHitBin;
 import org.ofbiz.webapp.stats.VisitHandler;
@@ -141,23 +140,16 @@
         if (Debug.verboseOn())
             Debug.logVerbose("Control Path: " + request.getAttribute("_CONTROL_PATH_"), module);
 
-        // Set up the ExecutionContext
-        ExecutionContext executionContext = null;
-		try {
-			executionContext = (ExecutionContext) ExecutionContextFactory.getInstance();
-		} catch (Exception e) {
-			throw new ServletException(e);
-		}
-        executionContext.setLocale(UtilHttp.getLocale(request));
-        executionContext.setUserLogin(userLogin);
-        request.setAttribute("executionContext", executionContext);
+        ThreadContext.reset();
+        ThreadContext.setLocale(UtilHttp.getLocale(request));
+        ThreadContext.setUserLogin(userLogin);
         
         // for convenience, and necessity with event handlers, make security and delegator available in the request:
         // try to get it from the session first so that we can have a delegator/dispatcher/security for a certain user if desired
         GenericDelegator delegator = null;
         String delegatorName = (String) session.getAttribute("delegatorName");
         if (UtilValidate.isNotEmpty(delegatorName)) {
-            delegator = DelegatorFactory.getGenericDelegator(delegatorName, executionContext);
+            delegator = DelegatorFactory.getGenericDelegator(delegatorName);
         }
         if (delegator == null) {
             delegator = (GenericDelegator) getServletContext().getAttribute("delegator");
@@ -168,7 +160,7 @@
         	request.setAttribute("delegator", delegator);
         	// always put this in the session too so that session events can use the delegator
         	session.setAttribute("delegatorName", delegator.getDelegatorName());
-        	executionContext.setDelegator(delegator);
+        	ThreadContext.setDelegator(delegator);
         }
 
         LocalDispatcher dispatcher = (LocalDispatcher) session.getAttribute("dispatcher");
@@ -179,7 +171,7 @@
             Debug.logError("[ControlServlet] ERROR: dispatcher not found in ServletContext", module);
         } else {
             request.setAttribute("dispatcher", dispatcher);
-            executionContext.setDispatcher(dispatcher);
+            ThreadContext.setDispatcher(dispatcher);
         }
 
         Authorization authz = (Authorization) session.getAttribute("authz");
@@ -199,7 +191,7 @@
             Debug.logError("[ControlServlet] ERROR: security not found in ServletContext", module);
         } else {
             request.setAttribute("security", security);
-            executionContext.setSecurity(security);
+            ThreadContext.setSecurity(security);
         }
 
         request.setAttribute("_REQUEST_HANDLER_", requestHandler);

Modified: ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/LoginWorker.java Mon Dec 28 23:14:02 2009
@@ -61,7 +61,7 @@
 import org.ofbiz.entity.transaction.TransactionUtil;
 import org.ofbiz.security.Security;
 import org.ofbiz.security.authz.Authorization;
-import org.ofbiz.service.ExecutionContext;
+import org.ofbiz.service.ThreadContext;
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.service.ModelService;
@@ -367,12 +367,9 @@
                 password = request.getParameter("newPassword");
             }
         }
-        ExecutionContext executionContext = (ExecutionContext) request.getAttribute("executionContext");
-
         try {
             result = dispatcher.runSync("userLogin", UtilMisc.toMap("login.username", username,
-                    "login.password", password, "visitId", visitId, "locale", UtilHttp.getLocale(request),
-                    "executionContext", executionContext));
+                    "login.password", password, "visitId", visitId, "locale", UtilHttp.getLocale(request)));
         } catch (GenericServiceException e) {
             Debug.logError(e, "Error calling userLogin service", module);
             Map<String, String> messageMap = UtilMisc.toMap("errorMessage", e.getMessage());
@@ -383,7 +380,7 @@
 
         if (ModelService.RESPOND_SUCCESS.equals(result.get(ModelService.RESPONSE_MESSAGE))) {
             GenericValue userLogin = (GenericValue) result.get("userLogin");
-            executionContext.setUserLogin(userLogin);
+            ThreadContext.setUserLogin(userLogin);
             Map<String, Object> userLoginSession = checkMap(result.get("userLoginSession"), String.class, Object.class);
             if (userLogin != null && "Y".equals(userLogin.getString("requirePasswordChange"))) {
                 return "requirePasswordChange";
@@ -395,7 +392,7 @@
             try {
                 result = dispatcher.runSync("setUserPreference", UtilMisc.toMap("userPrefTypeId", "javaScriptEnabled",
                         "userPrefGroupTypeId", "GLOBAL_PREFERENCES", "userPrefValue", javaScriptEnabled,
-                        "userLogin", userLogin, "executionContext", executionContext));
+                        "userLogin", userLogin));
             } catch (GenericServiceException e) {
                 Debug.logError(e, "Error setting user preference", module);
             }

Modified: ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/webapp/src/org/ofbiz/webapp/control/RequestHandler.java Mon Dec 28 23:14:02 2009
@@ -48,10 +48,10 @@
 import org.ofbiz.base.util.UtilObject;
 import org.ofbiz.base.util.UtilProperties;
 import org.ofbiz.base.util.UtilValidate;
+import org.ofbiz.service.ThreadContext;
 import org.ofbiz.entity.GenericDelegator;
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.GenericValue;
-import org.ofbiz.service.ExecutionContext;
 import org.ofbiz.webapp.event.EventFactory;
 import org.ofbiz.webapp.event.EventHandler;
 import org.ofbiz.webapp.event.EventHandlerException;
@@ -145,9 +145,8 @@
             throw new RequestHandlerException(requestMissingErrorMessage);
         }
 
-        ExecutionContext executionContext = (ExecutionContext) request.getAttribute("executionContext");
-        Locale locale = executionContext.getLocale();
-        executionContext.pushExecutionArtifact(new GenericParametersArtifact(UtilHttp.getFullRequestUrl(request).toString(), cname, UtilHttp.getParameterMap(request)));
+        Locale locale = ThreadContext.getLocale();
+        ThreadContext.pushExecutionArtifact(new GenericParametersArtifact(UtilHttp.getFullRequestUrl(request).toString(), cname, UtilHttp.getParameterMap(request)));
         
         String eventReturn = null;
         boolean interruptRequest = false;
@@ -280,7 +279,7 @@
                 if (visit != null) {
                     for (ConfigXMLReader.Event event: controllerConfig.firstVisitEventList.values()) {
                         try {
-                            executionContext.pushExecutionArtifact(new GenericExecutionArtifact(event.path, event.invoke));
+                            ThreadContext.pushExecutionArtifact(new GenericExecutionArtifact(event.path, event.invoke));
                             String returnString = this.runEvent(request, response, event, null, "firstvisit");
                             if (returnString != null && !returnString.equalsIgnoreCase("success")) {
                                 throw new EventHandlerException("First-Visit event did not return 'success'.");
@@ -290,7 +289,7 @@
                         } catch (EventHandlerException e) {
                             Debug.logError(e, module);
                         } finally {
-                            executionContext.popExecutionArtifact();
+                            ThreadContext.popExecutionArtifact();
                         }
                     }
                 }
@@ -299,7 +298,7 @@
             // Invoke the pre-processor (but NOT in a chain)
             for (ConfigXMLReader.Event event: controllerConfig.preprocessorEventList.values()) {
                 try {
-                    executionContext.pushExecutionArtifact(new GenericExecutionArtifact(event.path, event.invoke));
+                    ThreadContext.pushExecutionArtifact(new GenericExecutionArtifact(event.path, event.invoke));
                     String returnString = this.runEvent(request, response, event, null, "preprocessor");
                     if (returnString != null && !returnString.equalsIgnoreCase("success")) {
                         if (!returnString.contains(":_protect_:")) {
@@ -325,7 +324,7 @@
                 } catch (EventHandlerException e) {
                     Debug.logError(e, module);
                 } finally {
-                    executionContext.popExecutionArtifact();
+                    ThreadContext.popExecutionArtifact();
                 }
             }
         }
@@ -334,7 +333,7 @@
         // Warning: this could cause problems if more then one event attempts to return a response.
         if (interruptRequest) {
             if (Debug.infoOn()) Debug.logInfo("[Pre-Processor Interrupted Request, not running: [" + requestMap.uri + "], sessionId=" + UtilHttp.getSessionId(request), module);
-            executionContext.popExecutionArtifact();
+            ThreadContext.popExecutionArtifact();
             return;
         }
 
@@ -351,12 +350,12 @@
             String checkLoginReturnString = null;
 
             try {
-                executionContext.pushExecutionArtifact(new GenericExecutionArtifact(checkLoginEvent.path, checkLoginEvent.invoke));
+                ThreadContext.pushExecutionArtifact(new GenericExecutionArtifact(checkLoginEvent.path, checkLoginEvent.invoke));
                 checkLoginReturnString = this.runEvent(request, response, checkLoginEvent, null, "security-auth");
             } catch (EventHandlerException e) {
                 throw new RequestHandlerException(e.getMessage(), e);
             } finally {
-                executionContext.popExecutionArtifact();
+                ThreadContext.popExecutionArtifact();
             }
             if (!"success".equalsIgnoreCase(checkLoginReturnString)) {
                 // previous URL already saved by event, so just do as the return says...
@@ -387,7 +386,7 @@
                     long eventStartTime = System.currentTimeMillis();
 
                     // run the request event
-                    executionContext.pushExecutionArtifact(new GenericExecutionArtifact(requestMap.event.path, requestMap.event.invoke));
+                    ThreadContext.pushExecutionArtifact(new GenericExecutionArtifact(requestMap.event.path, requestMap.event.invoke));
                     eventReturn = this.runEvent(request, response, requestMap.event, requestMap, "request");
 
                     // save the server hit for the request event
@@ -410,7 +409,7 @@
                         throw new RequestHandlerException("Error calling event and no error response was specified", e);
                     }
                 } finally {
-                    executionContext.popExecutionArtifact();
+                    ThreadContext.popExecutionArtifact();
                 }
             }
         }
@@ -489,7 +488,7 @@
                 // the old/uglier way: doRequest(request, response, previousRequest, userLogin, delegator);
 
                 // this is needed as the request handled will be taking care of the view, etc
-                executionContext.popExecutionArtifact();
+                ThreadContext.popExecutionArtifact();
                 return;
             }
         }
@@ -538,7 +537,7 @@
             // first invoke the post-processor events.
             for (ConfigXMLReader.Event event: controllerConfig.postprocessorEventList.values()) {
                 try {
-                    executionContext.pushExecutionArtifact(new GenericExecutionArtifact(event.path, event.invoke));
+                    ThreadContext.pushExecutionArtifact(new GenericExecutionArtifact(event.path, event.invoke));
                     String returnString = this.runEvent(request, response, event, requestMap, "postprocessor");
                     if (returnString != null && !returnString.equalsIgnoreCase("success")) {
                         throw new EventHandlerException("Post-Processor event did not return 'success'.");
@@ -546,7 +545,7 @@
                 } catch (EventHandlerException e) {
                     Debug.logError(e, module);
                 } finally {
-                    executionContext.popExecutionArtifact();
+                    ThreadContext.popExecutionArtifact();
                 }
             }
 
@@ -624,7 +623,7 @@
                 if (Debug.verboseOn()) Debug.logVerbose("[RequestHandler.doRequest]: Response is handled by the event." + " sessionId=" + UtilHttp.getSessionId(request), module);
             }
         }
-        executionContext.popExecutionArtifact();
+        ThreadContext.popExecutionArtifact();
     }
 
     /** Find the event handler and invoke an event. */
@@ -1090,10 +1089,9 @@
     }
 
     public void runAfterLoginEvents(HttpServletRequest request, HttpServletResponse response) {
-        ExecutionContext executionContext = (ExecutionContext) request.getAttribute("executionContext");
         for (ConfigXMLReader.Event event: getControllerConfig().afterLoginEventList.values()) {
             try {
-                executionContext.pushExecutionArtifact(new GenericExecutionArtifact(event.path, event.invoke));
+                ThreadContext.pushExecutionArtifact(new GenericExecutionArtifact(event.path, event.invoke));
                 String returnString = this.runEvent(request, response, event, null, "after-login");
                 if (returnString != null && !returnString.equalsIgnoreCase("success")) {
                     throw new EventHandlerException("Pre-Processor event did not return 'success'.");
@@ -1101,16 +1099,15 @@
             } catch (EventHandlerException e) {
                 Debug.logError(e, module);
             } finally {
-                executionContext.popExecutionArtifact();
+                ThreadContext.popExecutionArtifact();
             }
         }
     }
 
     public void runBeforeLogoutEvents(HttpServletRequest request, HttpServletResponse response) {
-        ExecutionContext executionContext = (ExecutionContext) request.getAttribute("executionContext");
         for (ConfigXMLReader.Event event: getControllerConfig().beforeLogoutEventList.values()) {
             try {
-                executionContext.pushExecutionArtifact(new GenericExecutionArtifact(event.path, event.invoke));
+                ThreadContext.pushExecutionArtifact(new GenericExecutionArtifact(event.path, event.invoke));
                 String returnString = this.runEvent(request, response, event, null, "before-logout");
                 if (returnString != null && !returnString.equalsIgnoreCase("success")) {
                     throw new EventHandlerException("Pre-Processor event did not return 'success'.");
@@ -1118,7 +1115,7 @@
             } catch (EventHandlerException e) {
                 Debug.logError(e, module);
             } finally {
-                executionContext.popExecutionArtifact();
+                ThreadContext.popExecutionArtifact();
             }
         }
     }

Modified: ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelForm.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Mon Dec 28 23:14:02 2009
@@ -57,7 +57,7 @@
 import org.ofbiz.entity.model.ModelReader;
 import org.ofbiz.entity.util.EntityListIterator;
 import org.ofbiz.service.DispatchContext;
-import org.ofbiz.service.ExecutionContext;
+import org.ofbiz.service.ThreadContext;
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.service.ModelParam;
@@ -785,9 +785,8 @@
      *   use the same form definitions for many types of form UIs
      */
     public void renderFormString(Appendable writer, Map<String, Object> context, FormStringRenderer formStringRenderer) throws IOException {
-        ExecutionContext executionContext = (ExecutionContext) context.get("executionContext");
-        executionContext.pushExecutionArtifact(this);
-    	AccessController accessController = executionContext.getAccessController();
+        ThreadContext.pushExecutionArtifact(this);
+    	AccessController accessController = ThreadContext.getAccessController();
     	accessController.checkPermission(View);
         //  increment the paginator
         this.incrementPaginatorNumber(context);
@@ -837,7 +836,7 @@
                 throw new IllegalArgumentException("The form type " + this.getType() + " is not supported for form with name " + this.getName());
             }
         }
-        executionContext.popExecutionArtifact();
+       ThreadContext.popExecutionArtifact();
     }
 
     public void renderSingleFormString(Appendable writer, Map<String, Object> context, FormStringRenderer formStringRenderer, int positions) throws IOException {

Modified: ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelFormAction.java Mon Dec 28 23:14:02 2009
@@ -31,7 +31,6 @@
 import javolution.util.FastList;
 import javolution.util.FastMap;
 
-import org.ofbiz.api.context.ExecutionContext;
 import org.ofbiz.base.util.BshUtil;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
@@ -353,11 +352,6 @@
                 if (this.fieldMap != null) {
                     EntityFinderUtil.expandFieldMapToContext(this.fieldMap, context, serviceContext);
                 }
-                ExecutionContext executionContext = (ExecutionContext) context.get("executionContext");
-                if (executionContext != null) {
-                    serviceContext.put("executionContext", executionContext);
-                }
-
                 Map<String, Object> result = this.modelForm.getDispatcher(context).runSync(serviceNameExpanded, serviceContext);
 
                 if (!this.resultMapNameAcsr.isEmpty()) {

Modified: ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/form/ModelFormField.java Mon Dec 28 23:14:02 2009
@@ -59,7 +59,7 @@
 import org.ofbiz.entity.model.ModelReader;
 import org.ofbiz.entity.util.EntityUtil;
 import org.ofbiz.service.DispatchContext;
-import org.ofbiz.service.ExecutionContext;
+import org.ofbiz.service.ThreadContext;
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.ModelParam;
 import org.ofbiz.service.ModelService;
@@ -591,10 +591,9 @@
     }
 
     public void renderFieldString(Appendable writer, Map<String, Object> context, FormStringRenderer formStringRenderer) throws IOException {
-        ExecutionContext executionContext = (ExecutionContext) context.get("executionContext");
-        executionContext.pushExecutionArtifact(this);
+        ThreadContext.pushExecutionArtifact(this);
         this.fieldInfo.renderFieldString(writer, context, formStringRenderer);
-        executionContext.popExecutionArtifact();
+        ThreadContext.popExecutionArtifact();
     }
 
     public List<UpdateArea> getOnChangeUpdateAreas() {

Modified: ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java Mon Dec 28 23:14:02 2009
@@ -39,7 +39,7 @@
 import org.ofbiz.entity.GenericEntity;
 import org.ofbiz.entity.GenericEntityException;
 import org.ofbiz.entity.transaction.TransactionUtil;
-import org.ofbiz.service.ExecutionContext;
+import org.ofbiz.service.ThreadContext;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.webapp.control.ConfigXMLReader;
 import org.ofbiz.widget.ModelWidget;
@@ -350,9 +350,8 @@
      *   use the same screen definitions for many types of screen UIs
      */
     public void renderScreenString(Appendable writer, Map<String, Object> context, ScreenStringRenderer screenStringRenderer) throws ScreenRenderException {
-        ExecutionContext executionContext = (ExecutionContext) context.get("executionContext");
-        executionContext.pushExecutionArtifact(this);
-    	AccessController accessController = executionContext.getAccessController();
+        ThreadContext.pushExecutionArtifact(this);
+    	AccessController accessController = ThreadContext.getAccessController();
     	accessController.checkPermission(View);
         // make sure the "null" object is in there for entity ops
         context.put("null", GenericEntity.NULL_FIELD);
@@ -428,7 +427,7 @@
             // after rolling back, rethrow the exception
             throw new ScreenRenderException(errMsg, e);
         } finally {
-            executionContext.popExecutionArtifact();
+            ThreadContext.popExecutionArtifact();
             // only commit the transaction if we started one... this will throw an exception if it fails
             try {
                 TransactionUtil.commit(beganTransaction);

Modified: ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ModelScreenAction.java Mon Dec 28 23:14:02 2009
@@ -33,8 +33,6 @@
 import javolution.util.FastList;
 import javolution.util.FastMap;
 
-import org.ofbiz.api.context.ExecutionContext;
-import org.ofbiz.api.context.ExecutionContextFactory;
 import org.ofbiz.base.util.BshUtil;
 import org.ofbiz.base.util.Debug;
 import org.ofbiz.base.util.GeneralException;
@@ -484,11 +482,6 @@
                 if (this.fieldMap != null) {
                     EntityFinderUtil.expandFieldMapToContext(this.fieldMap, context, serviceContext);
                 }
-                ExecutionContext executionContext = (ExecutionContext) context.get("executionContext");
-                if (executionContext != null) {
-                    serviceContext.put("executionContext", executionContext);
-                }
-
                 Map<String, Object> result = this.modelScreen.getDispatcher(context).runSync(serviceNameExpanded, serviceContext);
 
                 if (!this.resultMapNameAcsr.isEmpty()) {

Modified: ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java?rev=894271&r1=894270&r2=894271&view=diff
==============================================================================
--- ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java (original)
+++ ofbiz/branches/executioncontext20090812/framework/widget/src/org/ofbiz/widget/screen/ScreenRenderer.java Mon Dec 28 23:14:02 2009
@@ -48,10 +48,9 @@
 import org.ofbiz.entity.GenericEntity;
 import org.ofbiz.entity.GenericValue;
 import org.ofbiz.security.Security;
-import org.ofbiz.security.SecurityConfigurationException;
 import org.ofbiz.security.authz.Authorization;
 import org.ofbiz.service.DispatchContext;
-import org.ofbiz.service.ExecutionContext;
+import org.ofbiz.service.ThreadContext;
 import org.ofbiz.service.GenericServiceException;
 import org.ofbiz.service.LocalDispatcher;
 import org.ofbiz.webapp.control.LoginWorker;
@@ -209,13 +208,7 @@
         // set up the user's time zone
         context.put("timeZone", UtilHttp.getTimeZone(request));
 
-        ExecutionContext executionContext = (ExecutionContext) request.getAttribute("executionContext");
-        try {
-			executionContext.initializeContext(context);
-		} catch (Exception e) {
-			Debug.logError(e, module);
-		}
-        context.put("executionContext", executionContext);
+        ThreadContext.initializeContext(context);
 
         // ========== setup values that are specific to OFBiz webapps