[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