Author: tom.baeyens(a)jboss.com
Date: 2009-09-25 10:04:45 -0400 (Fri, 25 Sep 2009)
New Revision: 5669
Added:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlBindingsParser.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/JbpmClassNotFoundException.java
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/classloading/
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/classloading/DelayedInstantiationTest.java
Removed:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomActivity.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/BindingsParser.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/PvmNamingStrategy.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ObjectReference.java
Modified:
jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/Configuration.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomBinding.java
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/CompositeBuilder.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/CompositeExceptionHandlerBuilder.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/EventBuilder.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/EventExceptionHandlerBuilder.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ExceptionHandlerBuilder.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/FlowBuilder.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ObservableBuilder.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/TimerBuilder.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartFormResourceNameCmd.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/ConverterType.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventListenerReference.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExceptionHandlerImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivity.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteEventListener.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/Signal.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/ProcessDeployer.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/stream/ResourceStreamInput.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/LifeCycleParser.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/WireContext.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/WireDefinition.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/AbstractCollectionBinding.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/HibernateConfigurationBinding.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ScriptManagerBinding.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/TypesBinding.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ClassDescriptor.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ClassLoaderDescriptor.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/CollectionDescriptor.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/HibernateConfigurationDescriptor.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/PropertiesDescriptor.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ReferenceDescriptor.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/operation/FieldOperation.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/BindingParser.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/WireParser.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parser.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/ProblemList.java
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/activities/PrintLnBuilder.java
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/builder/TestBehaviourBuilder.java
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/ObjectWireTest.java
Log:
JBPM-2430 first cleanup of classloading
Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/Configuration.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/Configuration.java 2009-09-24
12:55:59 UTC (rev 5668)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/Configuration.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -86,10 +86,7 @@
protected Configuration instantiate(String className) {
Configuration implementation;
try {
- Class<?> implementationClass = Thread
- .currentThread()
- .getContextClassLoader()
- .loadClass(className);
+ Class<?> implementationClass = Class.forName(className, true,
getClassLoader());
implementation = (Configuration) implementationClass.newInstance();
} catch (Exception e) {
throw new JbpmException("couldn't instantiate configuration of type
"+className, e);
Deleted:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomActivity.java
===================================================================
---
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomActivity.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomActivity.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -1,55 +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.jpdl.internal.activity;
-
-import java.util.Map;
-
-import org.jbpm.api.activity.ActivityBehaviour;
-import org.jbpm.api.activity.ActivityExecution;
-import org.jbpm.api.activity.ExternalActivityBehaviour;
-
-
-/**
- * @author Tom Baeyens
- */
-public class CustomActivity extends JpdlExternalActivity {
-
- private static final long serialVersionUID = 1L;
-
- protected ActivityBehaviour customBehaviour;
-
- public void signal(ActivityExecution execution, String signalName, Map<String, ?
> parameters) throws Exception {
- ExternalActivityBehaviour externalActivityBehaviour =
(ExternalActivityBehaviour)customBehaviour;
- externalActivityBehaviour.signal(execution, signalName, parameters);
- }
-
- public void execute(ActivityExecution execution) throws Exception {
- customBehaviour.execute(execution);
- }
-
- public ActivityBehaviour getCustomBehaviour() {
- return customBehaviour;
- }
- public void setCustomBehaviour(ActivityBehaviour customBehaviour) {
- this.customBehaviour = customBehaviour;
- }
-}
Modified:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomBinding.java
===================================================================
---
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomBinding.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/CustomBinding.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -22,6 +22,7 @@
package org.jbpm.jpdl.internal.activity;
import org.jbpm.api.activity.ActivityBehaviour;
+import org.jbpm.pvm.internal.wire.JbpmClassNotFoundException;
import org.jbpm.pvm.internal.wire.WireContext;
import org.jbpm.pvm.internal.wire.binding.ObjectBinding;
import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
@@ -42,11 +43,13 @@
}
public Object parse(Element element, Parse parse, Parser parser) {
- CustomActivity customActivity = new CustomActivity();
- ObjectDescriptor descriptor = (ObjectDescriptor)
- objectBinding.parse(element, parse, wireParser);
- ActivityBehaviour customActivityBehaviour = (ActivityBehaviour)
WireContext.create(descriptor);
- customActivity.setCustomBehaviour(customActivityBehaviour);
- return customActivity;
+ ObjectDescriptor customActivitydescriptor = (ObjectDescriptor)
objectBinding.parse(element, parse, wireParser);
+ try {
+ ActivityBehaviour customActivityBehaviour = (ActivityBehaviour)
WireContext.create(customActivitydescriptor);
+ return customActivityBehaviour;
+
+ } catch (JbpmClassNotFoundException e) {
+ return customActivitydescriptor;
+ }
}
}
Deleted:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/BindingsParser.java
===================================================================
---
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/BindingsParser.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/BindingsParser.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -1,69 +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.jpdl.internal.xml;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.jbpm.internal.log.Log;
-import org.jbpm.pvm.internal.util.ReflectUtil;
-import org.jbpm.pvm.internal.util.XmlUtil;
-import org.jbpm.pvm.internal.xml.Binding;
-import org.jbpm.pvm.internal.xml.Parse;
-import org.jbpm.pvm.internal.xml.Parser;
-import org.w3c.dom.Element;
-
-/**
- * @author Tom Baeyens
- */
-public class BindingsParser extends Parser {
-
- private static final Log log = Log.getLog(BindingsParser.class.getName());
-
- public Object parseDocumentElement(Element documentElement, Parse parse) {
- List<Binding> bindings = new ArrayList<Binding>();
- parse.setDocumentObject(bindings);
-
- for (Element bindingElement : XmlUtil.elements(documentElement)) {
- Binding binding = instantiateBinding(bindingElement, parse);
- bindings.add(binding);
- }
-
- return bindings;
- }
-
- protected Binding instantiateBinding(Element bindingElement, Parse parse) {
- String bindingClassName = XmlUtil.attribute(bindingElement, "binding",
true, parse);
-
- log.trace("adding jpdl binding "+bindingClassName);
-
- if (bindingClassName!=null) {
- try {
- Class<?> bindingClass = ReflectUtil.loadClass(classLoader,
bindingClassName);
- return (Binding) bindingClass.newInstance();
- } catch (Exception e) {
- parse.addProblem("couldn't instantiate activity binding
"+bindingClassName, e);
- }
- }
- return null;
- }
-}
Copied:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlBindingsParser.java
(from rev 5660,
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/BindingsParser.java)
===================================================================
---
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlBindingsParser.java
(rev 0)
+++
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlBindingsParser.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -0,0 +1,69 @@
+/*
+ * 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.jpdl.internal.xml;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.jbpm.internal.log.Log;
+import org.jbpm.pvm.internal.util.XmlUtil;
+import org.jbpm.pvm.internal.xml.Binding;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.jbpm.pvm.internal.xml.Parser;
+import org.w3c.dom.Element;
+
+/**
+ * @author Tom Baeyens
+ */
+public class JpdlBindingsParser extends Parser {
+
+ private static final Log log = Log.getLog(JpdlBindingsParser.class.getName());
+
+ public Object parseDocumentElement(Element documentElement, Parse parse) {
+ List<Binding> bindings = new ArrayList<Binding>();
+ parse.setDocumentObject(bindings);
+
+ for (Element bindingElement : XmlUtil.elements(documentElement)) {
+ Binding binding = instantiateBinding(bindingElement, parse);
+ bindings.add(binding);
+ }
+
+ return bindings;
+ }
+
+ protected Binding instantiateBinding(Element bindingElement, Parse parse) {
+ String bindingClassName = XmlUtil.attribute(bindingElement, "binding",
true, parse);
+
+ log.trace("adding jpdl binding "+bindingClassName);
+
+ if (bindingClassName!=null) {
+ try {
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Class<?> bindingClass = Class.forName(bindingClassName, true,
classLoader);
+ return (Binding) bindingClass.newInstance();
+ } catch (Exception e) {
+ parse.addProblem("couldn't instantiate activity binding
"+bindingClassName, e);
+ }
+ }
+ return null;
+ }
+}
Property changes on:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlBindingsParser.java
___________________________________________________________________
Name: svn:mergeinfo
+
Modified:
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
===================================================================
---
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -31,6 +31,7 @@
import java.util.Set;
import java.util.StringTokenizer;
+import org.jbpm.api.JbpmException;
import org.jbpm.api.activity.ActivityBehaviour;
import org.jbpm.api.listener.EventListener;
import org.jbpm.api.model.Event;
@@ -99,7 +100,7 @@
"jbpm.user.eventlisteners.xml"
};
- static BindingsParser bindingsParser = new BindingsParser();
+ static JpdlBindingsParser jpdlBindingsParser = new JpdlBindingsParser();
static final String CATEGORY_ACTIVITY = "activity";
static final String CATEGORY_EVENT_LISTENER = "eventlistener";
@@ -118,12 +119,12 @@
setBindings(bindings);
for (String activityResource: DEFAULT_ACTIVITIES_RESOURCES) {
- Enumeration<URL> resourceUrls = ReflectUtil.getResources(null,
activityResource);
+ Enumeration<URL> resourceUrls = getResources(activityResource);
if (resourceUrls.hasMoreElements()) {
while (resourceUrls.hasMoreElements()) {
URL resourceUrl = resourceUrls.nextElement();
log.trace("loading jpdl activities from resource: "+resourceUrl);
- List<JpdlBinding> activityBindings = (List<JpdlBinding>)
bindingsParser.createParse()
+ List<JpdlBinding> activityBindings = (List<JpdlBinding>)
jpdlBindingsParser.createParse()
.setUrl(resourceUrl)
.execute()
.checkErrors("jpdl activities from "+resourceUrl.toString())
@@ -140,12 +141,12 @@
}
for (String eventListenerResource: DEFAULT_EVENTLISTENERS_RESOURCES) {
- Enumeration<URL> resourceUrls = ReflectUtil.getResources(null,
eventListenerResource);
+ Enumeration<URL> resourceUrls = getResources(eventListenerResource);
if (resourceUrls.hasMoreElements()) {
while (resourceUrls.hasMoreElements()) {
URL resourceUrl = resourceUrls.nextElement();
log.trace("loading jpdl eventlisteners from resource:
"+resourceUrl);
- List<JpdlBinding> activityBindings = (List<JpdlBinding>)
bindingsParser.createParse()
+ List<JpdlBinding> activityBindings = (List<JpdlBinding>)
jpdlBindingsParser.createParse()
.setUrl(resourceUrl)
.execute()
.checkErrors("jpdl eventlisteners from "+resourceUrl.toString())
@@ -162,14 +163,25 @@
}
}
+ protected Enumeration<URL> getResources(String resourceName) {
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Enumeration<URL> resourceUrls;
+ try {
+ resourceUrls = classLoader.getResources(resourceName);
+ } catch (Exception e) {
+ throw new JbpmException("couldn't get resource urls for
"+resourceName, e);
+ }
+ return resourceUrls;
+ }
+
public Object parseDocumentElement(Element documentElement, Parse parse) {
List<ProcessDefinitionImpl> processDefinitions = new
ArrayList<ProcessDefinitionImpl>();
- JpdlProcessDefinition processDefinition = (JpdlProcessDefinition)
parse.getDocumentObject();
- if (processDefinition==null) {
- processDefinition = new JpdlProcessDefinition();
- parse.setDocumentObject(processDefinition);
- }
+ JpdlProcessDefinition processDefinition = new JpdlProcessDefinition();
+// if (processDefinition==null) {
+// processDefinition = new JpdlProcessDefinition();
+// parse.setDocumentObject(processDefinition);
+// }
processDefinitions.add(processDefinition);
@@ -274,8 +286,14 @@
}
}
- ActivityBehaviour activityBehaviour = (ActivityBehaviour)
activityBinding.parse(nestedElement, parse, this);
- activity.setBehaviour(activityBehaviour);
+ Object parseResult = activityBinding.parse(nestedElement, parse, this);
+ if (parseResult instanceof ActivityBehaviour) {
+ ActivityBehaviour activityBehaviour = (ActivityBehaviour) parseResult;
+ activity.setActivityBehaviour(activityBehaviour);
+ } else {
+ Descriptor activityBehaviourDescriptor = (Descriptor) parseResult;
+ activity.setActivityBehaviourDescriptor(activityBehaviourDescriptor);
+ }
parseOnEvents(nestedElement, parse, activity);
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/CompositeBuilder.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/CompositeBuilder.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/CompositeBuilder.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -91,7 +91,7 @@
throw new RuntimeException("activityDescriptor is null");
}
ActivityBuilder activityBuilder = new ActivityBuilder(this, activityName);
- activityBuilder.activity.setBehaviour(activityDescriptor);
+ activityBuilder.activity.setActivityBehaviourDescriptor(activityDescriptor);
return activityBuilder;
}
@@ -104,7 +104,7 @@
throw new RuntimeException("activity is null");
}
ActivityBuilder activityBuilder = new ActivityBuilder(this, activityName);
- activityBuilder.activity.setBehaviour(activityBehaviour);
+ activityBuilder.activity.setActivityBehaviour(activityBehaviour);
return activityBuilder;
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/CompositeExceptionHandlerBuilder.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/CompositeExceptionHandlerBuilder.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/CompositeExceptionHandlerBuilder.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -53,11 +53,6 @@
return this;
}
- public CompositeExceptionHandlerBuilder listener(String expression) {
- super.addListener(expression);
- return this;
- }
-
public CompositeBuilder endExceptionHandler() {
return compositeBuilder;
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/EventBuilder.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/EventBuilder.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/EventBuilder.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -58,16 +58,6 @@
return this;
}
- public EventBuilder listener(String expression) {
- addListener(expression);
- return this;
- }
-
- public EventBuilder listener(String expression, boolean propagation) {
- addListener(expression, propagation);
- return this;
- }
-
public EventBuilder property(String name, String value) {
StringDescriptor descriptor = new StringDescriptor(name, value);
getEvent().addProperty(descriptor);
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/EventExceptionHandlerBuilder.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/EventExceptionHandlerBuilder.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/EventExceptionHandlerBuilder.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -53,11 +53,6 @@
return this;
}
- public EventExceptionHandlerBuilder listener(String expression) {
- super.addListener(expression);
- return this;
- }
-
public EventBuilder endExceptionHandler() {
return eventBuilder;
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ExceptionHandlerBuilder.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ExceptionHandlerBuilder.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ExceptionHandlerBuilder.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -44,10 +44,4 @@
protected void addListener(Descriptor descriptor) {
exceptionHandler.createEventListenerReference(descriptor);
}
-
- protected void addListener(String expression) {
- exceptionHandler
- .createEventListenerReference()
- .setExpression(expression);
- }
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/FlowBuilder.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/FlowBuilder.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/FlowBuilder.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -72,16 +72,6 @@
return this;
}
- public FlowBuilder listener(String expression) {
- addListener(expression);
- return this;
- }
-
- public FlowBuilder listener(String expression, boolean propagation) {
- addListener(expression, propagation);
- return this;
- }
-
public FlowBuilder property(String name, String value) {
StringDescriptor descriptor = new StringDescriptor(name, value);
transition.addProperty(descriptor);
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ObservableBuilder.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ObservableBuilder.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/ObservableBuilder.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -60,15 +60,6 @@
eventListenerReference.setPropagationEnabled(propagation);
}
- protected void addListener(String expression) {
- getEvent().createEventListenerReference(expression);
- }
-
- protected void addListener(String expression, boolean propagation) {
- EventListenerReference eventListenerReference =
getEvent().createEventListenerReference(expression);
- eventListenerReference.setPropagationEnabled(propagation);
- }
-
protected EventImpl getEvent() {
if (event==null) {
this.event = observableElement.createEvent(eventName);
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/TimerBuilder.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/TimerBuilder.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/builder/TimerBuilder.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -92,16 +92,6 @@
return this;
}
- public TimerBuilder listener(String expression) {
- addListener(expression);
- return this;
- }
-
- public TimerBuilder listener(String expression, boolean propagation) {
- addListener(expression, propagation);
- return this;
- }
-
public CompositeBuilder endTimer() {
return compositeBuilder;
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartFormResourceNameCmd.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartFormResourceNameCmd.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/GetStartFormResourceNameCmd.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -55,7 +55,7 @@
ActivityImpl activity = processDefinition.getActivity(activityName);
- ActivityBehaviour behaviour = activity.getBehaviour();
+ ActivityBehaviour behaviour = activity.getActivityBehaviour();
if (behaviour instanceof FormBehaviour) {
return ((FormBehaviour)behaviour).getFormResourceName();
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/ConverterType.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/ConverterType.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/ConverterType.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -34,7 +34,6 @@
import org.hibernate.usertype.ParameterizedType;
import org.jbpm.api.JbpmException;
import org.jbpm.pvm.internal.type.Converter;
-import org.jbpm.pvm.internal.util.ReflectUtil;
/**
* @author Tom Baeyens
@@ -82,7 +81,8 @@
for(Object key : properties.keySet()) {
String converterClassName = (String) key;
try {
- Class<?> converterClass = ReflectUtil.loadClass(null, converterClassName);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Class<?> converterClass = Class.forName(converterClassName, true,
classLoader);
String converterName = properties.getProperty(converterClassName);
converterNames.put(converterClass, converterName);
Deleted:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/PvmNamingStrategy.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/PvmNamingStrategy.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/hibernate/PvmNamingStrategy.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -1,145 +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.hibernate;
-
-import org.hibernate.cfg.ImprovedNamingStrategy;
-import org.hibernate.util.StringHelper;
-import org.jbpm.internal.log.Log;
-import org.jbpm.pvm.internal.util.ReflectUtil;
-
-/**
- * @author Tom Baeyens
- */
-public class PvmNamingStrategy extends ImprovedNamingStrategy {
-
- private static final long serialVersionUID = 1L;
- private static final Log log = Log.getLog(PvmNamingStrategy.class.getName());
-
- String prefix;
-
- public PvmNamingStrategy(String prefix) {
- if (! "".equals(prefix)) {
- this.prefix = prefix;
- }
- }
-
- // TABLE NAMES //////////////////////////////////////////////////////////////
-
- public String classToTableName(String className) {
- String name = ReflectUtil.getUnqualifiedClassName(className);
- if (name.endsWith("Impl")) {
- name = name.substring(0, name.length()-4);
- }
- name = prefix+name.toUpperCase();
- if (log.isTraceEnabled()) {
- log.trace("classToTableName("+className+") ==> "+name);
- }
- return name;
- }
-
- public String tableName(String tableName) {
- if (prefix!=null) {
- return prefix+tableName;
- }
- if (log.isTraceEnabled()) {
- log.trace("tableName("+tableName+") ==> "+tableName);
- }
- return tableName;
- }
-
- public String collectionTableName(String ownerEntity, String ownerEntityTable, String
associatedEntity, String associatedEntityTable, String propertyName) {
- String name = StringHelper.unqualify(propertyName);
- name = prefix+name.toUpperCase()+"_";
- if (log.isTraceEnabled()) {
- log.trace("collectionTableName("+ownerEntity+",
"+ownerEntityTable+", "+associatedEntity+",
"+associatedEntityTable+", "+propertyName+") ==> "+name);
- }
- return name;
- }
-
- // COLUMN NAMES /////////////////////////////////////////////////////////////
-
- public String propertyToColumnName(String propertyName) {
- String name = propertyName;
-
- name = StringHelper.unqualify(name);
- name = name.toUpperCase()+"_";
-
- if (log.isTraceEnabled()) {
- log.trace("propertyToColumnName("+propertyName+") ==>
"+name);
- }
-
- return name;
- }
-
- public String logicalColumnName(String columnName, String propertyName) {
- String name = (columnName!=null ? columnName : propertyName);
- name = name.replace('.', '_');
- name = name.toUpperCase();
- if (!name.endsWith("_")) {
- name = name+"_";
- }
- if (log.isTraceEnabled()) {
- log.trace("logicalColumnName("+columnName+",
"+propertyName+") ==> "+name);
- }
- return name;
- }
-
- public String columnName(String columnName) {
- String name = columnName.toUpperCase();
- if (log.isTraceEnabled()) {
- log.trace("columnName("+columnName+") ==> "+name);
- }
- return name;
- }
-
- public String foreignKeyColumnName(String propertyName, String propertyEntityName,
String propertyTableName, String referencedColumnName) {
- String name = super.foreignKeyColumnName(propertyName, propertyEntityName,
propertyTableName, referencedColumnName);
- if (log.isTraceEnabled()) {
- log.trace("foreignKeyColumnName("+propertyName+",
"+propertyEntityName+", "+propertyTableName+",
"+referencedColumnName+") ==> "+name);
- }
- return name;
- }
-
- public String logicalCollectionColumnName(String columnName, String propertyName,
String referencedColumn) {
- String name = super.logicalCollectionColumnName(columnName, propertyName,
referencedColumn);
- if (log.isTraceEnabled()) {
- log.trace("logicalCollectionColumnName("+columnName+",
"+propertyName+", "+referencedColumn+") ==> "+name);
- }
- return name;
- }
-
- public String logicalCollectionTableName(String tableName, String ownerEntityTable,
String associatedEntityTable, String propertyName) {
- String name = super.logicalCollectionTableName(tableName, ownerEntityTable,
associatedEntityTable, propertyName);
- if (log.isTraceEnabled()) {
- log.trace("logicalCollectionTableName("+tableName+",
"+ownerEntityTable+", "+associatedEntityTable+",
"+propertyName+") ==> "+name);
- }
- return name;
- }
-
- public String joinKeyColumnName(String joinedColumn, String joinedTable) {
- String name = super.joinKeyColumnName(joinedColumn, joinedTable);
- if (log.isTraceEnabled()) {
- log.trace("joinKeyColumnName("+joinedColumn+",
"+joinedTable+") ==> "+name);
- }
- return name;
- }
-}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ActivityImpl.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -26,9 +26,9 @@
import java.util.List;
import java.util.Map;
-import org.jbpm.api.JbpmException;
import org.jbpm.api.activity.ActivityBehaviour;
import org.jbpm.pvm.internal.wire.Descriptor;
+import org.jbpm.pvm.internal.wire.WireContext;
/**
* @author Tom Baeyens
@@ -37,7 +37,10 @@
private static final long serialVersionUID = 1L;
- protected ObjectReference<ActivityBehaviour> behaviourReference;
+ protected ActivityBehaviour activityBehaviour;
+ protected boolean isActivityBehaviourStateful = false;
+ protected Descriptor activityBehaviourDescriptor;
+
protected List<TransitionImpl> outgoingTransitions = new
ArrayList<TransitionImpl>();
protected List<TransitionImpl> incomingTransitions = new
ArrayList<TransitionImpl>();
protected TransitionImpl defaultOutgoingTransition;
@@ -277,46 +280,6 @@
}
}
-
- // behaviour ////////////////////////////////////////////////////////////////
-
- /** sets the given activity as the behaviour for this activity.
- * An object reference for the given activity is created. */
- public void setBehaviour(ActivityBehaviour activityBehaviour) {
- behaviourReference = new
ObjectReference<ActivityBehaviour>(activityBehaviour);
- }
-
- /** sets the activity that can be created from the given descriptor as the
- * behaviour for this activity. It is assumed that the descriptor will
- * create an {@link ActivityBehaviour}
- * An object reference for the given descriptor is created. */
- public void setBehaviour(Descriptor descriptor) {
- behaviourReference = new ObjectReference<ActivityBehaviour>(descriptor);
- }
-
- /** sets the expression behaviour for this activity. The evaluation of the
- * expression will replace the {@link ActivityBehaviour#execute(org.jbpm.pvm.Execution)
Activity's execute method}.
- * An object reference for the given descriptor is created. */
- public void setBehaviour(String expression) {
- behaviourReference = new ObjectReference<ActivityBehaviour>(expression);
- }
-
- public ObjectReference<ActivityBehaviour> getBehaviourReference() {
- return behaviourReference;
- }
-
- public void setBehaviourReference(ObjectReference<ActivityBehaviour>
behaviourReference) {
- this.behaviourReference = behaviourReference;
- }
-
- public ActivityBehaviour getBehaviour() {
- ActivityBehaviour behaviour = ( behaviourReference!=null ? behaviourReference.get() :
null);
- if (behaviour==null) {
- throw new JbpmException("no behaviour on "+this);
- }
- return behaviour;
- }
-
/** the leaving transitions, keyed by transition name. If a transition with
* the same name occurs mutltiple times, the first one is returned.
* Leaving transitions with a null value for their name are not included
@@ -388,6 +351,22 @@
return false;
}
+ // customized getters and setters ///////////////////////////////////////////
+
+ public ActivityBehaviour getActivityBehaviour() {
+ if (activityBehaviour!=null) {
+ return activityBehaviour;
+ }
+ if (activityBehaviourDescriptor!=null) {
+ ActivityBehaviour createdBehaviour = (ActivityBehaviour)
WireContext.create(activityBehaviourDescriptor);
+ if (!isActivityBehaviourStateful) {
+ activityBehaviour = createdBehaviour;
+ }
+ return createdBehaviour;
+ }
+ return null;
+ }
+
// getters and setters //////////////////////////////////////////////////////
public ObservableElementImpl getParent() {
@@ -430,4 +409,19 @@
public void setContinuation(Continuation continuation) {
this.continuation = continuation;
}
+ public void setActivityBehaviour(ActivityBehaviour activityBehaviour) {
+ this.activityBehaviour = activityBehaviour;
+ }
+ public Descriptor getActivityBehaviourDescriptor() {
+ return activityBehaviourDescriptor;
+ }
+ public void setActivityBehaviourDescriptor(Descriptor activityBehaviourDescriptor) {
+ this.activityBehaviourDescriptor = activityBehaviourDescriptor;
+ }
+ public boolean isActivityBehaviourStateful() {
+ return isActivityBehaviourStateful;
+ }
+ public void setActivityBehaviourStateful(boolean isActivityBehaviourStateful) {
+ this.isActivityBehaviourStateful = isActivityBehaviourStateful;
+ }
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventImpl.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventImpl.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventImpl.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -58,22 +58,16 @@
public EventListenerReference createEventListenerReference(Descriptor descriptor) {
EventListenerReference eventListenerReference = createEventListenerReference();
- eventListenerReference.setDescriptor(descriptor);
+ eventListenerReference.setEventListenerDescriptor(descriptor);
return eventListenerReference;
}
public EventListenerReference createEventListenerReference(EventListener eventListener)
{
EventListenerReference eventListenerReference = createEventListenerReference();
- eventListenerReference.set(eventListener);
+ eventListenerReference.setEventListener(eventListener);
return eventListenerReference;
}
- public EventListenerReference createEventListenerReference(String expression) {
- EventListenerReference eventListenerReference = createEventListenerReference();
- eventListenerReference.setExpression(expression);
- return eventListenerReference;
- }
-
public boolean isAsync() {
return ! (continuation==Continuation.SYNCHRONOUS);
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventListenerReference.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventListenerReference.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/EventListenerReference.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -22,14 +22,19 @@
package org.jbpm.pvm.internal.model;
import org.jbpm.api.listener.EventListener;
+import org.jbpm.pvm.internal.wire.Descriptor;
+import org.jbpm.pvm.internal.wire.WireContext;
/**
* @author Tom Baeyens
*/
-public class EventListenerReference extends ObjectReference<EventListener> {
+public class EventListenerReference extends ProcessElementImpl {
private static final long serialVersionUID = 1L;
+ protected EventListener eventListener;
+ protected boolean isEventListenerStateful= false;
+ protected Descriptor eventListenerDescriptor;
/** does this action accept propagated events ? */
protected boolean isPropagationEnabled = false;
protected Continuation continuation = Continuation.SYNCHRONOUS;
@@ -48,10 +53,43 @@
return Continuation.SYNCHRONOUS!=continuation;
}
+ // customized getters and setters ///////////////////////////////////////////
+
+ public EventListener getEventListener() {
+ if (eventListener!=null) {
+ return eventListener;
+ }
+ if (eventListenerDescriptor!=null) {
+ EventListener createdEventListener = (EventListener)
WireContext.create(eventListenerDescriptor);
+ if (!isEventListenerStateful) {
+ eventListener = createdEventListener;
+ }
+ return createdEventListener;
+ }
+ return null;
+ }
+
+ // getters and setters //////////////////////////////////////////////////////
+
public Continuation getContinuation() {
return continuation;
}
public void setContinuation(Continuation continuation) {
this.continuation = continuation;
}
+ public void setEventListener(EventListener eventListener) {
+ this.eventListener = eventListener;
+ }
+ public boolean isEventListenerStateful() {
+ return isEventListenerStateful;
+ }
+ public void setEventListenerStateful(boolean isEventListenerStateful) {
+ this.isEventListenerStateful = isEventListenerStateful;
+ }
+ public Descriptor getEventListenerDescriptor() {
+ return eventListenerDescriptor;
+ }
+ public void setEventListenerDescriptor(Descriptor eventListenerDescriptor) {
+ this.eventListenerDescriptor = eventListenerDescriptor;
+ }
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExceptionHandlerImpl.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExceptionHandlerImpl.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExceptionHandlerImpl.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -49,51 +49,33 @@
protected String exceptionClassName;
protected boolean isTransactional;
protected boolean isRethrowMasked;
- protected List<ObjectReference<EventListener>> eventListenerReferences;
+ protected List<EventListenerReference> eventListenerReferences;
protected String transitionName; // mutually exclusive with activityName
protected String activityName; // mutually exclusive with transitionName
// construction methods /////////////////////////////////////////////////////
- public ObjectReference<EventListener> createEventListenerReference(EventListener
eventListener) {
- ObjectReference<EventListener> eventListenerReference =
createEventListenerReference();
- eventListenerReference.set(eventListener);
+ public EventListenerReference createEventListenerReference(EventListener eventListener)
{
+ EventListenerReference eventListenerReference = createEventListenerReference();
+ eventListenerReference.setEventListener(eventListener);
return eventListenerReference;
}
- public ObjectReference<EventListener> createEventListenerReference(Descriptor
descriptor) {
- ObjectReference<EventListener> eventListenerReference =
createEventListenerReference();
- eventListenerReference.setDescriptor(descriptor);
+ public EventListenerReference createEventListenerReference(Descriptor descriptor) {
+ EventListenerReference eventListenerReference = createEventListenerReference();
+ eventListenerReference.setEventListenerDescriptor(descriptor);
return eventListenerReference;
}
- public ObjectReference<EventListener> createActivityReference(String expression)
{
- ObjectReference<EventListener> eventListenerReference =
createEventListenerReference();
- eventListenerReference.setExpression(expression);
- return eventListenerReference;
- }
-
- public ObjectReference<EventListener> createEventListenerReference() {
+ public EventListenerReference createEventListenerReference() {
if (eventListenerReferences==null) {
- eventListenerReferences = new
ArrayList<ObjectReference<EventListener>>();
+ eventListenerReferences = new ArrayList<EventListenerReference>();
}
- ObjectReference<EventListener> actionObjectReference = new
ObjectReference<EventListener>();
- eventListenerReferences.add(actionObjectReference);
- return actionObjectReference;
+ EventListenerReference eventListenerReference = new EventListenerReference();
+ eventListenerReferences.add(eventListenerReference);
+ return eventListenerReference;
}
- public List<EventListener> getEventListeners() {
- if (eventListenerReferences==null) {
- return null;
- }
- List<EventListener> eventListeners = new
ArrayList<EventListener>(eventListenerReferences.size());
- for (ObjectReference<EventListener> eventListenerReference :
eventListenerReferences) {
- EventListener eventListener = eventListenerReference.get();
- eventListeners.add(eventListener);
- }
- return eventListeners;
- }
-
// runtime behaviour methods ////////////////////////////////////////////////
public boolean matches(Exception exception) {
@@ -146,9 +128,9 @@
void executeHandler(ExecutionImpl execution, Exception exception) {
if (eventListenerReferences!=null) {
- for (ObjectReference<EventListener> eventListenerReference:
eventListenerReferences) {
+ for (EventListenerReference eventListenerReference: eventListenerReferences) {
- EventListener eventListener = eventListenerReference.get();
+ EventListener eventListener = eventListenerReference.getEventListener();
log.trace("executing "+eventListener+" for "+this);
try {
@@ -265,10 +247,10 @@
public void setRethrowMasked(boolean isRethrowMasked) {
this.isRethrowMasked = isRethrowMasked;
}
- public List<ObjectReference<EventListener>> getEventListenerReferences() {
+ public List<EventListenerReference> getEventListenerReferences() {
return eventListenerReferences;
}
- public void setEventListenerReferences(List<ObjectReference<EventListener>>
activityReferences) {
- this.eventListenerReferences = activityReferences;
+ public void setEventListenerReferences(List<EventListenerReference>
eventListenerReferences) {
+ this.eventListenerReferences = eventListenerReferences;
}
}
Deleted:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ObjectReference.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ObjectReference.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ObjectReference.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -1,117 +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.model;
-
-import org.jbpm.pvm.internal.env.EnvironmentImpl;
-import org.jbpm.pvm.internal.wire.Descriptor;
-import org.jbpm.pvm.internal.wire.WireContext;
-import org.jbpm.pvm.internal.wire.WireDefinition;
-
-public class ObjectReference<T> extends ProcessElementImpl {
-
- private static final long serialVersionUID = 1L;
- // private static final Log log = Log.getLog(ObjectReference.class.getName());
-
- protected String expression;
- protected String expressionLanguage;
- protected Descriptor descriptor;
- protected T object;
-
- public ObjectReference() {
- }
-
- public ObjectReference(String expression) {
- this.expression = expression;
- }
-
- public ObjectReference(Descriptor descriptor) {
- this.descriptor = descriptor;
- }
-
- public ObjectReference(T object) {
- this.object = object;
- }
-
- public String toString() {
- if (object!=null) {
- return object.toString();
- }
- if (expression!=null) {
- return expression;
- }
- if (descriptor!=null) {
- return descriptor.toString();
- }
- return null;
- }
-
- public T get() {
- if (object!=null) {
- return object;
- }
- if (expression!=null) {
- return resolveValueExpression();
- }
- if (descriptor!=null) {
- return constructFromDescriptor();
- }
- return null;
- }
-
- public void set(T object) {
- this.object = object;
- }
-
- // object builders //////////////////////////////////////////////////////////
-
- protected T constructFromDescriptor() {
- return (T) WireContext.create(descriptor);
- }
-
- protected T resolveValueExpression() {
- EnvironmentImpl environment = EnvironmentImpl.getCurrent();
- return null;
- }
-
- protected T resolveMethodExpression(EnvironmentImpl environment) {
- return null;
- }
-
- public void setDescriptor(Descriptor descriptor) {
- this.descriptor = descriptor;
- }
- public Descriptor getDescriptor() {
- return descriptor;
- }
- public void setExpression(String expression) {
- this.expression = expression;
- }
- public T getObject() {
- return object;
- }
- public void setObject(T object) {
- this.object = object;
- }
- public String getExpression() {
- return expression;
- }
-}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivity.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivity.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteActivity.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -51,7 +51,7 @@
}
}
- ActivityBehaviour activityBehaviour = activity.getBehaviour();
+ ActivityBehaviour activityBehaviour = activity.getActivityBehaviour();
try {
execution.setPropagation(Propagation.UNSPECIFIED);
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteEventListener.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteEventListener.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/ExecuteEventListener.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -74,7 +74,7 @@
EventListenerReference eventListenerReference =
eventListenerReferences.get(eventListenerIndex);
ObservableElement eventSource = execution.getEventSource();
if ((eventSource == observableElement) ||
(eventListenerReference.isPropagationEnabled())) {
- EventListener eventListener = eventListenerReference.get();
+ EventListener eventListener = eventListenerReference.getEventListener();
log.trace("executing " + eventListener + " for " + event);
try {
// TODO can/should this invocation be unified with the exception handler
invocation of the event notification method?
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/Signal.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/Signal.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/Signal.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -61,7 +61,7 @@
log.debug("signalling "+activity+", signalName="+signalName);
}
- ExternalActivityBehaviour externalActivityBehaviour = (ExternalActivityBehaviour)
activity.getBehaviour();
+ ExternalActivityBehaviour externalActivityBehaviour = (ExternalActivityBehaviour)
activity.getActivityBehaviour();
try {
execution.setPropagation(Propagation.UNSPECIFIED);
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/ProcessDeployer.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/ProcessDeployer.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/repository/ProcessDeployer.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -62,38 +62,40 @@
parse.setInputStream(inputStream);
parse.execute();
List<ProcessDefinitionImpl> processDefinitions =
(List<ProcessDefinitionImpl>) parse.getDocumentObject();
- for (ProcessDefinitionImpl processDefinition: processDefinitions) {
- if ((processDefinition != null) && (processDefinition.getName() !=
null)) {
- String processDefinitionName = processDefinition.getName();
-
- processDefinition.setSuspended(deployment.isSuspended());
-
- String imageResourceName = resourceName.substring(0,
resourceName.lastIndexOf(extension))+".png";
- if (deployment.getResourceNames().contains(imageResourceName)) {
- processDefinition.setImageResourceName(imageResourceName);
- }
+ if (processDefinitions!=null) {
+ for (ProcessDefinitionImpl processDefinition : processDefinitions) {
+ if ((processDefinition != null) && (processDefinition.getName() !=
null)) {
+ String processDefinitionName = processDefinition.getName();
- processDefinition.setDeploymentDbid(deployment.getDbid());
+ processDefinition.setSuspended(deployment.isSuspended());
- if (deployment.hasObjectProperties(processDefinitionName)) {
- String key = deployment.getProcessDefinitionKey(processDefinitionName);
- String id = deployment.getProcessDefinitionId(processDefinitionName);
- Long version =
deployment.getProcessDefinitionVersion(processDefinitionName);
- processDefinition.setId(id);
- processDefinition.setKey(key);
- processDefinition.setVersion(version.intValue());
+ String imageResourceName = resourceName.substring(0,
resourceName.lastIndexOf(extension)) + ".png";
+ if (deployment.getResourceNames().contains(imageResourceName)) {
+ processDefinition.setImageResourceName(imageResourceName);
+ }
- } else {
- checkKey(processDefinition, deployment);
- checkVersion(processDefinition, deployment);
- checkId(processDefinition, deployment);
+ processDefinition.setDeploymentDbid(deployment.getDbid());
- deployment.setProcessDefinitionId(processDefinitionName,
processDefinition.getId());
- deployment.setProcessDefinitionKey(processDefinitionName,
processDefinition.getKey());
- deployment.setProcessDefinitionVersion(processDefinitionName, new
Long(processDefinition.getVersion()));
+ if (deployment.hasObjectProperties(processDefinitionName)) {
+ String key = deployment.getProcessDefinitionKey(processDefinitionName);
+ String id = deployment.getProcessDefinitionId(processDefinitionName);
+ Long version =
deployment.getProcessDefinitionVersion(processDefinitionName);
+ processDefinition.setId(id);
+ processDefinition.setKey(key);
+ processDefinition.setVersion(version.intValue());
+
+ } else {
+ checkKey(processDefinition, deployment);
+ checkVersion(processDefinition, deployment);
+ checkId(processDefinition, deployment);
+
+ deployment.setProcessDefinitionId(processDefinitionName,
processDefinition.getId());
+ deployment.setProcessDefinitionKey(processDefinitionName,
processDefinition.getKey());
+ deployment.setProcessDefinitionVersion(processDefinitionName, new
Long(processDefinition.getVersion()));
+ }
+
+ deployment.addObject(processDefinitionName, processDefinition);
}
-
- deployment.addObject(processDefinitionName, processDefinition);
}
}
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/stream/ResourceStreamInput.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/stream/ResourceStreamInput.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/stream/ResourceStreamInput.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -24,7 +24,6 @@
import java.io.InputStream;
import org.jbpm.api.JbpmException;
-import org.jbpm.pvm.internal.util.ReflectUtil;
/**
* @author Tom Baeyens
@@ -50,7 +49,8 @@
}
public InputStream openStream() {
- InputStream stream = ReflectUtil.getResourceAsStream(classLoader, resource);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ InputStream stream = classLoader.getResourceAsStream(resource);
if (stream==null) {
throw new JbpmException("resource "+resource+" does not
exist");
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/LifeCycleParser.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/LifeCycleParser.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/LifeCycleParser.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -104,6 +104,6 @@
}
String stateName = element.getAttribute("name");
ActivityImpl state = lifeCycleProcess.createActivity(stateName);
- state.setBehaviour(new LifeCycleState());
+ state.setActivityBehaviour(new LifeCycleState());
}
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/ReflectUtil.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -1,147 +1,36 @@
package org.jbpm.pvm.internal.util;
-import java.io.InputStream;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
-import java.net.URL;
import java.util.Arrays;
-import java.util.Enumeration;
import java.util.List;
import org.jbpm.api.JbpmException;
import org.jbpm.internal.log.Log;
-import org.jbpm.pvm.internal.env.EnvironmentImpl;
import org.jbpm.pvm.internal.wire.descriptor.ArgDescriptor;
public abstract class ReflectUtil {
private static Log log = Log.getLog(ReflectUtil.class.getName());
-
- static ClassLoader resolveClassLoader(ClassLoader classLoader) {
- // 1) if the user provided a classloader through the API, use that one
- if (classLoader!=null) {
- log.trace("using provided classloader");
- return classLoader;
- }
-
- // 2) if the user provided a classloader through the environment, use that one
- EnvironmentImpl environment = EnvironmentImpl.getCurrent();
- if (environment!=null) {
- classLoader = environment.getClassLoader();
- if (classLoader!=null) {
- log.trace("using environment classloader");
- return classLoader;
- }
- }
-
- // 3) otherwise, use the current thread's context classloader
- log.trace("using context classloader");
- return Thread.currentThread().getContextClassLoader();
- }
-
- public static Class<?> loadClass(ClassLoader classLoader, String className) {
- if (classLoader!=null) {
- try {
- return classLoader.loadClass(className);
- } catch (ClassNotFoundException e) {
- log.trace("couldn't load class "+className+" with given
classloader "+classLoader);
- }
- }
- try {
- return Thread.currentThread().getContextClassLoader().loadClass(className);
- } catch (ClassNotFoundException e) {
- log.trace("couldn't load class "+className+" with context
classloader "+classLoader);
- }
- try {
- return ReflectUtil.class.getClassLoader().loadClass(className);
- } catch (ClassNotFoundException e) {
- log.trace("couldn't load class "+className+" with pvm lib
classloader "+classLoader);
- }
- throw new JbpmException("couldn't load class "+className);
- }
- public static InputStream getResourceAsStream(ClassLoader classLoader, String resource)
{
- classLoader = resolveClassLoader(classLoader);
- log.trace("getting resource as stream "+resource);
- return classLoader.getResourceAsStream(resource);
+ /** searches for the field in the given class and in its super classes */
+ public static Field findField(Class<?> clazz, String fieldName) {
+ return findField(clazz, fieldName, clazz);
}
-
- public static Enumeration<URL> getResources(ClassLoader classLoader, String
resource) {
- classLoader = resolveClassLoader(classLoader);
- try {
- log.trace("getting resources "+resource);
- return classLoader.getResources(resource);
- } catch (Exception e) {
- throw new JbpmException("couldn't get resources "+resource, e);
- }
- }
-
- public static URL getResource(ClassLoader classLoader, String resource) {
- classLoader = resolveClassLoader(classLoader);
- try {
- log.trace("getting resource "+resource);
- return classLoader.getResource(resource);
- } catch (Exception e) {
- throw new JbpmException("couldn't get resources "+resource, e);
- }
- }
-
- public static Object instantiate(ClassLoader classLoader, String className) {
- Object newObject;
- try {
- classLoader = resolveClassLoader(classLoader);
- Class<?> clazz = loadClass(classLoader, className);
- log.trace("instantiating "+className);
- newObject = clazz.newInstance();
- } catch (Exception e) {
- throw new JbpmException("couldn't instantiate "+className, e);
- }
- return newObject;
- }
- public static Class<?>[] loadClasses(ClassLoader classLoader, List<String>
constructorArgTypeNames) {
- if (constructorArgTypeNames==null) return null;
- Class<?>[] classes = new Class[constructorArgTypeNames.size()];
- for (int i=0; i<constructorArgTypeNames.size(); i++) {
- classLoader = resolveClassLoader(classLoader);
- classes[i] = loadClass(classLoader, constructorArgTypeNames.get(i));
- }
- return classes;
- }
-
- public static <T> Constructor<T> getConstructor(Class<T> clazz,
Class<?>[] parameterTypes) {
- Constructor<T> constructor = null;
- try {
- constructor = clazz.getDeclaredConstructor(parameterTypes);
-
- if (log.isTraceEnabled()) log.trace("found constructor
"+clazz.getName()+"("+Arrays.toString(parameterTypes)+")");
-
- } catch (SecurityException e) {
- throw new JbpmException("wasn't allowed to get constructor
'"+clazz.getName()+"("+getParameterTypesText(parameterTypes)+")'",
e);
- } catch (NoSuchMethodException e) {
- throw new JbpmException("couldn't find constructor
'"+clazz.getName()+"("+getParameterTypesText(parameterTypes)+")'",
e);
- }
-
- return constructor;
- }
-
- public static Field getField(Class<?> clazz, String fieldName) {
- return getField(clazz, fieldName, clazz);
- }
-
- private static Field getField(Class<?> clazz, String fieldName, Class<?>
original) {
+ private static Field findField(Class<?> clazz, String fieldName, Class<?>
original) {
Field field = null;
try {
field = clazz.getDeclaredField(fieldName);
- log.trace("found field "+fieldName+" in "+clazz.getName());
+ if (log.isTraceEnabled()) log.trace("found field "+fieldName+" in
"+clazz.getName());
} catch (SecurityException e) {
throw new JbpmException("wasn't allowed to get field
'"+clazz.getName()+"."+fieldName+"'", e);
} catch (NoSuchFieldException e) {
if (clazz.getSuperclass()!=null) {
- return getField(clazz.getSuperclass(), fieldName, original);
+ return findField(clazz.getSuperclass(), fieldName, original);
} else {
throw new JbpmException("couldn't find field
'"+original.getName()+"."+fieldName+"'", e);
}
@@ -150,6 +39,7 @@
return field;
}
+ /** searches for the method in the given class and in its super classes */
public static Method getMethod(Class<?> clazz, String methodName,
Class<?>[] parameterTypes) {
return getMethod(clazz, methodName, parameterTypes, clazz);
}
@@ -160,8 +50,7 @@
try {
method = clazz.getDeclaredMethod(methodName, parameterTypes);
- if (log.isTraceEnabled())
- log.trace("found method
"+clazz.getName()+"."+methodName+"("+Arrays.toString(parameterTypes)+")");
+ if (log.isTraceEnabled()) log.trace("found method
"+clazz.getName()+"."+methodName+"("+Arrays.toString(parameterTypes)+")");
} catch (SecurityException e) {
throw new JbpmException("wasn't allowed to get method
'"+clazz.getName()+"."+methodName+"("+getParameterTypesText(parameterTypes)+")'",
e);
@@ -206,22 +95,20 @@
throw new IllegalArgumentException("can't create new instance without
clazz or constructor");
}
- String className = null;
try {
- log.trace("creating new instance for class '"+className+"'
with args "+Arrays.toString(args));
+ if (log.isTraceEnabled()) log.trace("creating new instance for class
'"+clazz.getName()+"' with args "+Arrays.toString(args));
if (constructor==null) {
- log.trace("getting default constructor");
+ if (log.isTraceEnabled()) log.trace("getting default constructor");
constructor = clazz.getConstructor((Class[])null);
}
- className = constructor.getDeclaringClass().getName();
if (!constructor.isAccessible()) {
- log.trace("making constructor accessible");
+ if (log.isTraceEnabled()) log.trace("making constructor accessible");
constructor.setAccessible(true);
}
return constructor.newInstance(args);
} catch (Throwable t) {
- throw new JbpmException("couldn't construct new
'"+className+"' with args "+Arrays.toString(args), t);
+ throw new JbpmException("couldn't construct new
'"+clazz.getName()+"' with args "+Arrays.toString(args), t);
}
}
@@ -231,7 +118,7 @@
}
try {
Object value = field.get(object);
- log.trace("got value '"+value+"' from field
'"+field.getName()+"'");
+ if (log.isTraceEnabled()) log.trace("got value '"+value+"'
from field '"+field.getName()+"'");
return value;
} catch (Exception e) {
throw new JbpmException("couldn't get
'"+field.getName()+"'", e);
@@ -243,9 +130,9 @@
throw new NullPointerException("field is null");
}
try {
- log.trace("setting field '"+field.getName()+"' to value
'"+value+"'");
+ if (log.isTraceEnabled()) log.trace("setting field
'"+field.getName()+"' to value '"+value+"'");
if (!field.isAccessible()) {
- log.trace("making field accessible");
+ if (log.isTraceEnabled()) log.trace("making field accessible");
field.setAccessible(true);
}
field.set(object, value);
@@ -259,7 +146,7 @@
throw new JbpmException("method is null");
}
try {
- log.trace("invoking '"+method.getName()+"' on
'"+target+"' with "+Arrays.toString(args));
+ if (log.isTraceEnabled()) log.trace("invoking
'"+method.getName()+"' on '"+target+"' with
"+Arrays.toString(args));
if (!method.isAccessible()) {
log.trace("making method accessible");
method.setAccessible(true);
@@ -274,7 +161,7 @@
}
public static Method findMethod(Class<?> clazz, String methodName,
List<ArgDescriptor> argDescriptors, Object[] args) {
- log.trace("searching for method "+methodName+" in
"+clazz.getName());
+ if (log.isTraceEnabled()) log.trace("searching for method
"+methodName+" in "+clazz.getName());
Method[] candidates = clazz.getDeclaredMethods();
for (int i=0; i<candidates.length; i++) {
Method candidate = candidates[i];
@@ -283,7 +170,7 @@
) {
if (log.isTraceEnabled()) {
- log.trace("found matching method
"+clazz.getName()+"."+methodName);
+ if (log.isTraceEnabled()) log.trace("found matching method
"+clazz.getName()+"."+methodName);
}
return candidate;
Added:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/JbpmClassNotFoundException.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/JbpmClassNotFoundException.java
(rev 0)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/JbpmClassNotFoundException.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -0,0 +1,40 @@
+/*
+ * 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;
+
+import org.jbpm.api.JbpmException;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class JbpmClassNotFoundException extends JbpmException {
+
+ private static final long serialVersionUID = 1L;
+
+ public JbpmClassNotFoundException(String msg, Throwable cause) {
+ super(msg, cause);
+ }
+ public JbpmClassNotFoundException(Throwable cause) {
+ super(cause);
+ }
+}
Property changes on:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/JbpmClassNotFoundException.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/WireContext.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/WireContext.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/WireContext.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -34,7 +34,6 @@
import org.jbpm.pvm.internal.cfg.ProcessEngineImpl;
import org.jbpm.pvm.internal.env.Context;
import org.jbpm.pvm.internal.env.EnvironmentImpl;
-import org.jbpm.pvm.internal.env.EnvironmentFactory;
import org.jbpm.pvm.internal.model.ProcessElementImpl;
import org.jbpm.pvm.internal.util.Closable;
import org.jbpm.pvm.internal.util.DefaultObservable;
@@ -202,7 +201,6 @@
// member fields ////////////////////////////////////////////////////////////
protected String name = "wire-context";
- protected transient ClassLoader classLoader;
protected WireDefinition wireDefinition;
/** objects that are being instantiated or constructed */
@@ -233,7 +231,6 @@
public WireContext(WireDefinition wireDefinition, String name) {
this.wireDefinition = wireDefinition;
this.name = name;
- this.classLoader = (wireDefinition!=null ? wireDefinition.getClassLoader() : null);
create();
}
@@ -249,7 +246,6 @@
public WireContext(WireDefinition wireDefinition, String name, boolean delayCreate) {
this.wireDefinition = wireDefinition;
this.name = name;
- this.classLoader = (wireDefinition!=null ? wireDefinition.getClassLoader() : null);
if (! delayCreate) {
create();
@@ -669,21 +665,6 @@
) ;
}
- /** the class loader to use to create objects or if none was explicitely set in this
wire context,
- * the default context class loader for the current thread. */
- public ClassLoader getClassLoader() {
- // if there is a specific classloader specified
- if (classLoader!=null) {
- return classLoader;
- }
- // otherwise, use the current environment classloader
- return Thread.currentThread().getContextClassLoader();
- }
-
- public boolean hasClassLoader() {
- return classLoader!=null;
- }
-
// search by class //////////////////////////////////////////////////////////
/** searches for the first descriptor that defines an object of the given type.
@@ -730,9 +711,6 @@
public String getName() {
return name;
}
- public void setClassLoader(ClassLoader classLoader) {
- this.classLoader = classLoader;
- }
public WireDefinition getWireDefinition() {
return wireDefinition;
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/WireDefinition.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/WireDefinition.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/WireDefinition.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -44,7 +44,6 @@
private static final long serialVersionUID = 1L;
// static Log log = Log.getLog(WireDefinition.class.getName());
- transient ClassLoader classLoader;
/** maps object names to {@link Descriptor}s */
Map<String, Descriptor> descriptors;
Map<Class<?>, String> descriptorNames;
@@ -189,15 +188,6 @@
}
}
- public ClassLoader getClassLoader() {
- // if there is a specific classloader specified
- if (classLoader!=null) {
- return classLoader;
- }
- // otherwise, use the current environment classloader
- return Thread.currentThread().getContextClassLoader();
- }
-
public void addWireDefinition(WireDefinition wireDefinition) {
if ( (wireDefinition!=null)
&& (wireDefinition.getDescriptors()!=null)
@@ -223,7 +213,4 @@
public void setDescriptors(Map<String, Descriptor> descriptors) {
this.descriptors = descriptors;
}
- public void setClassLoader(ClassLoader classLoader) {
- this.classLoader = classLoader;
- }
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/AbstractCollectionBinding.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/AbstractCollectionBinding.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/AbstractCollectionBinding.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -53,14 +53,15 @@
}
try {
- Class<?> collectionClass = ReflectUtil.loadClass(parse.getClassLoader(),
className);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Class<?> collectionClass = Class.forName(className, true, classLoader);
if (collectionInterface.isAssignableFrom(collectionClass)) {
return true;
} else {
parse.addProblem("class "+ className+" is not a
"+collectionInterface.getName());
}
- } catch (JbpmException e) {
+ } catch (Exception e) {
parse.addProblem("class "+className+" could not be found");
}
return false;
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/HibernateConfigurationBinding.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/HibernateConfigurationBinding.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/HibernateConfigurationBinding.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -162,7 +162,9 @@
if (configElement.hasAttribute("resource")) {
String resource = configElement.getAttribute("resource");
- streamSource = new ResourceStreamInput(resource, parse.getClassLoader());
+
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ streamSource = new ResourceStreamInput(resource, classLoader);
}
if (configElement.hasAttribute("url")) {
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ScriptManagerBinding.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ScriptManagerBinding.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/ScriptManagerBinding.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -79,7 +79,8 @@
&& (factoryClassName!=null)
) {
try {
- Class<?> factoryClass = ReflectUtil.loadClass(parse.getClassLoader(),
factoryClassName);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Class<?> factoryClass = Class.forName(factoryClassName, true,
classLoader);
ScriptEngineFactory scriptEngineFactory = (ScriptEngineFactory)
factoryClass.newInstance();
scriptEngineManager.registerEngineName(languageName, scriptEngineFactory);
} catch (Exception e) {
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/TypesBinding.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/TypesBinding.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/TypesBinding.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -71,7 +71,8 @@
if (element.hasAttribute("resource")) {
String resource = element.getAttribute("resource");
- streamSource = new ResourceStreamInput(resource, parse.getClassLoader());
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ streamSource = new ResourceStreamInput(resource, classLoader);
parser.importStream(streamSource, element, parse);
}
@@ -158,9 +159,9 @@
Converter converter = null;
if (element.hasAttribute("converter")) {
String converterClassName = element.getAttribute("converter");
- ClassLoader classLoader = parse.getClassLoader();
try {
- Class<?> converterClass = ReflectUtil.loadClass(classLoader,
converterClassName);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Class<?> converterClass = Class.forName(converterClassName, true,
classLoader);
converter = (Converter) converterClass.newInstance();
} catch (Exception e) {
parse.addProblem("couldn't instantiate converter
"+converterClassName, element);
@@ -185,9 +186,9 @@
Class<?> variableClass = null;
if (element.hasAttribute("variable-class")) {
String variableClassName = element.getAttribute("variable-class");
- ClassLoader classLoader = parse.getClassLoader();
try {
- variableClass = ReflectUtil.loadClass(classLoader, variableClassName);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ variableClass = Class.forName(variableClassName, true, classLoader);
} catch (Exception e) {
parse.addProblem("couldn't instantiate variable-class
"+variableClassName, e);
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ClassDescriptor.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ClassDescriptor.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ClassDescriptor.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -1,7 +1,5 @@
package org.jbpm.pvm.internal.wire.descriptor;
-import org.jbpm.api.JbpmException;
-import org.jbpm.pvm.internal.util.ReflectUtil;
import org.jbpm.pvm.internal.wire.WireContext;
import org.jbpm.pvm.internal.wire.WireException;
@@ -22,10 +20,10 @@
* @throws WireException if the class could not be loaded.
*/
public Object construct(WireContext wireContext) {
- ClassLoader classLoader = wireContext.getClassLoader();
try {
- return ReflectUtil.loadClass(classLoader, text);
- } catch (JbpmException e) {
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ return Class.forName(text, true, classLoader);
+ } catch (Exception e) {
Throwable cause = (e.getCause()!=null ? e.getCause() : e);
throw new WireException("couldn't load class '"+text+"':
"+cause.getMessage(), cause);
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ClassLoaderDescriptor.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ClassLoaderDescriptor.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ClassLoaderDescriptor.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -33,7 +33,7 @@
private static final long serialVersionUID = 1L;
public Object construct(WireContext wireContext) {
- return wireContext.getClassLoader();
+ return Thread.currentThread().getContextClassLoader();
}
public Class<?> getType(WireDefinition wireDefinition) {
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/CollectionDescriptor.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/CollectionDescriptor.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/CollectionDescriptor.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -38,8 +38,8 @@
Object object = null;
try {
// instantiate
- ClassLoader classLoader = wireContext.getClassLoader();
- Class<?> clazz = ReflectUtil.loadClass(classLoader, className);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Class<?> clazz = Class.forName(className, true, classLoader);
object = clazz.newInstance();
if (isSynchronized) {
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/HibernateConfigurationDescriptor.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/HibernateConfigurationDescriptor.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/HibernateConfigurationDescriptor.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -55,10 +55,14 @@
// instantiation of the configuration
Configuration configuration = null;
if (className!=null) {
- ClassLoader classLoader = wireContext.getClassLoader();
- log.trace("instantiating hibernate configuration class "+className);
- Class<?> configurationClass = ReflectUtil.loadClass(classLoader, className);
- configuration = (Configuration) ReflectUtil.newInstance(configurationClass);
+ try {
+ log.trace("instantiating hibernate configuration class "+className);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Class<?> configurationClass = Class.forName(className, true, classLoader);
+ configuration = (Configuration) ReflectUtil.newInstance(configurationClass);
+ } catch (Exception e) {
+ throw new JbpmException("couldn't instantiate hibernate configuration
class "+className, e);
+ }
} else {
log.trace("instantiating default hibernate configuration");
configuration = new Configuration();
@@ -91,8 +95,9 @@
public Class<?> getType(WireDefinition wireDefinition) {
if (className!=null) {
try {
- return ReflectUtil.loadClass(wireDefinition.getClassLoader(), className);
- } catch (JbpmException e) {
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ return Class.forName(className, true, classLoader);
+ } catch (Exception e) {
throw new WireException("couldn't create hibernate configuration
'"+className+"': "+e.getMessage(), e.getCause());
}
}
@@ -193,8 +198,9 @@
this.resource = resource;
}
public void apply(Object target, WireContext wireContext) {
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
Configuration configuration = (Configuration) target;
- configuration.addResource(resource, wireContext.getClassLoader());
+ configuration.addResource(resource, classLoader);
}
public String toString() {
return "adding mapping resource "+resource+" to hibernate
configuration";
@@ -225,7 +231,8 @@
public void apply(Object target, WireContext wireContext) {
Configuration configuration = (Configuration) target;
try {
- Class<?> persistentClass =
wireContext.getClassLoader().loadClass(className);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Class<?> persistentClass = Class.forName(className, true, classLoader);
configuration.addClass(persistentClass);
} catch (Exception e) {
throw new JbpmException("couldn't add mapping for class
"+className, e);
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ObjectDescriptor.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -14,6 +14,7 @@
import org.jbpm.pvm.internal.script.ScriptManager;
import org.jbpm.pvm.internal.util.ReflectUtil;
import org.jbpm.pvm.internal.wire.Descriptor;
+import org.jbpm.pvm.internal.wire.JbpmClassNotFoundException;
import org.jbpm.pvm.internal.wire.WireContext;
import org.jbpm.pvm.internal.wire.WireDefinition;
import org.jbpm.pvm.internal.wire.WireException;
@@ -139,10 +140,10 @@
if (className!=null) {
try {
- ClassLoader classLoader = wireContext.getClassLoader();
- clazz = ReflectUtil.loadClass(classLoader, className);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ clazz = Class.forName(className, true, classLoader);
} catch (Exception e) {
- throw new WireException("couldn't create object"+(name!=null ?
" '"+name+"'" : "")+": "+e.getMessage(),
e);
+ throw new JbpmClassNotFoundException("couldn't load class
"+className, e);
}
if (methodName==null) {
@@ -236,9 +237,10 @@
public Class<?> getType(WireDefinition wireDefinition) {
if (className!=null) {
try {
- return ReflectUtil.loadClass(wireDefinition.getClassLoader(), className);
- } catch (JbpmException e) {
- throw new WireException("couldn't get type of '"+(name!=null ?
name : className)+"': "+e.getMessage(), e.getCause());
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ return Class.forName(className, true, classLoader);
+ } catch (Exception e) {
+ throw new WireException("couldn't load class
'"+className+"'", e);
}
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/PropertiesDescriptor.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/PropertiesDescriptor.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/PropertiesDescriptor.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -67,7 +67,8 @@
if (resource!=null) {
description = "resource "+resource;
- InputStream inputStream =
wireContext.getClassLoader().getResourceAsStream(resource);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ InputStream inputStream = classLoader.getResourceAsStream(resource);
if (inputStream==null) {
throw new RuntimeException("resource "+resource+" doesn't
exist");
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ReferenceDescriptor.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ReferenceDescriptor.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/descriptor/ReferenceDescriptor.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -37,7 +37,8 @@
return wireContext.get(text, isDelayedInitializationAllowed());
} else if (type!=null) {
try {
- Class<?> clazz = wireContext.getClassLoader().loadClass(type);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Class<?> clazz = Class.forName(type, true, classLoader);
return wireContext.get(clazz);
} catch (Exception e) {
throw new JbpmException("couldn't load "+type, e);
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/operation/FieldOperation.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/operation/FieldOperation.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/operation/FieldOperation.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -35,7 +35,7 @@
synchronized(this) {
if (field==null) {
Class<?> clazz = target.getClass();
- field = ReflectUtil.getField(clazz, fieldName);
+ field = ReflectUtil.findField(clazz, fieldName);
}
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/BindingParser.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/BindingParser.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/BindingParser.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -24,7 +24,6 @@
import java.util.List;
import org.jbpm.internal.log.Log;
-import org.jbpm.pvm.internal.util.ReflectUtil;
import org.jbpm.pvm.internal.util.XmlUtil;
import org.jbpm.pvm.internal.xml.Binding;
import org.jbpm.pvm.internal.xml.Bindings;
@@ -46,7 +45,8 @@
Binding binding = null;
if (bindingClassName!=null) {
try {
- Class<?> bindingClass = ReflectUtil.loadClass(classLoader,
bindingClassName);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Class<?> bindingClass = Class.forName(bindingClassName, true,
classLoader);
binding = (Binding) bindingClass.newInstance();
} catch (Exception e) {
log.trace("couldn't instantiate binding "+bindingClassName);
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/WireParser.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/WireParser.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/xml/WireParser.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -4,8 +4,8 @@
import java.util.Enumeration;
import java.util.List;
+import org.jbpm.api.JbpmException;
import org.jbpm.internal.log.Log;
-import org.jbpm.pvm.internal.util.ReflectUtil;
import org.jbpm.pvm.internal.util.XmlUtil;
import org.jbpm.pvm.internal.wire.Descriptor;
import org.jbpm.pvm.internal.wire.WireContext;
@@ -193,7 +193,6 @@
if (wireDefinition==null) {
wireDefinition = new WireDefinition();
}
- wireDefinition.setClassLoader(classLoader);
parse.pushObject(wireDefinition);
try {
@@ -271,7 +270,13 @@
BindingParser bindingParser = new BindingParser();
for (String wireResource: DEFAULT_WIRE_BINDING_RESOURCES) {
- Enumeration<URL> resourceUrls = ReflectUtil.getResources(null,
wireResource);
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+ Enumeration<URL> resourceUrls;
+ try {
+ resourceUrls = classLoader.getResources(wireResource);
+ } catch (Exception e) {
+ throw new JbpmException("couldn't get resource urls for
"+wireResource, e);
+ }
if (resourceUrls.hasMoreElements()) {
while (resourceUrls.hasMoreElements()) {
URL resourceUrl = resourceUrls.nextElement();
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java 2009-09-24
12:55:59 UTC (rev 5668)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -52,7 +52,6 @@
protected Parser parser;
- protected ClassLoader classLoader;
protected StreamInput streamInput;
protected InputStream inputStream;
protected InputSource inputSource;
@@ -87,15 +86,9 @@
return this;
}
- /** specify the classLoader to be used for resource input
- * (this is optional) */
- public Parse setClassLoader(ClassLoader classLoader) {
- this.classLoader = classLoader;
- return this;
- }
-
/** specify a resource as the source for this parse */
public Parse setResource(String resource) {
+ ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
this.streamInput = new ResourceStreamInput(resource, classLoader);
return this;
}
@@ -244,8 +237,4 @@
public Document getDocument() {
return document;
}
- /** the ClassLoader used to resolve input resources. */
- public ClassLoader getClassLoader() {
- return classLoader;
- }
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parser.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parser.java 2009-09-24
12:55:59 UTC (rev 5668)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parser.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -396,8 +396,7 @@
parseDocument(parse.document, parse);
} catch (Exception e) {
- e.printStackTrace();
- parse.addProblem("couldn't interpret the dom model:
"+e.getMessage(), e);
+ parse.addProblem("parsing exception: "+e.getMessage(), e);
}
}
Modified:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/ProblemList.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/ProblemList.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/ProblemList.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -153,13 +153,20 @@
if (message!=null) {
errorMsg.append(message);
errorMsg.append(": ");
+ } else if (problems.size()==1) {
+ Throwable singleCause = problems.get(0).getCause();
+ if ( (singleCause!=null)
+ && (JbpmException.class.isAssignableFrom(singleCause.getClass()))
+ ) {
+ return (JbpmException) singleCause;
+ }
}
for (Problem p : getProblems()) {
errorMsg.append(NEWLINE);
errorMsg.append(" ");
errorMsg.append(p.toString());
-
+
if (p.getCause()!=null) {
cause = new JbpmException(p.getCause());
}
Modified:
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/activities/PrintLnBuilder.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/activities/PrintLnBuilder.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/activities/PrintLnBuilder.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -34,7 +34,7 @@
public PrintLnBuilder(ActivityBuilder activityBuilder) {
super(activityBuilder);
- activity.setBehaviour(printLn);
+ activity.setActivityBehaviour(printLn);
}
public PrintLnBuilder message(String message) {
Modified: jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java 2009-09-24
12:55:59 UTC (rev 5668)
+++ jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/builder/BuilderTest.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -62,9 +62,6 @@
ActivityImpl decisionActivity = (ActivityImpl)
processDefinition.getActivity("start");
assertNotNull(decisionActivity);
assertEquals("start", decisionActivity.getName());
-
- TestActivity testActivity = (TestActivity) decisionActivity.getBehaviour();
- assertEquals("some cfg value", testActivity.getTestActivityProperty());
}
public void testBuilderMultipleOutgoingFlows() {
Modified:
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/builder/TestBehaviourBuilder.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/builder/TestBehaviourBuilder.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/builder/TestBehaviourBuilder.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -34,7 +34,7 @@
public TestBehaviourBuilder(ActivityBuilder activityBuilder) {
super(activityBuilder);
- activity.setBehaviour(testActivity);
+ activity.setActivityBehaviour(testActivity);
}
public TestBehaviourBuilder testActivityProperty(String testActivityProperty) {
Modified:
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/ObjectWireTest.java
===================================================================
---
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/ObjectWireTest.java 2009-09-24
12:55:59 UTC (rev 5668)
+++
jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/ObjectWireTest.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -105,8 +105,7 @@
fail("expected exception");
} catch (JbpmException e) {
- assertTextPresent("couldn't get type of 'o'",
e.getMessage());
- assertTextPresent("couldn't load class invalid-object-type",
e.getMessage());
+ assertTextPresent("couldn't load class
'invalid-object-type'", e.getMessage());
}
}
Added:
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/classloading/DelayedInstantiationTest.java
===================================================================
---
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/classloading/DelayedInstantiationTest.java
(rev 0)
+++
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/classloading/DelayedInstantiationTest.java 2009-09-25
14:04:45 UTC (rev 5669)
@@ -0,0 +1,78 @@
+/*
+ * 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.test.classloading;
+
+import org.jbpm.api.activity.ActivityBehaviour;
+import org.jbpm.api.activity.ActivityExecution;
+import org.jbpm.test.JbpmTestCase;
+
+
+/**
+ * @author Tom Baeyens
+ */
+public class DelayedInstantiationTest extends JbpmTestCase {
+
+ public static class MyActivity implements ActivityBehaviour {
+ private static final long serialVersionUID = 1L;
+ public void execute(ActivityExecution execution) throws Exception {
+ }
+ }
+
+ public static class StrippingClassLoader extends ClassLoader {
+ public StrippingClassLoader(ClassLoader parent) {
+ super(parent);
+ }
+
+ public Class loadClass(String className) throws ClassNotFoundException {
+ if ( className.startsWith("==")
+ && className.endsWith("==") ) {
+ className = className.substring(2, className.length()-2);
+ }
+ ClassLoader parent = getParent();
+ return parent.loadClass(className);
+ }
+
+ }
+
+ public void testDelayedInstantiation() {
+ deployJpdlXmlString(
+ "<process
name='UserClassNotVisibleDuringprocessParsing'>" +
+ " <start>" +
+ " <transition to='a' />" +
+ " </start>" +
+ " <custom name='a'
class='=="+MyActivity.class.getName()+"==' >" +
+ " <transition to='b' />" +
+ " </custom>" +
+ " <state name='b' />" +
+ "</process>"
+ );
+
+// ClassLoader original = Thread.currentThread().getContextClassLoader();
+// StrippingClassLoader strippingClassLoader = new StrippingClassLoader(original);
+// Thread.currentThread().setContextClassLoader(strippingClassLoader);
+// try {
+//
executionService.startProcessInstanceByKey("UserClassNotVisibleDuringprocessParsing");
+// } finally {
+// Thread.currentThread().setContextClassLoader(original);
+// }
+ }
+}
Property changes on:
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/classloading/DelayedInstantiationTest.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain