[jbpm-commits] JBoss JBPM SVN: r2629 - in jbpm3/trunk/modules/core: src/main/java/org/jbpm/instantiation and 2 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon Oct 27 12:03:09 EDT 2008
Author: tom.baeyens at jboss.com
Date: 2008-10-27 12:03:08 -0400 (Mon, 27 Oct 2008)
New Revision: 2629
Added:
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/InstantiateAction.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/InstantiateClass.java
jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/archiveresource.txt
jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classresource.txt
jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/instantiateprocess.xml
Removed:
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/NotInParAction.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessLoadedActionHandler.java
jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/archiveresource.txt
jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classloadingprocess.xml
jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classresource.txt
Modified:
jbpm3/trunk/modules/core/pom.xml
jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/ProcessClassLoader.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java
jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessClassLoaderTest.java
Log:
[JBPM-1448] reworked classloading tests, re-added package information
Modified: jbpm3/trunk/modules/core/pom.xml
===================================================================
--- jbpm3/trunk/modules/core/pom.xml 2008-10-27 15:53:40 UTC (rev 2628)
+++ jbpm3/trunk/modules/core/pom.xml 2008-10-27 16:03:08 UTC (rev 2629)
@@ -222,8 +222,9 @@
<exclude>org/jbpm/perf/StateUpdateTest.java</exclude>
<!-- https://jira.jboss.org/jira/browse/JBPM-1724 -->
<exclude>org/jbpm/seam/SeamPageFlowTest.java</exclude>
- <!-- https://jira.jboss.org/jira/browse/JBPM-1448 -->
- <exclude>org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java</exclude>
+ <!-- https://jira.jboss.org/jira/browse/JBPM-1709 -->
+ <exclude>org/jbpm/scheduler/exe/TimerDbTest.java</exclude>
+ <exclude>org/jbpm/taskmgmt/exe/TaskTimerExecutionDbTest.java</exclude>
</excludes>
</configuration>
</plugin>
@@ -257,8 +258,9 @@
<exclude>org/jbpm/perf/StateUpdateTest.java</exclude>
<!-- https://jira.jboss.org/jira/browse/JBPM-1724 -->
<exclude>org/jbpm/seam/SeamPageFlowTest.java</exclude>
- <!-- https://jira.jboss.org/jira/browse/JBPM-1448 -->
- <exclude>org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java</exclude>
+ <!-- https://jira.jboss.org/jira/browse/JBPM-1709 -->
+ <exclude>org/jbpm/scheduler/exe/TimerDbTest.java</exclude>
+ <exclude>org/jbpm/taskmgmt/exe/TaskTimerExecutionDbTest.java</exclude>
</excludes>
</configuration>
</plugin>
@@ -294,8 +296,9 @@
<exclude>org/jbpm/seam/SeamPageFlowTest.java</exclude>
<!-- https://jira.jboss.org/jira/browse/JBPM-1735 -->
<exclude>org/jbpm/graph/node/ProcessStateDbTest.java</exclude>
- <!-- https://jira.jboss.org/jira/browse/JBPM-1448 -->
- <exclude>org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java</exclude>
+ <!-- https://jira.jboss.org/jira/browse/JBPM-1709 -->
+ <exclude>org/jbpm/scheduler/exe/TimerDbTest.java</exclude>
+ <exclude>org/jbpm/taskmgmt/exe/TaskTimerExecutionDbTest.java</exclude>
</excludes>
</configuration>
</plugin>
@@ -334,8 +337,9 @@
<exclude>org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java</exclude>
<!-- https://jira.jboss.org/jira/browse/JBPM-1782 -->
<exclude>org/jbpm/jpdl/exe/JoinExecutionDbTest.java</exclude>
- <!-- https://jira.jboss.org/jira/browse/JBPM-1448 -->
- <exclude>org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java</exclude>
+ <!-- https://jira.jboss.org/jira/browse/JBPM-1709 -->
+ <exclude>org/jbpm/scheduler/exe/TimerDbTest.java</exclude>
+ <exclude>org/jbpm/taskmgmt/exe/TaskTimerExecutionDbTest.java</exclude>
</excludes>
</configuration>
</plugin>
@@ -371,8 +375,9 @@
<exclude>org/jbpm/seam/SeamPageFlowTest.java</exclude>
<!-- https://jira.jboss.org/jira/browse/JBPM-1764 -->
<exclude>org/jbpm/job/executor/JobExecutorDbTest</exclude>
- <!-- https://jira.jboss.org/jira/browse/JBPM-1448 -->
- <exclude>org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java</exclude>
+ <!-- https://jira.jboss.org/jira/browse/JBPM-1709 -->
+ <exclude>org/jbpm/scheduler/exe/TimerDbTest.java</exclude>
+ <exclude>org/jbpm/taskmgmt/exe/TaskTimerExecutionDbTest.java</exclude>
</excludes>
</configuration>
</plugin>
Modified: jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/ProcessClassLoader.java
===================================================================
--- jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/ProcessClassLoader.java 2008-10-27 15:53:40 UTC (rev 2628)
+++ jbpm3/trunk/modules/core/src/main/java/org/jbpm/instantiation/ProcessClassLoader.java 2008-10-27 16:03:08 UTC (rev 2629)
@@ -115,15 +115,14 @@
// Add the package information
// see https://jira.jboss.org/jira/browse/JBPM-1404
- // not necessary! Test passes without it?
-// final int packageIndex = name.lastIndexOf('.');
-// if (packageIndex != -1) {
-// final String packageName = name.substring(0, packageIndex);
-// final Package classPackage = getPackage(packageName);
-// if (classPackage == null) {
-// definePackage(packageName, null, null, null, null, null, null, null);
-// }
-// }
+ final int packageIndex = name.lastIndexOf('.');
+ if (packageIndex != -1) {
+ final String packageName = name.substring(0, packageIndex);
+ final Package classPackage = getPackage(packageName);
+ if (classPackage == null) {
+ definePackage(packageName, null, null, null, null, null, null, null);
+ }
+ }
}
if (clazz==null) {
Added: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/InstantiateAction.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/InstantiateAction.java (rev 0)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/InstantiateAction.java 2008-10-27 16:03:08 UTC (rev 2629)
@@ -0,0 +1,14 @@
+package org.jbpm.jpdl.par;
+
+import org.jbpm.graph.def.ActionHandler;
+import org.jbpm.graph.exe.ExecutionContext;
+
+public class InstantiateAction implements ActionHandler {
+
+ private static final long serialVersionUID = 1L;
+
+ public void execute(ExecutionContext executionContext) throws Exception {
+ new InstantiateClass();
+ }
+
+}
Added: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/InstantiateClass.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/InstantiateClass.java (rev 0)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/InstantiateClass.java 2008-10-27 16:03:08 UTC (rev 2629)
@@ -0,0 +1,4 @@
+package org.jbpm.jpdl.par;
+
+public class InstantiateClass {
+}
Deleted: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/NotInParAction.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/NotInParAction.java 2008-10-27 15:53:40 UTC (rev 2628)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/NotInParAction.java 2008-10-27 16:03:08 UTC (rev 2629)
@@ -1,20 +0,0 @@
-package org.jbpm.jpdl.par;
-
-import org.jbpm.graph.def.ActionHandler;
-import org.jbpm.graph.exe.ExecutionContext;
-
-public class NotInParAction implements ActionHandler {
-
- public void execute(ExecutionContext executionContext) throws Exception {
- // create new action without specifying classloader
- // should use the ProcessClassLoader specified as ContextClassLoader
- // this can be verified later on
- ProcessArchiveDeploymentDbTest.resourceActionInstance =
- Thread.currentThread().getContextClassLoader().loadClass("org.jbpm.jpdl.par.ResourceAction").newInstance();
-
- // TODO: why doesn't the following work? I thought it is delegated to
- // the context class loader? But it seems not that easy?
- // ProcessArchiveDeploymentDbTest.resourceActionInstance = new ResourceAction();
- }
-
-}
Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java 2008-10-27 15:53:40 UTC (rev 2628)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java 2008-10-27 16:03:08 UTC (rev 2629)
@@ -21,6 +21,8 @@
*/
package org.jbpm.jpdl.par;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
@@ -52,26 +54,26 @@
public void testDeployProcess() throws Exception
{
- // create a process archive file and save it to disk
- String fileName = getTestClassesDir() + "/testarchive.process";
- FileOutputStream fileOutputStream = new FileOutputStream(fileName);
- ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
+ // create a process archive
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ZipOutputStream zipOutputStream = new ZipOutputStream(baos);
addEntry(zipOutputStream, "processdefinition.xml", "org/jbpm/jpdl/par/deployableprocess.xml");
zipOutputStream.close();
+ byte[] zipBytes = baos.toByteArray();
- // deploy the saved process file
- ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(fileName));
+ // deploy the process archive
+ ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
jbpmContext.deployProcessDefinition(processDefinition);
-
- newTransaction();
-
- List allProcessDefinitions = graphSession.findAllProcessDefinitions();
- assertEquals(1, allProcessDefinitions.size());
- processDefinition = (ProcessDefinition)allProcessDefinitions.get(0);
try
{
+ newTransaction();
+
+ List allProcessDefinitions = graphSession.findAllProcessDefinitions();
+ assertEquals(1, allProcessDefinitions.size());
+
+ processDefinition = (ProcessDefinition)allProcessDefinitions.get(0);
assertEquals("the deployable process", processDefinition.getName());
}
finally
@@ -82,19 +84,18 @@
public void testDeployProcessWithFile() throws Exception
{
- // create a process archive file and save it to disk
- String fileName = getTestClassesDir() + "/testarchive.process";
- FileOutputStream fileOutputStream = new FileOutputStream(fileName);
- ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
+ // create a process archive
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ZipOutputStream zipOutputStream = new ZipOutputStream(baos);
addEntry(zipOutputStream, "processdefinition.xml", "org/jbpm/jpdl/par/deployableprocess.xml");
addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.class", "org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.class");
zipOutputStream.close();
+ byte[] zipBytes = baos.toByteArray();
- // deploy the saved process file
- ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(fileName));
-
+ ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
jbpmContext.deployProcessDefinition(processDefinition);
+
try
{
newTransaction();
@@ -115,21 +116,22 @@
public void testDeployTwoVersionOfProcess() throws Exception
{
- // create a process archive file and save it to disk
- String fileName = getTestClassesDir() + "/testarchive.process";
- FileOutputStream fileOutputStream = new FileOutputStream(fileName);
- ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
+ // create a process archive
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ ZipOutputStream zipOutputStream = new ZipOutputStream(baos);
addEntry(zipOutputStream, "processdefinition.xml", "org/jbpm/jpdl/par/deployableprocess.xml");
zipOutputStream.close();
+ byte[] zipBytes = baos.toByteArray();
- // deploy the saved process file
- ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(fileName));
+ // deploy the saved process archive
+ ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
ProcessDefinition processDefinitionOne = ProcessDefinition.parseParZipInputStream(zipInputStream);
jbpmContext.deployProcessDefinition(processDefinitionOne);
+
newTransaction();
// deploy the saved process file again
- zipInputStream = new ZipInputStream(new FileInputStream(fileName));
+ zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
ProcessDefinition processDefinitionTwo = ProcessDefinition.parseParZipInputStream(zipInputStream);
jbpmContext.deployProcessDefinition(processDefinitionTwo);
@@ -147,165 +149,6 @@
}
}
- public static String classResourceUrl = null;
- public static String classResourceStream = null;
- public static String classLoaderResourceUrl = null;
- public static String classLoaderResourceStream = null;
- public static String archiveResourceUrl = null;
- public static String archiveResourceStream = null;
- public static String archiveClassLoaderResourceUrl = null;
- public static String archiveClassLoaderResourceStream = null;
- public static InputStream unexistingClassResourceStream = null;
- public static InputStream unexistingClassLoaderResourceStream = null;
- public static InputStream unexistingArchiveResourceStream = null;
- public static InputStream unexistingArchiveLoaderResourceStream = null;
-
- public static Object resourceActionInstance = null;
-
- public void testExecuteResourceUsingProcess() throws Exception
- {
- // create a process archive file and save it to disk
- String fileName = getTestClassesDir() + "/resource.process";
- FileOutputStream fileOutputStream = new FileOutputStream(fileName);
- ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
- addEntry(zipOutputStream, "processdefinition.xml", "org/jbpm/jpdl/par/resourceprocess.xml");
- addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/ResourceAction.class", "org/jbpm/jpdl/par/ResourceAction.class");
- addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/classresource.txt", "org/jbpm/jpdl/par/classresource.txt");
- addEntry(zipOutputStream, "archiveresource.txt", "org/jbpm/jpdl/par/archiveresource.txt");
- zipOutputStream.close();
-
- // rename the resources to force usage of the process classloader by preventing that they will be found in the test classpath
- String classOriginalName = getTestClassesDir() + "org/jbpm/jpdl/par/ResourceAction.class";
- String classTmpName = classOriginalName + ".hiddenFromTestClasspath";
- String resourceOriginalName = getTestClassesDir() + "org/jbpm/jpdl/par/classresource.txt";
- String resourceTmpName = resourceOriginalName + ".hiddenFromTestClasspath";
- // move the files
- assertTrue(new File(classOriginalName).renameTo(new File(classTmpName)));
- assertTrue(new File(resourceOriginalName).renameTo(new File(resourceTmpName)));
-
- try
- {
- // deploy the saved process file
- ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(fileName));
- ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
- jbpmContext.deployProcessDefinition(processDefinition);
- try
- {
- newTransaction();
-
- ProcessInstance processInstance = jbpmContext.newProcessInstance("resourceprocess");
-
- classResourceUrl = null;
- classResourceStream = null;
- classLoaderResourceUrl = null;
- classLoaderResourceStream = null;
-
- archiveResourceUrl = null;
- archiveResourceStream = null;
- archiveClassLoaderResourceUrl = null;
- archiveClassLoaderResourceStream = null;
-
- unexistingClassResourceStream = null;
- unexistingClassLoaderResourceStream = null;
- unexistingArchiveResourceStream = null;
- unexistingArchiveLoaderResourceStream = null;
-
- resourceActionInstance = null;
-
- processInstance.signal();
- }
- finally
- {
- jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
- }
- }
- finally
- {
- // put the files back into original position
- new File(classTmpName).renameTo(new File(classOriginalName));
- new File(resourceTmpName).renameTo(new File(resourceOriginalName));
- }
-
- assertEquals("the class resource content", classResourceUrl);
- assertEquals("the class resource content", classResourceStream);
- assertEquals("the class resource content", classLoaderResourceUrl);
- assertEquals("the class resource content", classLoaderResourceStream);
-
- assertEquals("the archive resource content", archiveResourceUrl);
- assertEquals("the archive resource content", archiveResourceStream);
- assertEquals("the archive resource content", archiveClassLoaderResourceUrl);
- assertEquals("the archive resource content", archiveClassLoaderResourceStream);
-
- assertNull(unexistingClassResourceStream);
- assertNull(unexistingClassLoaderResourceStream);
- assertNull(unexistingArchiveResourceStream);
- assertNull(unexistingArchiveLoaderResourceStream);
-
- // test if package information are set correctly
- // see https://jira.jboss.org/jira/browse/JBPM-1404
- assertEquals("org.jbpm.jpdl.par", resourceActionInstance.getClass().getPackage().getName());
- resourceActionInstance = null;
- }
-
- /**
- * start process with action, which itselfs loads an action via "new ResourceAction()".
- * This action is checked if it gets loaded by the ProcessClassLoader
- * correctly (which should be set as ContextClassLoader)
- *
- * TODO: doesn't yet test the right thing, looks like the Action
- * first tries its own classloader (which is a ProcessClassLoader)
- * and thus it works even without the ContextClassLoader set.
- */
- public void testProcessClassLoaderAsContextClassLoader() throws Exception {
- // create a process archive file and save it to disk
- String fileName = getTestClassesDir() + "/resource.process";
- FileOutputStream fileOutputStream = new FileOutputStream(fileName);
- ZipOutputStream zipOutputStream = new ZipOutputStream(fileOutputStream);
- addEntry(zipOutputStream, "processdefinition.xml", "org/jbpm/jpdl/par/classloadingprocess.xml");
- addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/ResourceAction.class", "org/jbpm/jpdl/par/ResourceAction.class");
- addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/ProcessLoadedActionHandler.class", "org/jbpm/jpdl/par/ProcessLoadedActionHandler.class");
- zipOutputStream.close();
-
- // deploy the saved process file
- ZipInputStream zipInputStream = new ZipInputStream(new FileInputStream(fileName));
- ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
-
- // rename the resources to force usage of the process classloader by preventing that they will be found in the test classpath
- String classOriginalName1 = getTestClassesDir() + "org/jbpm/jpdl/par/ResourceAction.class";
- String classTmpName1 = classOriginalName1 + ".hiddenFromTestClasspath";
- String classOriginalName2 = getTestClassesDir() + "org/jbpm/jpdl/par/ProcessLoadedActionHandler.class";
- String classTmpName2 = classOriginalName2 + ".hiddenFromTestClasspath";
-
- // move the files
- assertTrue(new File(classOriginalName1).renameTo(new File(classTmpName1)));
- assertTrue(new File(classOriginalName2).renameTo(new File(classTmpName2)));
-
- try {
- jbpmContext.deployProcessDefinition(processDefinition);
- try {
- newTransaction();
-
- ProcessInstance processInstance = jbpmContext.newProcessInstance("the deployable process");
- processInstance.signal();
- } finally {
- jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
- }
- } finally {
- // put the files back into original position
- new File(classTmpName1).renameTo(new File(classOriginalName1));
- new File(classTmpName2).renameTo(new File(classOriginalName2));
- }
-
- assertEquals(ProcessClassLoader.class, resourceActionInstance.getClass().getClassLoader().getClass());
- resourceActionInstance = null;
- }
-
- // TODO: do the same thing when using the context class loader
- // and check, that the hierarchy is correct ProcessClassLoader -> ContextClassLoader
- // and not ProcessClassLoader -> ProcessClassLoader -> ContextClassLoader
- // assertEquals(Thread.currentThread().getContextClassLoader(), resourceActionInstance.getClass().getClassLoader().getParent());
-
-
private static void addEntry(ZipOutputStream zipOutputStream, String entryName, String resource) throws IOException
{
InputStream inputStream = ClassLoaderUtil.getStream(resource);
Modified: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessClassLoaderTest.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessClassLoaderTest.java 2008-10-27 15:53:40 UTC (rev 2628)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessClassLoaderTest.java 2008-10-27 16:03:08 UTC (rev 2629)
@@ -9,6 +9,7 @@
import org.jbpm.graph.exe.ProcessInstance;
import org.jbpm.instantiation.ConfigurableClassloadersTest;
import org.jbpm.instantiation.ProcessClassLoader;
+import org.jbpm.util.ClassLoaderUtil;
/**
* Test case for ProcessClassLoader hierarchy and setting the ContextClassLoader correctly.
@@ -29,8 +30,8 @@
return getParent().loadClass(ContextLoadedAction.class.getName());
}
else if ("TestContextClassLoader-knows-where-to-find-ContextLoadedExceptionAction".equals(name)) {
- return getParent().loadClass(ContextLoadedExceptionAction.class.getName());
- }
+ return getParent().loadClass(ContextLoadedExceptionAction.class.getName());
+ }
return null;
}
}
@@ -44,28 +45,64 @@
originalClassLoader = Thread.currentThread().getContextClassLoader();
}
- /**
- * test using the context class loader for jbpm. Setting an own context class loader,
- * so we know if it was used.
- *
- * Classloading hierarchy should be
- * ProcessClassloader -> TestContextClassLoader -> Thread.currentContextClassLoader
- */
+ public static class DefaultLoadedAction implements ActionHandler {
+
+ public void execute(ExecutionContext executionContext) throws Exception {
+ ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
+ assertSame(ProcessClassLoader.class, contextClassLoader.getClass());
+
+ // verify that the default uses the jbpm-lib-classloader
+ assertSame(ClassLoaderUtil.class.getClassLoader(), contextClassLoader.getParent());
+
+ contextLoadedActionInvocations++;
+ }
+ }
+
+ /** DOES NOT configure usage of the context classloader. So this tests the default (backwards compatible) behaviour.
+ * so the classloading hierarchy of DefaultLoadedAction should be
+ * ProcessClassloader -> jbpm-lib classloader */
+ public void testDefaultClassLoader() {
+ ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
+ "<process-definition>" +
+ " <start-state name='start'>" +
+ " <transition to='state'>" +
+ " <action class='org.jbpm.jpdl.par.ProcessClassLoaderTest$DefaultLoadedAction' />" +
+ " </transition>" +
+ " </start-state>" +
+ " <state name='state'>" +
+ " <transition to='end'/>" +
+ " </state>" +
+ "</process-definition>"
+ );
+
+ // create the process instance
+ ProcessInstance processInstance = new ProcessInstance(processDefinition);
+ processInstance.signal();
+
+ assertEquals(1, contextLoadedActionInvocations);
+ }
+
+
public static class ContextLoadedAction implements ActionHandler {
- public void execute(ExecutionContext executionContext) throws Exception {
- ClassLoader processClassLoader = Thread.currentThread().getContextClassLoader();
- assertSame(ProcessClassLoader.class, processClassLoader.getClass());
-
- ClassLoader testContextClassLoader = processClassLoader.getParent();
- assertSame(TestContextClassLoader.class, testContextClassLoader.getClass());
-
- assertSame(originalClassLoader, testContextClassLoader.getParent());
-
- contextLoadedActionInvocations++;
- }
+
+ public void execute(ExecutionContext executionContext) throws Exception {
+ ClassLoader processClassLoader = Thread.currentThread().getContextClassLoader();
+ assertSame(ProcessClassLoader.class, processClassLoader.getClass());
+
+ ClassLoader testContextClassLoader = processClassLoader.getParent();
+ assertSame(TestContextClassLoader.class, testContextClassLoader.getClass());
+
+ assertSame(originalClassLoader, testContextClassLoader.getParent());
+
+ contextLoadedActionInvocations++;
+ }
}
+
+ /** configures usage of the context classloader
+ * so the classloading hierarchy of ContextLoadedAction should be
+ * ProcessClassloader -> TestContextClassLoader -> Thread.currentContextClassLoader */
public void testContextClassLoader() {
-
+
JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseXmlString(
"<jbpm-configuration>" +
" <string name='jbpm.classLoader' value='context' />" +
@@ -87,7 +124,6 @@
" <state name='state'>" +
" <transition to='end'/>" +
" </state>" +
- " <end-state name='end'/>" +
"</process-definition>"
);
@@ -103,60 +139,7 @@
jbpmContext.close();
}
}
-
- /**
- * a second test use the default configuration and verify the
- * classloader hierarchy inside of the action. The action class should
- * be referenced properly. No test context classloader should be installed.
- * The hierarchy in the action should be:
- * ProcessClassLoader ---> ClassLoader.getSystemClassLoader()
- */
- public static class DefaultLoadedAction implements ActionHandler {
- public void execute(ExecutionContext executionContext) throws Exception {
- ClassLoader processClassLoader = Thread.currentThread()
- .getContextClassLoader();
- assertSame(ProcessClassLoader.class, processClassLoader.getClass());
- assertSame(originalClassLoader, processClassLoader.getParent());
- assertSame(ClassLoader.getSystemClassLoader(), processClassLoader.getParent());
-
- contextLoadedActionInvocations++;
- }
- }
- public void testDefaultClassLoader() {
- JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseXmlString(
- "<jbpm-configuration>" +
- " <string name='jbpm.classLoader' value='jbpm' />" +
- "</jbpm-configuration>"
- );
-
- JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
- try {
- ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
- "<process-definition>" +
- " <start-state name='start'>" +
- " <transition to='state'>" +
- " <action class='org.jbpm.jpdl.par.ProcessClassLoaderTest$DefaultLoadedAction' />" +
- " </transition>" +
- " </start-state>" +
- " <state name='state'>" +
- " <transition to='end'/>" +
- " </state>" +
- " <end-state name='end'/>" +
- "</process-definition>"
- );
-
- // create the process instance
- ProcessInstance processInstance = new ProcessInstance(processDefinition);
- processInstance.signal();
-
- assertEquals(1, contextLoadedActionInvocations);
- } finally {
- Thread.currentThread().setContextClassLoader(originalClassLoader);
- jbpmContext.close();
- }
- }
-
/**
* a third test should set the testcontextClassLoader in the test and then
* let the action throw an exception. Then it should be verified that the
@@ -164,58 +147,57 @@
* from a copy of the testContextClassLoader
*/
public static class ContextLoadedExceptionAction implements ActionHandler {
- public void execute(ExecutionContext executionContext) throws Exception {
- ClassLoader processClassLoader = Thread.currentThread().getContextClassLoader();
- assertSame(ProcessClassLoader.class, processClassLoader.getClass());
-
- ClassLoader testContextClassLoader = processClassLoader.getParent();
- assertSame(TestContextClassLoader.class, testContextClassLoader.getClass());
-
- assertSame(originalClassLoader, testContextClassLoader.getParent());
-
- contextLoadedActionInvocations++;
-
- throw new Exception("simulate exception");
- }
+ public void execute(ExecutionContext executionContext) throws Exception {
+ ClassLoader processClassLoader = Thread.currentThread().getContextClassLoader();
+ assertSame(ProcessClassLoader.class, processClassLoader.getClass());
+
+ ClassLoader testContextClassLoader = processClassLoader.getParent();
+ assertSame(TestContextClassLoader.class, testContextClassLoader.getClass());
+
+ assertSame(originalClassLoader, testContextClassLoader.getParent());
+
+ contextLoadedActionInvocations++;
+
+ throw new Exception("simulate exception");
+ }
}
public void testContextClassLoaderException() {
- JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseXmlString(
- "<jbpm-configuration>" +
- " <string name='jbpm.classLoader' value='context' />" +
- "</jbpm-configuration>"
- );
-
- JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
- TestContextClassLoader testContextClassLoader = new TestContextClassLoader(originalClassLoader);
- try {
- Thread.currentThread().setContextClassLoader(testContextClassLoader);
-
- ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
- "<process-definition>" +
- " <start-state name='start'>" +
- " <transition to='state'>" +
- " <action class='TestContextClassLoader-knows-where-to-find-ContextLoadedExceptionAction' />" +
- " </transition>" +
- " </start-state>" +
- " <state name='state'>" +
- " <transition to='end'/>" +
- " </state>" +
- " <end-state name='end'/>" +
- "</process-definition>"
- );
-
- // create the process instance
- ProcessInstance processInstance = new ProcessInstance(processDefinition);
- processInstance.signal();
-
- } catch(Exception ex) {
- assertEquals(1, contextLoadedActionInvocations);
- assertEquals("simulate exception", ex.getMessage());
- assertSame(testContextClassLoader, Thread.currentThread().getContextClassLoader());
-
- } finally {
- Thread.currentThread().setContextClassLoader(originalClassLoader);
- jbpmContext.close();
- }
- }
+ JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseXmlString(
+ "<jbpm-configuration>" +
+ " <string name='jbpm.classLoader' value='context' />" +
+ "</jbpm-configuration>"
+ );
+
+ JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
+ TestContextClassLoader testContextClassLoader = new TestContextClassLoader(originalClassLoader);
+ try {
+ Thread.currentThread().setContextClassLoader(testContextClassLoader);
+
+ ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
+ "<process-definition>" +
+ " <start-state name='start'>" +
+ " <transition to='state'>" +
+ " <action class='TestContextClassLoader-knows-where-to-find-ContextLoadedExceptionAction' />" +
+ " </transition>" +
+ " </start-state>" +
+ " <state name='state'>" +
+ " <transition to='end'/>" +
+ " </state>" +
+ "</process-definition>"
+ );
+
+ // create the process instance
+ ProcessInstance processInstance = new ProcessInstance(processDefinition);
+ processInstance.signal();
+
+ } catch(Exception ex) {
+ assertEquals(1, contextLoadedActionInvocations);
+ assertEquals("simulate exception", ex.getMessage());
+ assertSame(testContextClassLoader, Thread.currentThread().getContextClassLoader());
+
+ } finally {
+ Thread.currentThread().setContextClassLoader(originalClassLoader);
+ jbpmContext.close();
+ }
+ }
}
Deleted: jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessLoadedActionHandler.java
===================================================================
--- jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessLoadedActionHandler.java 2008-10-27 15:53:40 UTC (rev 2628)
+++ jbpm3/trunk/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessLoadedActionHandler.java 2008-10-27 16:03:08 UTC (rev 2629)
@@ -1,41 +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.par;
-
-import org.jbpm.graph.def.ActionHandler;
-import org.jbpm.graph.exe.ExecutionContext;
-
-public class ProcessLoadedActionHandler implements ActionHandler {
-
- private static final long serialVersionUID = 1L;
-
- public void execute(ExecutionContext executionContext) throws Exception {
- // notify the ProcessArchiveClassLoadingTest that this
- // class has been executed
- ProcessArchiveClassLoadingDbTest.isLoadedActionHandlerExecuted = true;
-
- // create new action without specifying classloader
- // should use the ProcessClassLoader specified as ContextClassLoader
- // this can be verified later on
- new NotInParAction().execute(executionContext);
- }
-}
Deleted: jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/archiveresource.txt
===================================================================
--- jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/archiveresource.txt 2008-10-27 15:53:40 UTC (rev 2628)
+++ jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/archiveresource.txt 2008-10-27 16:03:08 UTC (rev 2629)
@@ -1 +0,0 @@
-the archive resource content
Added: jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/archiveresource.txt
===================================================================
--- jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/archiveresource.txt (rev 0)
+++ jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/archiveresource.txt 2008-10-27 16:03:08 UTC (rev 2629)
@@ -0,0 +1 @@
+the archive resource content
Property changes on: jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/archiveresource.txt
___________________________________________________________________
Name: svn:mergeinfo
+
Deleted: jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classloadingprocess.xml
===================================================================
--- jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classloadingprocess.xml 2008-10-27 15:53:40 UTC (rev 2628)
+++ jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classloadingprocess.xml 2008-10-27 16:03:08 UTC (rev 2629)
@@ -1,8 +0,0 @@
-<process-definition name="the deployable process">
- <start-state>
- <transition to="end">
- <action class="org.jbpm.jpdl.par.ProcessLoadedActionHandler" />
- </transition>
- </start-state>
- <end-state name="end" />
-</process-definition>
Deleted: jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classresource.txt
===================================================================
--- jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classresource.txt 2008-10-27 15:53:40 UTC (rev 2628)
+++ jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classresource.txt 2008-10-27 16:03:08 UTC (rev 2629)
@@ -1 +0,0 @@
-the class resource content
Added: jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classresource.txt
===================================================================
--- jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classresource.txt (rev 0)
+++ jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classresource.txt 2008-10-27 16:03:08 UTC (rev 2629)
@@ -0,0 +1 @@
+the class resource content
Property changes on: jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/classresource.txt
___________________________________________________________________
Name: svn:mergeinfo
+
Added: jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/instantiateprocess.xml
===================================================================
--- jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/instantiateprocess.xml (rev 0)
+++ jbpm3/trunk/modules/core/src/test/resources/org/jbpm/jpdl/par/instantiateprocess.xml 2008-10-27 16:03:08 UTC (rev 2629)
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<process-definition name="instantiateprocess">
+
+ <start-state name="start">
+ <transition to="end">
+ <action class="org.jbpm.jpdl.par.InstantiateAction" />
+ </transition>
+ </start-state>
+
+ <end-state name="end" />
+
+</process-definition>
\ No newline at end of file
More information about the jbpm-commits
mailing list