[jbpm-commits] JBoss JBPM SVN: r4947 - in jbpm4/trunk/modules: jpdl/src/main/java/org/jbpm/jpdl/internal/activity and 10 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri May 29 09:43:17 EDT 2009


Author: tom.baeyens at jboss.com
Date: 2009-05-29 09:43:17 -0400 (Fri, 29 May 2009)
New Revision: 4947

Added:
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ExpressionBinding.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionDescriptor.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionEvaluatorDescriptor.java
Removed:
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/ScopeInstanceEnvironment.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionDescriptor.java
Modified:
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/env/Context.java
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/env/Environment.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/EsbBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/JbpmConfiguration.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/SpringConfiguration.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/ExecuteJobCmd.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/BasicEnvironment.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JobContext.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/ScopeInstanceContext.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/script/ScriptManager.java
   jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/env/EnvironmentSearchOrderTest.java
   jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/expr/JuelExpressionTest.java
   jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/tx/EnlistTest.java
Log:
JBPM-2279 moved setting of the execution context from ScriptManager.resolveExpression up to ExecutionImpl.erformAtomicOperation

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/env/Context.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/env/Context.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/env/Context.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -30,12 +30,21 @@
  */
 public interface Context {
 
-  /** key of the process-engine context in the environment */
+  /** key of the process-engine-context in the environment */
   String CONTEXTNAME_PROCESS_ENGINE = "process-engine";
   
-  /** key of the block context in the environment */
+  /** key of the transaction-context in the environment */
   String CONTEXTNAME_TRANSACTION = "transaction";
+
+  /** key of the execution-context in the environment */
+  String CONTEXTNAME_EXECUTION = "execution";
+
+  /** key of the task-context in the environment */
+  String CONTEXTNAME_TASK = "task";
   
+  /** key of the job-context in the environment */
+  String CONTEXTNAME_JOB = "job";
+  
   String getName();
 
   Object get(String key);

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/env/Environment.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/env/Environment.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/env/Environment.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -166,8 +166,9 @@
   public abstract void close();
 
   public abstract Context getContext(String contextName);
-  public abstract void addContext(Context context);
-  public abstract void removeContext(Context context);
+  public abstract void setContext(Context context);
+  public abstract Context removeContext(Context context);
+  public abstract Context removeContext(String contextName);
   
   public abstract ClassLoader getClassLoader();
   public abstract void setClassLoader(ClassLoader classLoader);

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/DecisionBinding.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -27,7 +27,7 @@
 import org.jbpm.pvm.internal.model.TransitionImpl;
 import org.jbpm.pvm.internal.util.XmlUtil;
 import org.jbpm.pvm.internal.wire.binding.ObjectBinding;
-import org.jbpm.pvm.internal.wire.descriptor.ExpressionDescriptor;
+import org.jbpm.pvm.internal.wire.descriptor.ExpressionEvaluatorDescriptor;
 import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
 import org.jbpm.pvm.internal.wire.descriptor.ReferenceDescriptor;
 import org.jbpm.pvm.internal.wire.xml.WireParser;
@@ -88,7 +88,7 @@
         if (conditionElement.hasAttribute("expr")) {
           String expr = conditionElement.getAttribute("expr");
           String lang = XmlUtil.attribute(conditionElement, "expr-lang");
-          ExpressionDescriptor expressionDescriptor = new ExpressionDescriptor(expr, lang);
+          ExpressionEvaluatorDescriptor expressionDescriptor = new ExpressionEvaluatorDescriptor(expr, lang);
           transition.setConditionDescriptor(expressionDescriptor);
           
         } else if (conditionElement.hasAttribute("ref")) {

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/EsbBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/EsbBinding.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/EsbBinding.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -27,7 +27,7 @@
 import org.jbpm.pvm.internal.util.XmlUtil;
 import org.jbpm.pvm.internal.wire.Descriptor;
 import org.jbpm.pvm.internal.wire.descriptor.AbstractDescriptor;
-import org.jbpm.pvm.internal.wire.descriptor.ExpressionDescriptor;
+import org.jbpm.pvm.internal.wire.descriptor.ExpressionEvaluatorDescriptor;
 import org.jbpm.pvm.internal.wire.descriptor.ListDescriptor;
 import org.jbpm.pvm.internal.wire.xml.WireParser;
 import org.jbpm.pvm.internal.xml.Parse;
@@ -85,7 +85,7 @@
     }
 
     if (expression!=null) {
-      return new ExpressionDescriptor(expression, null);
+      return new ExpressionEvaluatorDescriptor(expression, null);
     }
 
     AbstractDescriptor descriptor = (AbstractDescriptor) wireParser.parseElement(descriptorElement, parse, WireParser.CATEGORY_DESCRIPTOR);

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -26,10 +26,12 @@
 
 import org.jbpm.api.activity.ActivityExecution;
 import org.jbpm.api.client.ClientProcessDefinition;
+import org.jbpm.api.env.Context;
 import org.jbpm.api.env.Environment;
 import org.jbpm.api.model.Activity;
 import org.jbpm.api.session.RepositorySession;
 import org.jbpm.jpdl.internal.model.JpdlExecution;
+import org.jbpm.pvm.internal.env.ScopeInstanceContext;
 import org.jbpm.pvm.internal.model.ExecutionImpl;
 import org.jbpm.pvm.internal.script.ScriptManager;
 import org.jbpm.pvm.internal.task.SwimlaneImpl;
@@ -88,34 +90,55 @@
     JpdlExecution jpdlExecution = execution.getExtension(JpdlExecution.class);
 
     ExecutionImpl subProcessInstance = jpdlExecution.getSubProcessInstance();
-    jpdlExecution.setSubProcessInstance(null);
 
-    for (SubProcessOutParameterImpl outParameter: outParameters) {
-      outParameter.consume(jpdlExecution, subProcessInstance);
+    String transitionName = null;
+
+    ScopeInstanceContext originalExecutionContext = null;
+    ScopeInstanceContext subProcessExecutionContext = null;
+    Environment environment = Environment.getCurrent();
+    if (environment!=null) {
+      originalExecutionContext = (ScopeInstanceContext) environment.removeContext(Context.CONTEXTNAME_EXECUTION);
+      subProcessExecutionContext = new ScopeInstanceContext((ExecutionImpl) subProcessInstance);
+      environment.setContext(subProcessExecutionContext);
     }
-    
-    String transitionName = null;
-    Activity activity = execution.getActivity();
-    String subProcessActivityName = subProcessInstance.getActivityName();
-    
-    if (outcomeExpression!=null) {
-      ScriptManager scriptManager = Environment.getFromCurrent(ScriptManager.class);
-      Object value = scriptManager.evaluateExpression(outcomeExpression, subProcessInstance, null);
-      // if the value is a String and matches the name of an outgoing transition
-      if ( (value instanceof String)
-           && (activity.hasOutgoingTransition(((String) value)))
-         ) {
-        // then take that one
-        transitionName = (String) value; 
-      } else {
-        // else see if there is a value mapping
-        transitionName = outcomeVariableMappings.get(value);
+
+    try {
+      jpdlExecution.setSubProcessInstance(null);
+
+      for (SubProcessOutParameterImpl outParameter: outParameters) {
+        outParameter.consume(jpdlExecution, subProcessInstance);
       }
+      
+      Activity activity = execution.getActivity();
+      String subProcessActivityName = subProcessInstance.getActivityName();
+      
+      if (outcomeExpression!=null) {
+        ScriptManager scriptManager = Environment.getFromCurrent(ScriptManager.class);
+        Object value = scriptManager.evaluateExpression(outcomeExpression, subProcessInstance, null);
+        // if the value is a String and matches the name of an outgoing transition
+        if ( (value instanceof String)
+             && (activity.hasOutgoingTransition(((String) value)))
+           ) {
+          // then take that one
+          transitionName = (String) value; 
+        } else {
+          // else see if there is a value mapping
+          transitionName = outcomeVariableMappings.get(value);
+        }
 
-    } else if (activity.hasOutgoingTransition(subProcessActivityName)) {
-      transitionName = subProcessActivityName;
+      } else if (activity.hasOutgoingTransition(subProcessActivityName)) {
+        transitionName = subProcessActivityName;
+      }
+
+    } finally {
+      if (subProcessExecutionContext!=null) {
+        environment.removeContext(subProcessExecutionContext);
+      }
+      if (originalExecutionContext!=null) {
+        environment.setContext(originalExecutionContext);
+      }
     }
-    
+
     if (transitionName!=null) {
       execution.take(transitionName);
     } else {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/JbpmConfiguration.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/JbpmConfiguration.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/JbpmConfiguration.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -206,7 +206,7 @@
     }
 
     // add the process-engine context
-    environment.addContext(processEngineWireContext);
+    environment.setContext(processEngineWireContext);
 
     // add the transaction context
     WireDefinition usedWireDefinition = transactionWireDefinition;
@@ -216,7 +216,7 @@
     
     WireContext transactionContext = new WireContext(usedWireDefinition, Context.CONTEXTNAME_TRANSACTION, environment, true);
     // add the environment block context to the environment
-    environment.addContext(transactionContext);
+    environment.setContext(transactionContext);
 
     Environment.pushEnvironment(environment);
     try {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/SpringConfiguration.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/SpringConfiguration.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cfg/SpringConfiguration.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -99,8 +99,8 @@
         }
 
         // add the process-engine context
-        environment.addContext(new SpringContext(applicationContext));
-        environment.addContext(processEngineWireContext);
+        environment.setContext(new SpringContext(applicationContext));
+        environment.setContext(processEngineWireContext);
 
         // add the transaction context
         WireDefinition usedWireDefinition = transactionWireDefinition;
@@ -112,7 +112,7 @@
         WireContext transactionContext = new WireContext(usedWireDefinition,
                 Context.CONTEXTNAME_TRANSACTION, environment, true);
         // add the environment block context to the environment
-        environment.addContext(transactionContext);
+        environment.setContext(transactionContext);
 
         Environment.pushEnvironment(environment);
         try {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/ExecuteJobCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/ExecuteJobCmd.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/ExecuteJobCmd.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -63,7 +63,7 @@
   	// before we execute it (they are in a list)
   	if (job != null) {
   	    JobContext jobContext = new JobContext(job);
-        environment.addContext(jobContext);
+        environment.setContext(jobContext);
 	    try {
 	      log.debug("executing job "+job+"...");
 	      job.execute(environment);

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/BasicEnvironment.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/BasicEnvironment.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/BasicEnvironment.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -60,20 +60,25 @@
     return contexts.get(contextName);
   }
 
-  public void addContext(Context context) {
+  public void setContext(Context context) {
     String key = context.getName();
-    contexts.put(key, context);
-    defaultSearchOrderList.add(key);
+    if (contexts.put(key, context)==null) {
+      defaultSearchOrderList.add(key);
+    }
     defaultSearchOrder = null;
   }
 
-  public void removeContext(Context context) {
-    String contextName = context.getName();
+  public Context removeContext(Context context) {
+    return removeContext(context.getName());
+  }
+  
+  public Context removeContext(String contextName) {
     Context removedContext = contexts.remove(contextName);
     if (removedContext!=null) {
       defaultSearchOrderList.remove(contextName);
       defaultSearchOrder = null;
     }
+    return removedContext;
   }
 
   public Context getEnvironmentFactoryContext() {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JobContext.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JobContext.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/JobContext.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -73,6 +73,6 @@
   }
 
   public String getName() {
-    return "job";
+    return Context.CONTEXTNAME_JOB;
   }
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/ScopeInstanceContext.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/ScopeInstanceContext.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/ScopeInstanceContext.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -23,7 +23,6 @@
 
 import java.util.Set;
 
-import org.jbpm.api.JbpmException;
 import org.jbpm.api.env.Context;
 import org.jbpm.pvm.internal.model.ExecutionImpl;
 import org.jbpm.pvm.internal.model.ScopeInstanceImpl;
@@ -38,17 +37,16 @@
     return name;
   }
 
-  public ScopeInstanceContext(ScopeInstanceImpl scopeInstance) {
-    this.scopeInstance = scopeInstance;
-    if (scopeInstance instanceof ExecutionImpl) {
-      name = "execution";
-    } else if (scopeInstance instanceof TaskImpl) {
-      name = "task";
-    } else {
-      throw new JbpmException("invalid scope instance "+scopeInstance);
-    }
+  public ScopeInstanceContext(ExecutionImpl execution) {
+    this.scopeInstance = execution;
+    name = Context.CONTEXTNAME_EXECUTION;
   }
 
+  public ScopeInstanceContext(TaskImpl task) {
+    this.scopeInstance = task;
+    name = Context.CONTEXTNAME_TASK;
+  }
+
   public Object get(String key) {
     return scopeInstance.getVariable(key);
   }
@@ -69,4 +67,8 @@
   public <T> T get(Class<T> type) {
     return null;
   }
+
+  public ScopeInstanceImpl getScopeInstance() {
+    return scopeInstance;
+  }
 }

Deleted: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/ScopeInstanceEnvironment.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/ScopeInstanceEnvironment.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/env/ScopeInstanceEnvironment.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -1,37 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.pvm.internal.env;
-
-import org.jbpm.pvm.internal.model.ScopeInstanceImpl;
-
-/**
- * @author Tom Baeyens
- */
-public class ScopeInstanceEnvironment extends BasicEnvironment {
-
-  private static final long serialVersionUID = 1L;
-  
-  public ScopeInstanceEnvironment(ScopeInstanceImpl scopeInstance) {
-    addContext(new ScopeInstanceContext(scopeInstance));
-    pushEnvironment(this);
-  }
-}

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -40,6 +40,7 @@
 import org.jbpm.api.activity.ActivityExecution;
 import org.jbpm.api.client.ClientProcessDefinition;
 import org.jbpm.api.client.ClientProcessInstance;
+import org.jbpm.api.env.Context;
 import org.jbpm.api.env.Environment;
 import org.jbpm.api.job.Timer;
 import org.jbpm.api.listener.EventListenerExecution;
@@ -54,6 +55,7 @@
 import org.jbpm.api.session.RepositorySession;
 import org.jbpm.api.session.TimerSession;
 import org.jbpm.internal.log.Log;
+import org.jbpm.pvm.internal.env.ScopeInstanceContext;
 import org.jbpm.pvm.internal.hibernate.HibernatePvmDbSession;
 import org.jbpm.pvm.internal.history.HistoryEvent;
 import org.jbpm.pvm.internal.history.HistorySession;
@@ -603,6 +605,21 @@
       atomicOperations = new LinkedList<AtomicOperation>();
       atomicOperations.offer(operation);
       
+      ScopeInstanceContext originalExecutionContext = null; 
+      ScopeInstanceContext executionContext = null;
+      Environment environment = Environment.getCurrent();
+      if (environment!=null) {
+        originalExecutionContext = (ScopeInstanceContext) environment.getContext(Context.CONTEXTNAME_EXECUTION);
+        if ( (originalExecutionContext!=null)
+             && (originalExecutionContext.getScopeInstance()==this)
+           ) {
+          originalExecutionContext = null;
+        } else {
+          executionContext = new ScopeInstanceContext(this);
+          environment.setContext(executionContext);
+        }
+      }
+      
       try {
         while (! atomicOperations.isEmpty()) {
           AtomicOperation atomicOperation = atomicOperations.poll();
@@ -613,6 +630,13 @@
         throw e;
       } finally {
         atomicOperations = null;
+        
+        if (executionContext!=null) {
+          environment.removeContext(executionContext);
+        }
+        if (originalExecutionContext!=null) {
+          environment.setContext(originalExecutionContext);
+        }
       }
     } else {
       atomicOperations.offer(operation);

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/script/ScriptManager.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/script/ScriptManager.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/script/ScriptManager.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -29,10 +29,7 @@
 
 import org.jbpm.api.Execution;
 import org.jbpm.api.JbpmException;
-import org.jbpm.api.env.Environment;
 import org.jbpm.internal.log.Log;
-import org.jbpm.pvm.internal.env.ScopeInstanceContext;
-import org.jbpm.pvm.internal.env.ScopeInstanceEnvironment;
 import org.jbpm.pvm.internal.model.ScopeInstanceImpl;
 import org.jbpm.pvm.internal.wire.WireContext;
 import org.jbpm.pvm.internal.wire.WireDefinition;
@@ -75,7 +72,7 @@
     }
     return defaultScriptManager;
   }
-  
+
   /** {@link #evaluate(String, Execution, String) evaluates} the expression 
    * with the given language or with the defaultExpressionLanguage if the 
    * given language is null. */
@@ -112,23 +109,7 @@
       return evaluate(scriptEngine, script);
     }
 
-    Environment environment = Environment.getCurrent();
-    if (environment==null) {
-      environment = new ScopeInstanceEnvironment(scopeInstance);
-      try {
-        return evaluate(scriptEngine, script);
-      } finally {
-        environment.close();
-      }
-    }
-
-    ScopeInstanceContext executionContext = new ScopeInstanceContext(scopeInstance);
-    environment.addContext(executionContext);
-    try {
-      return evaluate(scriptEngine, script);
-    } finally {
-      environment.removeContext(executionContext);
-    }
+    return evaluate(scriptEngine, script);
   }
   
   protected Object evaluate(ScriptEngine scriptEngine, String script) {

Added: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ExpressionBinding.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ExpressionBinding.java	                        (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ExpressionBinding.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -0,0 +1,49 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.pvm.internal.wire.binding;
+
+import org.jbpm.pvm.internal.util.XmlUtil;
+import org.jbpm.pvm.internal.wire.descriptor.ExpressionDescriptor;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.jbpm.pvm.internal.xml.Parser;
+import org.w3c.dom.Element;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class ExpressionBinding extends WireDescriptorBinding {
+
+  public ExpressionBinding() {
+    super("resolve");
+  }
+
+  public Object parse(Element element, Parse parse, Parser parser) {
+    ExpressionDescriptor expressionDescriptor = new ExpressionDescriptor(); 
+    
+    String expr = XmlUtil.attribute(element, "expr");
+    
+    
+    return null;
+  }
+
+}


Property changes on: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ExpressionBinding.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Deleted: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionDescriptor.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionDescriptor.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionDescriptor.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -1,50 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.pvm.internal.wire.descriptor;
-
-import org.jbpm.pvm.internal.model.ExpressionEvaluator;
-import org.jbpm.pvm.internal.wire.WireContext;
-
-
-/**
- * @author Tom Baeyens
- */
-public class ExpressionDescriptor extends AbstractDescriptor {
-  
-  private static final long serialVersionUID = 1L;
-
-  protected String expr;
-  protected String lang;
-  
-  public ExpressionDescriptor() {
-  }
-
-  public ExpressionDescriptor(String expr, String lang) {
-    this.expr = expr;
-    this.lang = lang;
-  }
-
-  public Object construct(WireContext wireContext) {
-    return new ExpressionEvaluator(getName(), expr, lang);
-  }
-
-}

Added: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionDescriptor.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionDescriptor.java	                        (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionDescriptor.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -0,0 +1,47 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.pvm.internal.wire.descriptor;
+
+import org.jbpm.pvm.internal.env.EnvironmentDefaults;
+import org.jbpm.pvm.internal.script.ScriptManager;
+import org.jbpm.pvm.internal.wire.WireContext;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class ExpressionDescriptor extends AbstractDescriptor {
+
+  private static final long serialVersionUID = 1L;
+
+  protected String expr;
+  protected String lang;
+  
+  public Object construct(WireContext wireContext) {
+    ScriptManager scriptManager = EnvironmentDefaults.getScriptManager();
+    return scriptManager.evaluateExpression(expr, null, lang);
+  }
+
+  public String getName() {
+    return name;
+  }
+}


Property changes on: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionDescriptor.java
___________________________________________________________________
Name: svn:mime-type
   + text/plain

Copied: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionEvaluatorDescriptor.java (from rev 4941, jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionDescriptor.java)
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionEvaluatorDescriptor.java	                        (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionEvaluatorDescriptor.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -0,0 +1,50 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2005, JBoss Inc., and individual contributors as indicated
+ * by the @authors tag. See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ *
+ * This is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This software is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this software; if not, write to the Free
+ * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
+ * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
+ */
+package org.jbpm.pvm.internal.wire.descriptor;
+
+import org.jbpm.pvm.internal.model.ExpressionEvaluator;
+import org.jbpm.pvm.internal.wire.WireContext;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class ExpressionEvaluatorDescriptor extends AbstractDescriptor {
+  
+  private static final long serialVersionUID = 1L;
+
+  protected String expr;
+  protected String lang;
+  
+  public ExpressionEvaluatorDescriptor() {
+  }
+
+  public ExpressionEvaluatorDescriptor(String expr, String lang) {
+    this.expr = expr;
+    this.lang = lang;
+  }
+
+  public Object construct(WireContext wireContext) {
+    return new ExpressionEvaluator(getName(), expr, lang);
+  }
+
+}


Property changes on: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ExpressionEvaluatorDescriptor.java
___________________________________________________________________
Name: svn:mergeinfo
   + 

Modified: jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/env/EnvironmentSearchOrderTest.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/env/EnvironmentSearchOrderTest.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/env/EnvironmentSearchOrderTest.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -131,7 +131,7 @@
       WireContext addedContext = new WireContext(wireDefinition, "added");
       
       // add the new context to the enviromnent
-      environment.addContext(addedContext);
+      environment.setContext(addedContext);
       
       // see what you find under key a in the default search order
       assertEquals("added-a", environment.get("a"));
@@ -165,7 +165,7 @@
       WireContext addedContext = new WireContext(wireDefinition, "added");
       
       // add the new context to the enviromnent
-      environment.addContext(addedContext);
+      environment.setContext(addedContext);
       
       // only search in context 'process-engine' and 'environment'
       String[] searchOrder = new String[]{"transaction", "process-engine"};

Modified: jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/expr/JuelExpressionTest.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/expr/JuelExpressionTest.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/expr/JuelExpressionTest.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -27,6 +27,7 @@
 import org.jbpm.pvm.activities.WaitState;
 import org.jbpm.pvm.internal.builder.ProcessDefinitionBuilder;
 import org.jbpm.pvm.internal.cfg.JbpmConfiguration;
+import org.jbpm.pvm.internal.env.ScopeInstanceContext;
 import org.jbpm.pvm.internal.model.ExecutionImpl;
 import org.jbpm.pvm.internal.script.ScriptManager;
 import org.jbpm.test.BaseJbpmTestCase;
@@ -53,7 +54,7 @@
 
     ScriptManager scriptManager = environmentFactory.get(ScriptManager.class);
     
-    ClientExecution execution = ProcessDefinitionBuilder
+    ExecutionImpl execution = (ExecutionImpl) ProcessDefinitionBuilder
     .startProcess()
       .startActivity("initial", new WaitState())
         .initial()
@@ -64,6 +65,7 @@
     execution.setVariable("pv", "hello");
     
     Environment environment = environmentFactory.openEnvironment();
+    environment.setContext(new ScopeInstanceContext(execution));
     try {
       assertEquals("hello", scriptManager.evaluateExpression("#{pv}", (ExecutionImpl)execution, null));
     } finally {

Modified: jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/tx/EnlistTest.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/tx/EnlistTest.java	2009-05-29 10:53:02 UTC (rev 4946)
+++ jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/tx/EnlistTest.java	2009-05-29 13:43:17 UTC (rev 4947)
@@ -116,7 +116,7 @@
     try {
       WireContext context = createWireContext("<objects>" + " <object name='o' class='" + MyResource.class.getName() + "'>" + "  <enlist transaction='tx'/>"
               + " </object>" + "</objects>");
-      environment.addContext(context);
+      environment.setContext(context);
       Object o = environment.get("o");
       assertNotNull(o);
       StandardTransaction t = (StandardTransaction) environment.get("tx");
@@ -149,7 +149,7 @@
     try {
       WireContext context = createWireContext("<objects>" + " <object name='o' class='" + MyResource.class.getName() + "'>" + "  <enlist transaction='tx'/>"
               + " </object>" + "</objects>");
-      environment.addContext(context);
+      environment.setContext(context);
       Object o = environment.get("o");
       assertNotNull(o);
       StandardTransaction t = (StandardTransaction) environment.get("tx");




More information about the jbpm-commits mailing list