[jbpm-commits] JBoss JBPM SVN: r6230 - jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/command and 83 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Mar 18 16:29:53 EDT 2010


Author: alex.guizar at jboss.com
Date: 2010-03-18 16:29:41 -0400 (Thu, 18 Mar 2010)
New Revision: 6230

Added:
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/JbpmConfigurationTestHelper.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm1135/.gpd.timerprocess.xml
Removed:
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmConfigurationTestHelper.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/db/
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm.test.cfg.xml
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/resources/ehcache.xml
Modified:
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmConfiguration.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmContext.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/command/GetTaskListCommand.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/command/StartProcessInstanceCommand.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/context/def/Access.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/context/exe/TokenVariableMap.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/action/Script.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/EventCallback.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/ProcessDefinition.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/SuperState.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/exe/Token.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Decision.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Fork.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/InterleaveEnd.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/InterleaveStart.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Join.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/ProcessState.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/StartState.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/TaskNode.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/BeanInstantiator.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/Delegation.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/FieldInstantiator.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/job/executor/JobExecutor.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/el/parser/ELParserTokenManager.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/par/ProcessArchive.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/xml/JpdlXmlReader.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/xml/ProblemListener.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/mail/Mail.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/PersistenceService.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceService.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/Services.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/CascadeSaveOperation.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/HibernateSaveOperation.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/SaveLogsOperation.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/taskmgmt/exe/TaskInstance.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/taskmgmt/exe/TaskMgmtInstance.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/util/Semaphore.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/resources/hibernate.common.xml
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/SerializabilityTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/ChangeProcessInstanceVersionCommandTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/ProcessInstanceCommandTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/TokenCommandTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/context/exe/VariableQueryDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/context/exe/VariableScopingTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/DeleteProcessInstanceDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/GraphSessionDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/TaskMgmtSessionDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/def/MultipleProcessDefinitionEventsDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/def/NodeDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/BusinessKeyDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/NodeActionTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/ProcessInstanceDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/RuntimeActionsTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SubProcessCancellationTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SuperStateActionExecutionDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SuspendAndResumeDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/TokenDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/JoinDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/JpdlDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/TaskNotificationDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/BeanInstantiatorTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/FieldInstantiatorTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/UserCodeInterceptorTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1071/JBPM1071Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1072/JBPM1072Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1106/JBPM1106Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1135/JBPM1135Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1452/JBPM1452Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1775/JBPM1775Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1921/JBPM1921Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2017/JBPM2017Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2036/JBPM2036Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2263/JBPM2263Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2574/JBPM2574Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2603/JBPM2603Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2630/JBPM2630Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2637/JBPM2637Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2691/JBPM2691Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2778/JBPM2778Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2812/JBPM2812Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2828/JBPM2828Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/job/executor/JobExecutorDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/exe/AvailableTransitionsDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveClassLoadingDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ResourceAction.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/patterns/Wfp13MiWithoutSynchronizationTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/patterns/Wfp18InterleavedParallelRoutingTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/logging/exe/LoggingConfigDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mail/MailTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mail/TaskMailTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mock/Jdbc.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/perf/SimplePerformanceTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/persistence/db/PersistenceConfigurationDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scenarios/TwoSubProcessesInOneTransactionDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/seam/JobExecutorCustomizationTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/svc/ServicesTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/BlockingTaskDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/EndTasksDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/SwimlaneDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/SwimlaneTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskAssignmentDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskExecutionTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskVariableAccessDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskVariablesDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm1135/timerprocess.xml
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm2094/processdefinition.xml
   jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm2787/processdefinition.xml
   jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/java/org/jbpm/examples/mail/MailTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Entity.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Group.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Membership.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/User.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/hibernate/IdentitySession.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/IdentityDbTestCase.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/MembershipTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/assignment/ExpressionAssignmentHandlerTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/hibernate/GroupDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/hibernate/UserDbTest.java
   jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/main/java/org/jbpm/sim/exe/JbpmSimulationExperimentRunner.java
   jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/main/java/org/jbpm/sim/report/jasper/AbstractBaseJasperReport.java
   jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/test/java/org/jbpm/sim/VariableSourceAndFilterTest.java
   projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/CancelActionListener.java
   projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/GetDiagramInfoActionListener.java
   projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/ListTasksForProcessInstanceActionListener.java
   projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/StartProcessActionListener.java
   projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/identity/action/CreateGroupActionListener.java
   projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/identity/action/CreateUserActionListener.java
Log:
JBPM-2787: delete process definitions on test case teardown automatically
wait for lock monitor thread in jobExecutor.stopAndJoin

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmConfiguration.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmConfiguration.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmConfiguration.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -65,39 +65,46 @@
  * </p>
  * <ul>
  * <li>from a resource (by default <code>jbpm.cfg.xml</code> is used):
+ * 
  * <pre>
  * JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
  * </pre>
+ * 
  * or
+ * 
  * <pre>
  * String myXmlResource = &quot;...&quot;;
  * JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance(myXmlResource);
  * </pre>
+ * 
  * </li>
+ * <li>from an XML string:
  * 
- * <li>from an XML string:
  * <pre>
  * JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseXmlString(
  *   &quot;&lt;jbpm-configuration&gt;&quot; +
  *   ...
  *   &quot;&lt;/jbpm-configuration&gt;&quot;);
  * </pre>
+ * 
  * </li>
- * 
  * <li>By specifying a custom implementation of an object factory. This can be
  * used to specify a JbpmConfiguration in other bean-style notations such as
  * used by JBoss Microcontainer or Spring.
+ * 
  * <pre>
  * ObjectFactory of = new &lt;i&gt;MyCustomObjectFactory&lt;/i&gt;();
  * JbpmConfiguration.Configs.setDefaultObjectFactory(of);
  * JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
  * </pre>
+ * 
  * </li>
  * </ul>
  * <p>
  * JbpmConfigurations can be configured using a spring-like XML notation (in
  * relax ng compact notation):
  * </p>
+ * 
  * <pre>
  * datatypes xs = &quot;http://www.w3.org/2001/XMLSchema-datatypes&quot;
  * 
@@ -225,6 +232,7 @@
  * false  = element false {}
  * null   = element null {}
  * </pre>
+ * 
  * </p>
  */
 public class JbpmConfiguration implements Serializable {
@@ -233,16 +241,15 @@
 
   static ObjectFactory defaultObjectFactory;
   static final Map instances = new HashMap();
-  static final ThreadLocal jbpmConfigurationStacks = new StackThreadLocal();
+  private static final ThreadLocal jbpmConfigurationStacks = new StackThreadLocal();
 
-  private final ObjectFactory objectFactory;
+  final ObjectFactory objectFactory;
   private final String resourceName;
   private JobExecutor jobExecutor;
   private boolean isClosed;
   private final ThreadLocal jbpmContextStacks = new StackThreadLocal();
 
   static class StackThreadLocal extends ThreadLocal {
-
     protected Object initialValue() {
       return new ArrayList();
     }
@@ -309,8 +316,7 @@
     log.debug("loading defaults in jbpm configuration");
     ObjectFactoryParser objectFactoryParser = new ObjectFactoryParser();
     ObjectFactoryImpl objectFactoryImpl = new ObjectFactoryImpl();
-    objectFactoryParser.parseElementsFromResource("org/jbpm/default.jbpm.cfg.xml",
-      objectFactoryImpl);
+    objectFactoryParser.parseElementsFromResource("org/jbpm/default.jbpm.cfg.xml", objectFactoryImpl);
 
     if (inputStream != null) {
       log.debug("loading specific configuration...");
@@ -363,10 +369,8 @@
     if (log.isDebugEnabled()) {
       log.debug("creating jbpm configuration from resource: " + resource);
     }
-    InputStream inputStream = null;
-    if (resource != null) {
-      inputStream = ClassLoaderUtil.getStream(resource, false);
-    }
+    InputStream inputStream = resource != null ? ClassLoaderUtil.getStream(resource, false)
+      : null;
     ObjectFactory objectFactory = parseObjectFactory(inputStream);
     return createJbpmConfiguration(objectFactory);
   }
@@ -379,8 +383,9 @@
     ensureOpen();
 
     JbpmContext jbpmContext = (JbpmContext) objectFactory.createObject(name);
+    jbpmContext.name = name;
     jbpmContext.jbpmConfiguration = this;
-    jbpmContextCreated(jbpmContext);
+    pushJbpmContext(jbpmContext);
     return jbpmContext;
   }
 
@@ -491,8 +496,7 @@
   }
 
   private DbPersistenceServiceFactory getPersistenceServiceFactory(String jbpmContextName) {
-    return (DbPersistenceServiceFactory) getServiceFactory(Services.SERVICENAME_PERSISTENCE,
-      jbpmContextName);
+    return (DbPersistenceServiceFactory) getServiceFactory(Services.SERVICENAME_PERSISTENCE, jbpmContextName);
   }
 
   public boolean isClosed() {
@@ -554,7 +558,7 @@
     return currentJbpmConfiguration;
   }
 
-  static List getJbpmConfigurationStack() {
+  private static List getJbpmConfigurationStack() {
     return (List) jbpmConfigurationStacks.get();
   }
 
@@ -578,20 +582,22 @@
     }
   }
 
-  synchronized void pushJbpmConfiguration() {
+  private void pushJbpmConfiguration() {
     getJbpmConfigurationStack().add(this);
   }
 
-  synchronized void popJbpmConfiguration() {
+  private void popJbpmConfiguration() {
     List stack = getJbpmConfigurationStack();
     int index = stack.lastIndexOf(this);
     if (index == -1) {
-      log.warn(this + " was not found in thread-local stack;"
+      log.warn(this
+        + " was not found in thread-local stack;"
         + "do not access JbpmContext instances from multiple threads");
     }
     else {
       if (index != stack.size() - 1) {
-        log.warn(this + " was not closed in reverse creation order;"
+        log.warn(this
+          + " was not closed in reverse creation order;"
           + " check your try-finally clauses around JbpmContext blocks");
       }
       // prevent configuration from remaining in the stack, no matter what
@@ -610,11 +616,12 @@
     return currentJbpmContext;
   }
 
-  List getJbpmContextStack() {
+  private List getJbpmContextStack() {
     return (List) jbpmContextStacks.get();
   }
 
   void pushJbpmContext(JbpmContext jbpmContext) {
+    pushJbpmConfiguration();
     getJbpmContextStack().add(jbpmContext);
   }
 
@@ -622,26 +629,19 @@
     List stack = getJbpmContextStack();
     int index = stack.lastIndexOf(jbpmContext);
     if (index == -1) {
-      log.warn(jbpmContext + " was not found in thread-local stack;"
+      log.warn(jbpmContext
+        + " was not found in thread-local stack;"
         + " do not access JbpmContext instances from multiple threads");
     }
     else {
       if (index != stack.size() - 1) {
-        log.warn(jbpmContext + " was not closed in reverse creation order;"
+        log.warn(jbpmContext
+          + " was not closed in reverse creation order;"
           + " check your try-finally clauses around JbpmContext blocks");
       }
       // prevent context from remaining in the stack, no matter what
       stack.remove(index);
     }
-  }
-
-  void jbpmContextCreated(JbpmContext jbpmContext) {
-    pushJbpmConfiguration();
-    pushJbpmContext(jbpmContext);
-  }
-
-  void jbpmContextClosed(JbpmContext jbpmContext) {
-    popJbpmContext(jbpmContext);
     popJbpmConfiguration();
   }
 

Deleted: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmConfigurationTestHelper.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmConfigurationTestHelper.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmConfigurationTestHelper.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -1,29 +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;
-
-public class JbpmConfigurationTestHelper {
-
-  public static JbpmConfiguration getCurrentJbpmConfiguration() {
-    return JbpmConfiguration.getCurrentJbpmConfiguration();
-  }
-}

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmContext.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmContext.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmContext.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -52,7 +52,8 @@
 /**
  * is used to surround persistent operations to processes.
  * <p>
- * Obtain JbpmContext's via {@link org.jbpm.JbpmConfiguration#createJbpmContext()} and put it in a
+ * Obtain JbpmContext's via
+ * {@link org.jbpm.JbpmConfiguration#createJbpmContext()} and put it in a
  * try-finally block like this:
  * </p>
  * 
@@ -71,30 +72,33 @@
  * }
  * </pre>
  * <p>
- * A JbpmContext separates jBPM from a sprecific environment. For each service that jBPM uses, there
- * is an interface specified in the jBPM codebase. jBPM also includes implementations that implement
- * these services by using services in a specific environment. e.g. a hibernate session, a JMS
- * asynchronous messaging system, ...
+ * A JbpmContext separates jBPM from a sprecific environment. For each service
+ * that jBPM uses, there is an interface specified in the jBPM codebase. jBPM
+ * also includes implementations that implement these services by using services
+ * in a specific environment. e.g. a hibernate session, a JMS asynchronous
+ * messaging system, ...
  * </p>
  * <p>
- * A JbpmContext can demarcate a transaction. When a PersistenceService is fetched from the
- * JbpmContext, the default implementation for the persistence service will create a hibernate
- * session and start a transaction. So that transactions can be configured in the hibernate
- * configuration.
+ * A JbpmContext can demarcate a transaction. When a PersistenceService is
+ * fetched from the JbpmContext, the default implementation for the persistence
+ * service will create a hibernate session and start a transaction. So that
+ * transactions can be configured in the hibernate configuration.
  * </p>
  * <p>
- * A JbpmContext allows the user to overwrite (or make complete) the configuration by injecting
- * objects programmatically. like e.g. a hibernate session factory or a hibernate session or any
- * other resource that can be fetched or created from the configuration.
+ * A JbpmContext allows the user to overwrite (or make complete) the
+ * configuration by injecting objects programmatically. like e.g. a hibernate
+ * session factory or a hibernate session or any other resource that can be
+ * fetched or created from the configuration.
  * </p>
  * <p>
- * Last but not least, JbpmContext provides convenient access to the most common operations such as
- * {@link #getTaskList(String)}, {@link #newProcessInstance(String)}
- * {@link #loadTaskInstanceForUpdate(long)} and {@link #save(ProcessInstance)}.
+ * Last but not least, JbpmContext provides convenient access to the most common
+ * operations such as {@link #getTaskList(String)},
+ * {@link #newProcessInstance(String)} {@link #loadTaskInstanceForUpdate(long)}
+ * and {@link #save(ProcessInstance)}.
  * </p>
  * <p>
- * All the <code>...ForUpdate(...)</code> methods will automatically save the loaded objects at
- * <code>jbpmContext.close();</code>
+ * All the <code>...ForUpdate(...)</code> methods will automatically save the
+ * loaded objects at <code>jbpmContext.close();</code>
  * </p>
  */
 public class JbpmContext implements Serializable {
@@ -103,16 +107,17 @@
 
   public static final String DEFAULT_JBPM_CONTEXT_NAME = "default.jbpm.context";
 
+  String name;
   ObjectFactory objectFactory;
   Services services;
+  JbpmConfiguration jbpmConfiguration;
   List autoSaveProcessInstances;
-  JbpmConfiguration jbpmConfiguration;
 
   /**
    * normally, JbpmContext object are created via a {@link JbpmConfiguration}.
    */
   public JbpmContext(Services services, ObjectFactory objectFactory) {
-    log.debug("creating " + toString());
+    log.debug("creating " + this);
     this.services = services;
     this.objectFactory = objectFactory;
   }
@@ -121,7 +126,7 @@
    * make sure you close your JbpmContext in a finally block.
    */
   public void close() {
-    log.debug("closing jbpmContext " + toString());
+    log.debug("closing " + this);
     try {
       if (services != null) {
         try {
@@ -133,18 +138,20 @@
       }
     }
     finally {
-      if (jbpmConfiguration != null) {
-        jbpmConfiguration.jbpmContextClosed(this);
-      }
+      if (jbpmConfiguration != null) jbpmConfiguration.popJbpmContext(this);
     }
   }
 
   /**
-   * obtains the current JbpmContext from a thread local. The current contexts are maintained in
-   * a stack so that you can do nested context operations for different jbpm configurations.
+   * obtains the current JbpmContext from a thread local. The current contexts
+   * are maintained in a stack so that you can do nested context operations for
+   * different jbpm configurations.
    * 
-   * <p>it is <strong>strongly recommended</strong> that client code invokes
-   *  {@link JbpmConfiguration#getCurrentJbpmContext()} in preference to this method.</p>
+   * <p>
+   * it is <strong>strongly recommended</strong> that client code invokes
+   * {@link JbpmConfiguration#getCurrentJbpmContext()} in preference to this
+   * method.
+   * </p>
    */
   public static JbpmContext getCurrentJbpmContext() {
     JbpmContext currentJbpmContext = null;
@@ -158,17 +165,18 @@
   // convenience methods //////////////////////////////////////////////////////
 
   /**
-   * deploys a process definition. For parsing process definitions from archives, see the static
-   * parseXxx methods on {@link ProcessDefinition}.
+   * deploys a process definition. For parsing process definitions from
+   * archives, see the static parseXxx methods on {@link ProcessDefinition}.
    */
   public void deployProcessDefinition(ProcessDefinition processDefinition) {
     getGraphSession().deployProcessDefinition(processDefinition);
   }
 
   /**
-   * fetches the tasklist for the current authenticated actor. With the default configured
-   * authentication service, you can set the authenticated user with {@link #setActorId(String)},
-   * then all the subsequent operations will be performed on behalf of that actor.
+   * fetches the tasklist for the current authenticated actor. With the default
+   * configured authentication service, you can set the authenticated user with
+   * {@link #setActorId(String)}, then all the subsequent operations will be
+   * performed on behalf of that actor.
    */
   public List getTaskList() {
     String actorId = getActorId();
@@ -183,12 +191,14 @@
   }
 
   /**
-   * fetches all the task instances for which at least one of the given actorIds is a candidate
-   * (pooled actor). Typically, for an actor, his/her personal actorId plus all the actorIds
-   * representing the groups that person belongs to form the actorIds. Then the user interface
-   * should show only the option to take these tasks to the actor's personal task list (with
-   * {@link TaskInstance#setActorId(String)}). Only task instances that are assigned to the actor
-   * directly should be offered the possibility for performing the actual task.
+   * fetches all the task instances for which at least one of the given actorIds
+   * is a candidate (pooled actor). Typically, for an actor, his/her personal
+   * actorId plus all the actorIds representing the groups that person belongs
+   * to form the actorIds. Then the user interface should show only the option
+   * to take these tasks to the actor's personal task list (with
+   * {@link TaskInstance#setActorId(String)}). Only task instances that are
+   * assigned to the actor directly should be offered the possibility for
+   * performing the actual task.
    */
   public List getGroupTaskList(List actorIds) {
     return getTaskMgmtSession().findPooledTaskInstances(actorIds);
@@ -219,9 +229,10 @@
   }
 
   /**
-   * loads a task instance from the db and registers it for auto-save. The loaded task instance will
-   * be save automatically at the {@link #close()}. This is a convenience method in case you plan to
-   * do update operations on this task instance.
+   * loads a task instance from the db and registers it for auto-save. The
+   * loaded task instance will be save automatically at the {@link #close()}.
+   * This is a convenience method in case you plan to do update operations on
+   * this task instance.
    * 
    * @throws JbpmException in case no such task instance exists
    * @see #loadTaskInstance(long)
@@ -235,9 +246,10 @@
   }
 
   /**
-   * gets a task instance from the db and registers it for auto-save. The loaded task instance will
-   * be save automatically at the {@link #close()}. This is a convenience method in case you plan to
-   * do update operations on this task instance.
+   * gets a task instance from the db and registers it for auto-save. The loaded
+   * task instance will be save automatically at the {@link #close()}. This is a
+   * convenience method in case you plan to do update operations on this task
+   * instance.
    * 
    * @return the task instance or null in case no such task instance exists.
    * @see #loadTaskInstance(long)
@@ -277,9 +289,10 @@
   }
 
   /**
-   * loads a token from the db and registers it for auto-save. The loaded token will be
-   * {@link #save(Token)}d automatically at the {@link #close()}. This is a convenience method in
-   * case you plan to do update operations on this token.
+   * loads a token from the db and registers it for auto-save. The loaded token
+   * will be {@link #save(Token)}d automatically at the {@link #close()}. This
+   * is a convenience method in case you plan to do update operations on this
+   * token.
    * 
    * @throws JbpmException in case no such token exists.
    * @see #getToken(long)
@@ -293,9 +306,10 @@
   }
 
   /**
-   * get a token from the db and registers it for auto-save. The loaded token will be
-   * {@link #save(Token)}d automatically at the {@link #close()}. This is a convenience method in
-   * case you plan to do update operations on this token.
+   * get a token from the db and registers it for auto-save. The loaded token
+   * will be {@link #save(Token)}d automatically at the {@link #close()}. This
+   * is a convenience method in case you plan to do update operations on this
+   * token.
    * 
    * @return the token or null in case no such token exists.
    * @see #getToken(long)
@@ -312,8 +326,8 @@
 
   /**
    * loads a process instance from the db. Consider using
-   * {@link #loadProcessInstanceForUpdate(long)} if you plan to perform an update operation on the
-   * process instance.
+   * {@link #loadProcessInstanceForUpdate(long)} if you plan to perform an
+   * update operation on the process instance.
    * 
    * @throws JbpmException in case no such process instance exists.
    * @see #getProcessInstance(long)
@@ -325,8 +339,9 @@
   }
 
   /**
-   * gets a process instance from the db. Consider using {@link #loadProcessInstanceForUpdate(long)}
-   * if you plan to perform an update operation on the process instance.
+   * gets a process instance from the db. Consider using
+   * {@link #loadProcessInstanceForUpdate(long)} if you plan to perform an
+   * update operation on the process instance.
    * 
    * @return the token or null in case no such token exists.
    * @see #loadProcessInstance(long)
@@ -338,9 +353,10 @@
   }
 
   /**
-   * loads a process instances from the db and registers it for auto-save. The loaded process
-   * instance will be {@link #save(ProcessInstance)}d automatically at the {@link #close()}. This is
-   * a convenience method in case you plan to do update operations on this process instance.
+   * loads a process instances from the db and registers it for auto-save. The
+   * loaded process instance will be {@link #save(ProcessInstance)}d
+   * automatically at the {@link #close()}. This is a convenience method in case
+   * you plan to do update operations on this process instance.
    * 
    * @throws JbpmException in case no such process instance exists.
    * @see #loadProcessInstance(long)
@@ -354,9 +370,10 @@
   }
 
   /**
-   * gets a process instances from the db and registers it for auto-save. The loaded process
-   * instance will be {@link #save(ProcessInstance)}d automatically at the {@link #close()}. This is
-   * a convenience method in case you plan to do update operations on this process instance.
+   * gets a process instances from the db and registers it for auto-save. The
+   * loaded process instance will be {@link #save(ProcessInstance)}d
+   * automatically at the {@link #close()}. This is a convenience method in case
+   * you plan to do update operations on this process instance.
    * 
    * @return the token or null in case no such token exists.
    * @see #loadProcessInstance(long)
@@ -372,25 +389,28 @@
   }
 
   /**
-   * returns the process instance with the given key or null if no such instance exists.
+   * returns the process instance with the given key or null if no such instance
+   * exists.
    */
   public ProcessInstance getProcessInstance(ProcessDefinition processDefinition, String key) {
     return getGraphSession().getProcessInstance(processDefinition, key);
   }
 
   /**
-   * returns the process instance with the given key or throws an exception if no such instance
-   * exists.
+   * returns the process instance with the given key or throws an exception if
+   * no such instance exists.
    */
   public ProcessInstance loadProcessInstance(ProcessDefinition processDefinition, String key) {
     return getGraphSession().loadProcessInstance(processDefinition, key);
   }
 
   /**
-   * returns the process instance with the given key or null if no such instance exists. Upon close
-   * of this jbpmContext, the fetched process instance will be automatically saved.
+   * returns the process instance with the given key or null if no such instance
+   * exists. Upon close of this jbpmContext, the fetched process instance will
+   * be automatically saved.
    */
-  public ProcessInstance getProcessInstanceForUpdate(ProcessDefinition processDefinition, String key) {
+  public ProcessInstance getProcessInstanceForUpdate(ProcessDefinition processDefinition,
+    String key) {
     ProcessInstance processInstance = getGraphSession().getProcessInstance(processDefinition, key);
     if (processInstance != null) {
       addAutoSaveProcessInstance(processInstance);
@@ -399,12 +419,12 @@
   }
 
   /**
-   * returns the process instance with the given key or throws an exception if no such instance
-   * exists. Upon close of this jbpmContext, the fetched process instance will be automatically
-   * saved.
+   * returns the process instance with the given key or throws an exception if
+   * no such instance exists. Upon close of this jbpmContext, the fetched
+   * process instance will be automatically saved.
    */
   public ProcessInstance loadProcessInstanceForUpdate(ProcessDefinition processDefinition,
-      String key) {
+    String key) {
     ProcessInstance processInstance = getGraphSession().loadProcessInstance(processDefinition, key);
     if (processInstance != null) {
       addAutoSaveProcessInstance(processInstance);
@@ -413,10 +433,11 @@
   }
 
   /**
-   * creates a new process instance for the latest version of the process definition with the given
-   * name.
+   * creates a new process instance for the latest version of the process
+   * definition with the given name.
    * 
-   * @throws JbpmException when no processDefinition with the given name is deployed.
+   * @throws JbpmException when no processDefinition with the given name is
+   * deployed.
    */
   public ProcessInstance newProcessInstance(String processDefinitionName) {
     ProcessDefinition processDefinition = getGraphSession().findLatestProcessDefinition(processDefinitionName);
@@ -424,10 +445,11 @@
   }
 
   /**
-   * creates a new process instance for the latest version of the process definition with the given
-   * name and registers it for auto-save.
+   * creates a new process instance for the latest version of the process
+   * definition with the given name and registers it for auto-save.
    * 
-   * @throws JbpmException when no processDefinition with the given name is deployed.
+   * @throws JbpmException when no processDefinition with the given name is
+   * deployed.
    */
   public ProcessInstance newProcessInstanceForUpdate(String processDefinitionName) {
     ProcessDefinition processDefinition = getGraphSession().findLatestProcessDefinition(processDefinitionName);
@@ -460,8 +482,8 @@
   }
 
   /**
-   * mark this transaction for rollback only in the persistence service. The {@link #close()}
-   * operation will then perform a rollback.
+   * mark this transaction for rollback only in the persistence service. The
+   * {@link #close()} operation will then perform a rollback.
    */
   public void setRollbackOnly() {
     TxService txService = (services != null ? services.getTxService() : null);
@@ -487,8 +509,8 @@
   }
 
   /**
-   * gives access to the object factory containing the configuration for creating the service
-   * factories.
+   * gives access to the object factory containing the configuration for
+   * creating the service factories.
    */
   public ObjectFactory getObjectFactory() {
     return objectFactory;
@@ -497,21 +519,23 @@
   // persistence methods //////////////////////////////////////////////////////
 
   /**
-   * gets the hibernate session factory from the default configured persistence service.
+   * gets the hibernate session factory from the default configured persistence
+   * service.
    * 
-   * @return the hibernate session factory, or <code>null</code> if a nonstandard persistence
-   *         service is configured
+   * @return the hibernate session factory, or <code>null</code> if a
+   * nonstandard persistence service is configured
    */
   public SessionFactory getSessionFactory() {
     PersistenceService persistenceService = getPersistenceService();
     return persistenceService instanceof DbPersistenceService ? ((DbPersistenceService) persistenceService).getSessionFactory()
-        : null;
+      : null;
   }
 
   /**
-   * sets the hibernate session factory into the default configured persistence service, overwriting
-   * the configured session factory (if there is one configured). if a nonstandard persistence
-   * service is configured, then this call has no effect.
+   * sets the hibernate session factory into the default configured persistence
+   * service, overwriting the configured session factory (if there is one
+   * configured). if a nonstandard persistence service is configured, then this
+   * call has no effect.
    */
   public void setSessionFactory(SessionFactory sessionFactory) {
     PersistenceService persistenceService = getPersistenceService();
@@ -524,19 +548,20 @@
   /**
    * gets the hibernate session from the default configured persistence service.
    * 
-   * @return the hibernate session, or <code>null</code> if a nonstandard persistence service is
-   *         configured.
+   * @return the hibernate session, or <code>null</code> if a nonstandard
+   * persistence service is configured.
    */
   public Session getSession() {
     PersistenceService persistenceService = getPersistenceService();
     return persistenceService instanceof DbPersistenceService ? ((DbPersistenceService) persistenceService).getSession()
-        : null;
+      : null;
   }
 
   /**
-   * sets the hibernate session into the default configured persistence service, preventing the
-   * creation of a session from the configured session factory (if there is one configured). if a
-   * nonstandard persistence service is configured, then this call has no effect.
+   * sets the hibernate session into the default configured persistence service,
+   * preventing the creation of a session from the configured session factory
+   * (if there is one configured). if a nonstandard persistence service is
+   * configured, then this call has no effect.
    */
   public void setSession(Session session) {
     PersistenceService persistenceService = getPersistenceService();
@@ -549,18 +574,19 @@
   /**
    * gets the jdbc connection from the default configured persistence service.
    * 
-   * @return the jdbc connectoin, or <code>null</code> if a nonstandard persistence service is
-   *         configured.
+   * @return the jdbc connectoin, or <code>null</code> if a nonstandard
+   * persistence service is configured.
    */
   public Connection getConnection() {
     PersistenceService persistenceService = getPersistenceService();
     return persistenceService instanceof DbPersistenceService ? ((DbPersistenceService) persistenceService).getConnection()
-        : null;
+      : null;
   }
 
   /**
-   * allows users to provide a jdbc connection to be used when the hibernate session is created. if
-   * a nonstandard persistence service is configured, then this call has no effect.
+   * allows users to provide a jdbc connection to be used when the hibernate
+   * session is created. if a nonstandard persistence service is configured,
+   * then this call has no effect.
    */
   public void setConnection(Connection connection) {
     PersistenceService persistenceService = getPersistenceService();
@@ -625,7 +651,7 @@
    * sets the currently authenticated actorId.
    */
   public void setActorId(String actorId) {
-    AuthenticationService authenticationService = (AuthenticationService) services.getAuthenticationService();
+    AuthenticationService authenticationService = services.getAuthenticationService();
     authenticationService.setActorId(actorId);
   }
 
@@ -664,4 +690,9 @@
   }
 
   private static Log log = LogFactory.getLog(JbpmContext.class);
+
+  public String toString() {
+    return "JbpmContext"
+      + (name != null ? '(' + name + ')' : '@' + Integer.toHexString(hashCode()));
+  }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/command/GetTaskListCommand.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/command/GetTaskListCommand.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/command/GetTaskListCommand.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -19,7 +19,7 @@
  * 
  * @author Bernd Ruecker (bernd.ruecker at camunda.com)
  */
-public class GetTaskListCommand extends AbstractGetObjectBaseCommand implements Command {
+public class GetTaskListCommand extends AbstractGetObjectBaseCommand {
 
   private static final long serialVersionUID = -1627380259541998349L;
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/command/StartProcessInstanceCommand.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/command/StartProcessInstanceCommand.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/command/StartProcessInstanceCommand.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -10,7 +10,7 @@
  * 
  * @author Jim Rigsbee, Tom Baeyens, Bernd Ruecker
  */
-public class StartProcessInstanceCommand extends NewProcessInstanceCommand implements Command {
+public class StartProcessInstanceCommand extends NewProcessInstanceCommand {
 
   private static final long serialVersionUID = -2428234069404269048L;
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/context/def/Access.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/context/def/Access.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/context/def/Access.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -28,20 +28,21 @@
   private static final long serialVersionUID = 1L;
 
   String access = "read,write";
-  
+
   public Access() {
   }
 
   public Access(String access) {
-    if (access!=null) {
+    if (access != null) {
       if ("".equals(access)) {
         this.access = " ";
-      } else {
+      }
+      else {
         this.access = access;
       }
     }
   }
-  
+
   public boolean isReadable() {
     return hasAccess("read");
   }
@@ -62,22 +63,23 @@
    * verifies if the given accessLiteral is included in the access text.
    */
   public boolean hasAccess(String accessLiteral) {
-    if (access==null) return false;
-    return (access.indexOf(accessLiteral.toLowerCase())!=-1);
+    if (access == null) return false;
+    return (access.indexOf(accessLiteral.toLowerCase()) != -1);
   }
-  
+
   public String toString() {
     return access;
   }
-  
+
   public boolean equals(Object object) {
     if (object instanceof Access) {
       Access other = (Access) object;
-      return (isReadable()==other.isReadable())
-             && (isWritable()==other.isWritable())
-             && (isRequired()==other.isRequired())
-             && (isLock()==other.isLock());
-    } else {
+      return isReadable() == other.isReadable()
+        && isWritable() == other.isWritable()
+        && isRequired() == other.isRequired()
+        && isLock() == other.isLock();
+    }
+    else {
       return false;
     }
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/context/exe/TokenVariableMap.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/context/exe/TokenVariableMap.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/context/exe/TokenVariableMap.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,7 +21,6 @@
  */
 package org.jbpm.context.exe;
 
-import java.io.Serializable;
 import java.util.Map;
 
 import org.jbpm.graph.exe.Token;
@@ -31,7 +30,7 @@
  * Each token has it's own map of variableInstances, thereby creating hierarchy
  * and scoping of process variableInstances.
  */
-public class TokenVariableMap extends VariableContainer implements Serializable {
+public class TokenVariableMap extends VariableContainer {
 
   private static final long serialVersionUID = 1L;
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/db/AbstractDbTestCase.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -23,18 +23,24 @@
 
 // $Id$
 
+import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.List;
 import java.util.Map;
 
 import org.hibernate.Session;
 import org.hibernate.cfg.Configuration;
 import org.hibernate.cfg.Environment;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
 
 import org.jbpm.AbstractJbpmTestCase;
 import org.jbpm.JbpmConfiguration;
 import org.jbpm.JbpmContext;
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ProcessInstance;
+import org.jbpm.job.Job;
+import org.jbpm.job.Timer;
 import org.jbpm.job.executor.JobExecutor;
 import org.jbpm.logging.log.ProcessLog;
 import org.jbpm.persistence.db.DbPersistenceServiceFactory;
@@ -55,6 +61,8 @@
 
   protected JobExecutor jobExecutor;
 
+  private List processDefinitionIds;
+
   protected void setUp() throws Exception {
     super.setUp();
     beginSessionTransaction();
@@ -72,12 +80,26 @@
   }
 
   protected void tearDown() throws Exception {
+    if (processDefinitionIds != null) deleteProcessDefinitions();
     commitAndCloseSession();
     ensureCleanDatabase();
 
     super.tearDown();
   }
 
+  private void deleteProcessDefinitions() {
+    for (Iterator i = processDefinitionIds.iterator(); i.hasNext();) {
+      newTransaction();
+      try {
+        Long processDefinitionId = (Long) i.next();
+        graphSession.deleteProcessDefinition(processDefinitionId.longValue());
+      }
+      catch (RuntimeException e) {
+        jbpmContext.setRollbackOnly();
+      }
+    }
+  }
+
   private void ensureCleanDatabase() {
     DbPersistenceServiceFactory persistenceServiceFactory =
         (DbPersistenceServiceFactory) getJbpmConfiguration().getServiceFactory("persistence");
@@ -139,7 +161,7 @@
 
   protected ProcessDefinition saveAndReload(ProcessDefinition pd) {
     graphSession.saveProcessDefinition(pd);
-    newTransaction();
+    registerForDeletion(pd);
     return graphSession.loadProcessDefinition(pd.getId());
   }
 
@@ -162,7 +184,7 @@
   }
 
   protected String getJbpmTestConfig() {
-    return "org/jbpm/db/jbpm.db.test.cfg.xml";
+    return null;
   }
 
   protected JbpmConfiguration getJbpmConfiguration() {
@@ -223,12 +245,12 @@
       }
 
       log.debug("waiting " + waitPeriod + " ms for " + currentCount
-        + " jobs to be executed");
+        + " jobs to execute");
       try {
         Thread.sleep(waitPeriod);
       }
       catch (InterruptedException e) {
-        fail("wait for jobs got interrupted");
+        fail("wait for jobs to execute got interrupted");
       }
 
       previousCount = currentCount;
@@ -252,14 +274,18 @@
   }
 
   private int getJobCount(Session session) {
-    Number jobCount = (Number) session.createQuery("select count(*) "
-        + "from org.jbpm.job.Job where retries > 0").uniqueResult();
+    Number jobCount = (Number) session.createCriteria(Job.class)
+      .add(Restrictions.gt("retries", new Integer(0)))
+      .setProjection(Projections.rowCount())
+      .uniqueResult();
     return jobCount.intValue();
   }
 
   protected int getTimerCount() {
-    Number timerCount = (Number) session.createQuery("select count(*) "
-        + "from org.jbpm.job.Timer where retries > 0").uniqueResult();
+    Number timerCount = (Number) session.createCriteria(Timer.class)
+      .add(Restrictions.gt("retries", new Integer(0)))
+      .setProjection(Projections.rowCount())
+      .uniqueResult();
     return timerCount.intValue();
   }
 
@@ -281,11 +307,23 @@
         jobExecutor.stopAndJoin();
       }
       catch (InterruptedException e) {
-        log.debug("wait for job executor to stop and join got interrupted", e);
+        fail("wait for job executor to stop got interrupted");
       }
     }
   }
 
+  protected void deployProcessDefinition(ProcessDefinition processDefinition) {
+    jbpmContext.deployProcessDefinition(processDefinition);
+    registerForDeletion(processDefinition);
+  }
+
+  private void registerForDeletion(ProcessDefinition processDefinition) {
+    // start new transaction to avoid registering an uncommitted process definition
+    newTransaction();
+    if (processDefinitionIds == null) processDefinitionIds = new ArrayList();
+    processDefinitionIds.add(new Long(processDefinition.getId()));
+  }
+
   protected void initializeMembers() {
     session = jbpmContext.getSession();
     graphSession = jbpmContext.getGraphSession();

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/action/Script.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/action/Script.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/action/Script.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -37,14 +37,13 @@
 import org.jbpm.graph.exe.ExecutionContext;
 import org.jbpm.graph.exe.Token;
 import org.jbpm.jpdl.xml.JpdlXmlReader;
-import org.jbpm.jpdl.xml.Parsable;
 
 import bsh.EvalError;
 import bsh.Interpreter;
 import bsh.ParseException;
 import bsh.TargetError;
 
-public class Script extends Action implements Parsable {
+public class Script extends Action {
 
   private static final long serialVersionUID = 1L;
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/EventCallback.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/EventCallback.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/EventCallback.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -42,7 +42,7 @@
   public static final int DEFAULT_TIMEOUT = 5 * 60 * 1000;
 
   private static final long serialVersionUID = 1L;
-  private static final Log log = LogFactory.getLog(EventCallback.class);
+  static final Log log = LogFactory.getLog(EventCallback.class);
 
   private static Map eventSemaphores = new HashMap();
 
@@ -95,7 +95,6 @@
           eventSemaphore.release();
         }
       }
-
     };
     JbpmContext.getCurrentJbpmContext().getSession().getTransaction().registerSynchronization(
         notification);
@@ -129,7 +128,7 @@
     }
   }
 
-  private static Semaphore getEventSemaphore(String event) {
+  static Semaphore getEventSemaphore(String event) {
     synchronized (eventSemaphores) {
       Semaphore semaphore = (Semaphore) eventSemaphores.get(event);
       if (semaphore == null) {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/ProcessDefinition.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/ProcessDefinition.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/ProcessDefinition.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -63,7 +63,7 @@
   protected Map definitions;
 
   // event types //////////////////////////////////////////////////////////////
-  
+
   private static final String[] EVENT_TYPES = {
     Event.EVENTTYPE_PROCESS_START, Event.EVENTTYPE_PROCESS_END, Event.EVENTTYPE_NODE_ENTER,
     Event.EVENTTYPE_NODE_LEAVE, Event.EVENTTYPE_TASK_CREATE, Event.EVENTTYPE_TASK_ASSIGN,
@@ -74,8 +74,8 @@
   };
 
   /**
-   * @deprecated arrays are mutable and thus vulnerable to external manipulation.
-   * use {@link #getSupportedEventTypes()} instead
+   * @deprecated arrays are mutable and thus vulnerable to external
+   * manipulation. use {@link #getSupportedEventTypes()} instead
    */
   public static final String[] supportedEventTypes = (String[]) EVENT_TYPES.clone();
 
@@ -97,16 +97,16 @@
     Properties defaultModulesProperties = ClassLoaderUtil.getProperties(resource);
     for (Iterator iter = defaultModulesProperties.keySet().iterator(); iter.hasNext();) {
       String moduleClassName = (String) iter.next();
+      Class moduleClass = ClassLoaderUtil.classForName(moduleClassName);
       try {
-        ModuleDefinition moduleDefinition = (ModuleDefinition) ClassLoaderUtil.classForName(moduleClassName)
-          .newInstance();
+        ModuleDefinition moduleDefinition = (ModuleDefinition) moduleClass.newInstance();
         processDefinition.addDefinition(moduleDefinition);
       }
       catch (InstantiationException e) {
-        throw new JbpmException("could not instantiate " + moduleClassName, e);
+        throw new JbpmException("failed to instantiate " + moduleClass, e);
       }
       catch (IllegalAccessException e) {
-        throw new JbpmException("illegal access to " + moduleClassName, e);
+        throw new JbpmException(ProcessDefinition.class + " has no access to " + moduleClass, e);
       }
     }
     return processDefinition;

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/SuperState.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/SuperState.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/def/SuperState.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -31,13 +31,12 @@
 import org.jbpm.JbpmException;
 import org.jbpm.graph.exe.ExecutionContext;
 import org.jbpm.jpdl.xml.JpdlXmlReader;
-import org.jbpm.jpdl.xml.Parsable;
 
 /**
  * brings hierarchy into the elements of a process definition by creating a
  * parent-child relation between {@link GraphElement}s.
  */
-public class SuperState extends Node implements Parsable, NodeCollection {
+public class SuperState extends Node implements NodeCollection {
 
   private static final long serialVersionUID = 1L;
   

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/exe/ProcessInstance.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -124,8 +124,7 @@
    * fired, which is also before the execution of the initial node.
    * @throws JbpmException if processDefinition is null.
    */
-  public ProcessInstance(ProcessDefinition processDefinition, Map variables,
-      String key) {
+  public ProcessInstance(ProcessDefinition processDefinition, Map variables, String key) {
     if (processDefinition == null) {
       throw new IllegalArgumentException("process definition is null");
     }
@@ -180,8 +179,7 @@
     // fire the process start event
     if (initialNode != null) {
       ExecutionContext executionContext = new ExecutionContext(rootToken);
-      processDefinition.fireEvent(Event.EVENTTYPE_PROCESS_START,
-          executionContext);
+      processDefinition.fireEvent(Event.EVENTTYPE_PROCESS_START, executionContext);
 
       // execute the start node
       initialNode.execute(executionContext);
@@ -215,7 +213,7 @@
     ModuleInstance removedModuleInstance = null;
     if (instances != null) {
       removedModuleInstance = (ModuleInstance) instances.remove(moduleInstance.getClass()
-          .getName());
+        .getName());
       if (removedModuleInstance != null) {
         moduleInstance.setProcessInstance(null);
       }
@@ -226,9 +224,9 @@
   /**
    * looks up an optional module instance by its class.
    */
-  public ModuleInstance getInstance(Class clazz) {
+  public ModuleInstance getInstance(Class moduleClass) {
     ModuleInstance moduleInstance = null;
-    String className = clazz.getName();
+    String className = moduleClass.getName();
     if (instances != null) {
       moduleInstance = (ModuleInstance) instances.get(className);
     }
@@ -241,16 +239,14 @@
       moduleInstance = (ModuleInstance) transientInstances.get(className);
       if (moduleInstance == null) {
         try {
-          moduleInstance = (ModuleInstance) clazz.newInstance();
+          moduleInstance = (ModuleInstance) moduleClass.newInstance();
           moduleInstance.setProcessInstance(this);
         }
         catch (InstantiationException e) {
-          throw new JbpmException("could not instantiate transient module "
-            + className, e);
+          throw new JbpmException("failed to instantiate " + moduleClass, e);
         }
         catch (IllegalAccessException e) {
-          throw new JbpmException("could not access transient module "
-            + className, e);
+          throw new JbpmException(getClass() + " has no access to " + moduleClass, e);
         }
         transientInstances.put(className, moduleInstance);
       }
@@ -345,8 +341,7 @@
       if (superProcessToken != null && !superProcessToken.hasEnded()) {
         addCascadeProcessInstance(superProcessToken.getProcessInstance());
 
-        ExecutionContext superExecutionContext = new ExecutionContext(
-            superProcessToken);
+        ExecutionContext superExecutionContext = new ExecutionContext(superProcessToken);
         superExecutionContext.setSubProcessInstance(this);
         superProcessToken.signal(superExecutionContext);
       }
@@ -358,10 +353,8 @@
         Services services = jbpmContext.getServices();
         MessageService messageService = services.getMessageService();
         PersistenceService persistenceService = services.getPersistenceService();
-        if (messageService != null
-          && persistenceService != null
-          && persistenceService.getJobSession()
-              .countDeletableJobsForProcessInstance(this) > 0) {
+        if (messageService != null && persistenceService != null
+          && persistenceService.getJobSession().countDeletableJobsForProcessInstance(this) > 0) {
           CleanUpProcessJob job = new CleanUpProcessJob(rootToken);
           job.setDueDate(new Date());
           messageService.send(job);
@@ -513,7 +506,7 @@
   public String toString() {
     return "ProcessInstance"
       + (key != null ? '(' + key + ')' : id != 0 ? "(" + id + ')'
-          : '@' + Integer.toHexString(hashCode()));
+        : '@' + Integer.toHexString(hashCode()));
   }
 
   // getters and setters //////////////////////////////////////////////////////

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/exe/Token.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/exe/Token.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/exe/Token.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -94,8 +94,7 @@
     this.start = Clock.getCurrentTime();
     this.processInstance = processInstance;
     this.node = processInstance.getProcessDefinition().getStartState();
-    this.isTerminationImplicit = processInstance.getProcessDefinition()
-        .isTerminationImplicit();
+    this.isTerminationImplicit = processInstance.getProcessDefinition().isTerminationImplicit();
 
     // assign an id to this token before events get fired
     Services.assignId(this);
@@ -166,8 +165,7 @@
     }
 
     if (leavingTransition == null) {
-      throw new JbpmException(node + " has no leaving transition named "
-        + transitionName);
+      throw new JbpmException(node + " has no leaving transition named " + transitionName);
     }
 
     signal(leavingTransition, new ExecutionContext(this));
@@ -239,18 +237,16 @@
    * adds available transitions of that node to the Set and after that calls
    * itself recursivly for the SuperSate of the Node if it has a super state
    */
-  private void addAvailableTransitionsOfNode(Node currentNode,
-      Set availableTransitions) {
+  private void addAvailableTransitionsOfNode(Node currentNode, Set availableTransitions) {
     List leavingTransitions = currentNode.getLeavingTransitions();
     if (leavingTransitions != null) {
       for (Iterator iter = leavingTransitions.iterator(); iter.hasNext();) {
         Transition transition = (Transition) iter.next();
         String conditionExpression = transition.getCondition();
         if (conditionExpression != null) {
-          Object result = JbpmExpressionEvaluator.evaluate(conditionExpression,
-              new ExecutionContext(this));
-          if ((result instanceof Boolean)
-            && (((Boolean) result).booleanValue())) {
+          Object result = JbpmExpressionEvaluator.evaluate(conditionExpression, new ExecutionContext(
+            this));
+          if ((result instanceof Boolean) && (((Boolean) result).booleanValue())) {
             availableTransitions.add(transition);
           }
         }
@@ -260,8 +256,7 @@
       }
     }
     if (currentNode.getSuperState() != null) {
-      addAvailableTransitionsOfNode(currentNode.getSuperState(),
-          availableTransitions);
+      addAvailableTransitionsOfNode(currentNode.getSuperState(), availableTransitions);
     }
   }
 
@@ -377,8 +372,7 @@
    * convenience method for adding a process log.
    */
   public void addLog(ProcessLog processLog) {
-    LoggingInstance li =
-        (LoggingInstance) processInstance.getInstance(LoggingInstance.class);
+    LoggingInstance li = (LoggingInstance) processInstance.getInstance(LoggingInstance.class);
     if (li != null) {
       processLog.setToken(this);
       li.addLog(processLog);
@@ -390,8 +384,7 @@
    * logs, make sure you put the {@link #endCompositeLog()} in a finally block.
    */
   public void startCompositeLog(CompositeLog compositeLog) {
-    LoggingInstance li =
-        (LoggingInstance) processInstance.getInstance(LoggingInstance.class);
+    LoggingInstance li = (LoggingInstance) processInstance.getInstance(LoggingInstance.class);
     if (li != null) {
       compositeLog.setToken(this);
       li.startCompositeLog(compositeLog);
@@ -403,8 +396,7 @@
    * finally block.
    */
   public void endCompositeLog() {
-    LoggingInstance li =
-        (LoggingInstance) processInstance.getInstance(LoggingInstance.class);
+    LoggingInstance li = (LoggingInstance) processInstance.getInstance(LoggingInstance.class);
     if (li != null) {
       li.endCompositeLog();
     }
@@ -616,10 +608,9 @@
     Token other = (Token) o;
     if (id != 0 && id == other.getId()) return true;
 
-    return (name != null ? name.equals(other.getName())
-        : other.getName() == null)
+    return (name != null ? name.equals(other.getName()) : other.getName() == null)
       && (parent != null ? parent.equals(other.getParent())
-          : processInstance.equals(other.getProcessInstance()));
+        : processInstance.equals(other.getProcessInstance()));
   }
 
   public int hashCode() {
@@ -630,11 +621,10 @@
   }
 
   public String toString() {
-    return "Token(" + getFullName() + ')';
+    return "Token(" + (id != 0 ? String.valueOf(id) : getFullName()) + ')';
   }
 
-  public ProcessInstance createSubProcessInstance(
-      ProcessDefinition subProcessDefinition) {
+  public ProcessInstance createSubProcessInstance(ProcessDefinition subProcessDefinition) {
     // create the new sub process instance
     subProcessInstance = new ProcessInstance(subProcessDefinition);
     // bind the subprocess to the super-process-token
@@ -662,8 +652,13 @@
       log.debug('\'' + lockOwnerId + "' locked " + this);
     }
     else if (!lock.equals(lockOwnerId)) {
-      throw new JbpmException('\'' + lockOwnerId + "' cannot lock " + this
-        + " because '" + lock + "' already locked it");
+      throw new JbpmException('\''
+        + lockOwnerId
+        + "' cannot lock "
+        + this
+        + " because '"
+        + lock
+        + "' already locked it");
     }
   }
 
@@ -673,8 +668,13 @@
   public void unlock(String lockOwnerId) {
     if (lock != null) {
       if (!lock.equals(lockOwnerId)) {
-        throw new JbpmException('\'' + lockOwnerId + "' cannot unlock " + this
-          + " because '" + lock + "' locked it");
+        throw new JbpmException('\''
+          + lockOwnerId
+          + "' cannot unlock "
+          + this
+          + " because '"
+          + lock
+          + "' locked it");
       }
       lock = null;
       log.debug('\'' + lockOwnerId + "' unlocked " + this);

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Decision.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Decision.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Decision.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,12 +36,11 @@
 import org.jbpm.instantiation.Delegation;
 import org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator;
 import org.jbpm.jpdl.xml.JpdlXmlReader;
-import org.jbpm.jpdl.xml.Parsable;
 
 /**
  * decision node.
  */
-public class Decision extends Node implements Parsable {
+public class Decision extends Node {
 
   private List decisionConditions;
   private Delegation decisionDelegation;

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Fork.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Fork.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Fork.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -37,7 +37,6 @@
 import org.jbpm.graph.exe.ExecutionContext;
 import org.jbpm.graph.exe.Token;
 import org.jbpm.jpdl.xml.JpdlXmlReader;
-import org.jbpm.jpdl.xml.Parsable;
 
 /**
  * specifies configurable fork behaviour.
@@ -56,7 +55,7 @@
  * </ul>
  * </p>
  */
-public class Fork extends Node implements Parsable {
+public class Fork extends Node {
 
   private static final long serialVersionUID = 1L;
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/InterleaveEnd.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/InterleaveEnd.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/InterleaveEnd.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,12 +21,16 @@
  */
 package org.jbpm.graph.node;
 
-import java.util.*;
+import java.util.Collection;
+
 import org.dom4j.Element;
-import org.jbpm.graph.def.*;
-import org.jbpm.graph.exe.*;
-import org.jbpm.jpdl.xml.*;
 
+import org.jbpm.graph.def.Node;
+import org.jbpm.graph.def.Transition;
+import org.jbpm.graph.exe.ExecutionContext;
+import org.jbpm.graph.exe.Token;
+import org.jbpm.jpdl.xml.JpdlXmlReader;
+
 /**
  * a interleaving end node should have 2 leaving transitions.
  * one with the name 'back' that has the interleaving start node as 
@@ -35,7 +39,7 @@
  * Alternatively, the back and done transitions can be specified 
  * in this interleave handler.
  */
-public class InterleaveEnd extends Node implements Parsable {
+public class InterleaveEnd extends Node {
   
   private static final long serialVersionUID = 1L;
   

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/InterleaveStart.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/InterleaveStart.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/InterleaveStart.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -33,7 +33,6 @@
 import org.jbpm.graph.exe.ExecutionContext;
 import org.jbpm.graph.exe.Token;
 import org.jbpm.jpdl.xml.JpdlXmlReader;
-import org.jbpm.jpdl.xml.Parsable;
 
 /**
  * is an unordered set of child nodeMap.  the path of execution will 
@@ -49,7 +48,7 @@
  * Instead of supplying a script, its also possible to subclass this 
  * class and override the selectTransition method.
  */
-public class InterleaveStart extends Node implements Parsable {
+public class InterleaveStart extends Node {
   
   private static final long serialVersionUID = 1L;
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Join.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Join.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/Join.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,9 +36,8 @@
 import org.jbpm.graph.exe.ExecutionContext;
 import org.jbpm.graph.exe.Token;
 import org.jbpm.jpdl.xml.JpdlXmlReader;
-import org.jbpm.jpdl.xml.Parsable;
 
-public class Join extends Node implements Parsable {
+public class Join extends Node {
 
   private static final long serialVersionUID = 1L;
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/ProcessState.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/ProcessState.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/ProcessState.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -46,10 +46,9 @@
 import org.jbpm.graph.log.ProcessStateLog;
 import org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator;
 import org.jbpm.jpdl.xml.JpdlXmlReader;
-import org.jbpm.jpdl.xml.Parsable;
 import org.jbpm.util.Clock;
 
-public class ProcessState extends Node implements Parsable {
+public class ProcessState extends Node {
 
   private static final long serialVersionUID = 1L;
   

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/StartState.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/StartState.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/StartState.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -52,11 +52,18 @@
 
   // event types //////////////////////////////////////////////////////////////
 
-  public static final String[] supportedEventTypes = new String[] { Event.EVENTTYPE_NODE_LEAVE,
-      Event.EVENTTYPE_AFTER_SIGNAL };
+  private static final String[] EVENT_TYPES = {
+    Event.EVENTTYPE_NODE_LEAVE, Event.EVENTTYPE_AFTER_SIGNAL
+  };
 
+  /**
+   * @deprecated arrays are mutable and thus vulnerable to external
+   * manipulation; call {@link #getSupportedEventTypes()} instead
+   */
+  public static final String[] supportedEventTypes = (String[]) EVENT_TYPES.clone();
+
   public String[] getSupportedEventTypes() {
-    return supportedEventTypes;
+    return (String[]) EVENT_TYPES.clone();
   }
 
   // xml //////////////////////////////////////////////////////////////////////
@@ -73,23 +80,19 @@
   public void write(Element nodeElement) {
   }
 
-  public void leave(ExecutionContext executionContext, Transition transition) {
-    // leave this node as usual
-    super.leave(executionContext, transition);
-  }
-
   public void execute(ExecutionContext executionContext) {
   }
 
   public Transition addArrivingTransition(Transition t) {
     throw new UnsupportedOperationException(
-        "illegal operation : its not possible to add a transition that is arriving in a start state");
+      "illegal operation : its not possible to add a transition that is arriving in a start state");
   }
 
+  /**
+   * @deprecated start states do not have arriving transitions
+   * @throws UnsupportedOperationException to prevent invocation
+   */
   public void setArrivingTransitions(Map arrivingTransitions) {
-    if ((arrivingTransitions != null) && (arrivingTransitions.size() > 0)) {
-      throw new UnsupportedOperationException(
-          "illegal operation : its not possible to set a non-empty map in the arriving transitions of a start state");
-    }
+    throw new UnsupportedOperationException("cannot set arriving transitions for start state");
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/TaskNode.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/TaskNode.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/graph/node/TaskNode.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,7 +36,6 @@
 import org.jbpm.graph.exe.Token;
 import org.jbpm.jpdl.el.impl.JbpmExpressionEvaluator;
 import org.jbpm.jpdl.xml.JpdlXmlReader;
-import org.jbpm.jpdl.xml.Parsable;
 import org.jbpm.taskmgmt.def.Task;
 import org.jbpm.taskmgmt.exe.TaskInstance;
 import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
@@ -45,7 +44,7 @@
  * is a node that relates to one or more tasks. Property <code>signal</code>
  * specifies how task completion triggers continuation of execution.
  */
-public class TaskNode extends Node implements Parsable {
+public class TaskNode extends Node {
 
   private static final long serialVersionUID = 1L;
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/BeanInstantiator.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/BeanInstantiator.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/BeanInstantiator.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -28,7 +28,7 @@
 import org.apache.commons.logging.LogFactory;
 import org.dom4j.Element;
 
-public class BeanInstantiator extends FieldInstantiator implements Instantiator {
+public class BeanInstantiator extends FieldInstantiator {
 
   protected void setPropertyValue(Class clazz, Object newInstance, String propertyName,
       Element propertyElement) {
@@ -51,13 +51,13 @@
         method.invoke(newInstance, new Object[] { value });
       }
       catch (IllegalArgumentException e) {
-        log.error("property '" + propertyName + "' cannot be set to value: " + value, e);
+        log.error("could not set '" + propertyName + "' to: " + value, e);
       }
       catch (IllegalAccessException e) {
-        log.error("property '" + propertyName + "' is inaccessible", e);
+        log.error(getClass() + " has no access to " + method, e);
       }
       catch (InvocationTargetException e) {
-        log.error("property setter '" + setterMethodName + "' threw exception", e.getCause());
+        log.error(method + " threw exception", e.getCause());
       }
     }
     else {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/Delegation.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/Delegation.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/Delegation.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -24,8 +24,8 @@
 import java.io.IOException;
 import java.io.Serializable;
 import java.io.StringWriter;
+import java.io.Writer;
 import java.util.HashMap;
-import java.util.Iterator;
 import java.util.Map;
 
 import org.apache.commons.logging.Log;
@@ -55,18 +55,17 @@
     instantiators.put("field", new FieldInstantiator());
     instantiators.put("bean", new BeanInstantiator());
     instantiators.put("constructor", new ConstructorInstantiator());
-    instantiators.put("configuration-property",
-        new ConfigurationPropertyInstantiator());
+    instantiators.put("configuration-property", new ConfigurationPropertyInstantiator());
     instantiators.put("xml", new XmlInstantiator());
     return instantiators;
   }
 
-  long id;
+  private long id;
   protected String className;
   protected String configuration;
   protected String configType;
   protected ProcessDefinition processDefinition;
-  transient Object instance;
+  private transient Object instance;
 
   public Delegation() {
   }
@@ -83,32 +82,37 @@
     processDefinition = jpdlReader.getProcessDefinition();
     className = delegateElement.attributeValue("class");
     if (className == null) {
-      jpdlReader.addWarning("no class specified in delegation: "
-        + delegateElement.getPath());
+      jpdlReader.addWarning("no class specified in delegation: " + delegateElement.getPath());
     }
 
     configType = delegateElement.attributeValue("config-type");
     if (delegateElement.hasContent()) {
       try {
         StringWriter stringWriter = new StringWriter();
-        // when parsing, it could be to store the config in the database,
-        // so we want to make the configuration compact
-        XMLWriter xmlWriter =
-            new XMLWriter(stringWriter, OutputFormat.createCompactFormat());
-        for (Iterator iter = delegateElement.content().iterator(); iter.hasNext();) {
-          Object node = iter.next();
-          xmlWriter.write(node);
-        }
+        // configuration is saved to database, write in a compact format
+        CompactXmlWriter xmlWriter = new CompactXmlWriter(stringWriter);
+        xmlWriter.writeElementContent(delegateElement);
         xmlWriter.flush();
         configuration = stringWriter.toString();
       }
       catch (IOException e) {
         jpdlReader.addProblem(new Problem(Problem.LEVEL_WARNING,
-            "failed to write configuration xml", e));
+          "failed to write configuration xml", e));
       }
     }
   }
 
+  private static class CompactXmlWriter extends XMLWriter {
+
+    CompactXmlWriter(Writer writer) {
+      super(writer, OutputFormat.createCompactFormat());
+    }
+
+    public void writeElementContent(Element element) throws IOException {
+      super.writeElementContent(element);
+    }
+  }
+
   public void write(Element element) {
     element.addAttribute("class", className);
     element.addAttribute("config-type", configType);
@@ -116,11 +120,11 @@
     if (configuration != null) {
       try {
         Element actionElement = DocumentHelper.parseText(
-            "<action>" + configuration + "</action>").getRootElement();
+          "<action>" + configuration + "</action>").getRootElement();
         element.appendContent(actionElement);
       }
       catch (DocumentException e) {
-        log.error("could not parse action configuration: " + configuration, e);
+        log.error("could not parse configuration: " + configuration, e);
       }
     }
   }
@@ -133,12 +137,13 @@
   }
 
   public Object instantiate() {
-    // The thread class loader was set before the instantiation correctly
-    // to the ProcessClassLoader (PCL) which can be directly used here
-    // If we would construct a JbpmConfiguration.getProcessClassLoder here
-    // we would have the hierarchy PCL -> PCL -> Context...
-    // this is one PCL too much
+    /*
+     * The context class loader for the current thread should already be a
+     * ProcessClassLoader that this delegation can use directly. There is no
+     * need to introduce an extra process class loader.
+     */
     ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
+    assert classLoader instanceof ProcessClassLoader : classLoader.getClass();
 
     // find the instantiator
     Instantiator instantiator = (Instantiator) instantiatorCache.get(configType);
@@ -146,20 +151,21 @@
       try {
         // load the instantiator class
         Class instantiatorClass = Class.forName(configType, false, classLoader);
-        // instantiate the instantiator with the default constructor
-        instantiator = (Instantiator) instantiatorClass.newInstance();
-        instantiatorCache.put(configType, instantiator);
+        try {
+          // instantiate the instantiator with the default constructor
+          instantiator = (Instantiator) instantiatorClass.newInstance();
+          instantiatorCache.put(configType, instantiator);
+        }
+        catch (InstantiationException e) {
+          throw new JbpmException("failed to instantiate " + instantiatorClass, e);
+        }
+        catch (IllegalAccessException e) {
+          throw new JbpmException(getClass() + " has no access to " + instantiatorClass, e);
+        }
       }
       catch (ClassNotFoundException e) {
-        throw new JbpmException("could not load instantiator class "
-          + configType, e);
+        throw new JbpmException("could not load instantiator class " + configType, e);
       }
-      catch (InstantiationException e) {
-        throw new JbpmException("could not instantiate " + configType, e);
-      }
-      catch (IllegalAccessException e) {
-        throw new JbpmException("could not access " + configType, e);
-      }
     }
 
     try {
@@ -169,8 +175,7 @@
       return instantiator.instantiate(delegationClass, configuration);
     }
     catch (ClassNotFoundException e) {
-      throw new DelegationException("could not load delegation class "
-        + className, e);
+      throw new DelegationException("could not load delegation class " + className, e);
     }
   }
 
@@ -185,13 +190,12 @@
 
     return className.equals(other.getClassName())
       && (configuration != null ? configuration.equals(other.getConfiguration())
-          : other.getConfiguration() == null);
+        : other.getConfiguration() == null);
   }
 
   public int hashCode() {
     int result = 2131399759 + className.hashCode();
-    result = 702058657 * result + configuration != null ? configuration.hashCode()
-        : 0;
+    result = 702058657 * result + configuration != null ? configuration.hashCode() : 0;
     return result;
   }
 
@@ -229,8 +233,12 @@
     return id;
   }
 
+  /**
+   * @deprecated database identifier is not meant to be mutable
+   * @throws UnsupportedOperationException to prevent invocation
+   */
   public void setId(long id) {
-    this.id = id;
+    throw new UnsupportedOperationException();
   }
 
   public ProcessDefinition getProcessDefinition() {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/FieldInstantiator.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/FieldInstantiator.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/instantiation/FieldInstantiator.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -67,7 +67,7 @@
   }
 
   protected void setPropertyValue(Class clazz, Object instance, String propertyName,
-      Element propertyElement) {
+    Element propertyElement) {
     Field field = findField(clazz, propertyName);
     if (field != null) {
       field.setAccessible(true);
@@ -76,14 +76,14 @@
         field.set(instance, value);
       }
       catch (IllegalArgumentException e) {
-        log.error("field '" + propertyName + "' cannot be set to value: " + value, e);
+        log.error("could not set '" + propertyName + "' to: " + value, e);
       }
       catch (IllegalAccessException e) {
-        log.error(" field '" + propertyName + "' is inaccessible", e);
+        log.error(getClass() + " has no access to " + field, e);
       }
     }
     else {
-      log.error("field '" + propertyName + "' was not found");
+      log.error("field not found: " + propertyName);
     }
   }
 
@@ -103,11 +103,11 @@
   protected Element parseConfiguration(String configuration) {
     Element element = null;
     try {
-      element = DocumentHelper.parseText("<action>" + configuration + "</action>").getRootElement();
+      element = DocumentHelper.parseText("<action>" + configuration + "</action>")
+        .getRootElement();
     }
     catch (DocumentException e) {
-      log.error("couldn't parse bean configuration : " + configuration, e);
-      throw new JbpmException(e);
+      throw new JbpmException("failed to parse configuration", e);
     }
     return element;
   }
@@ -117,10 +117,10 @@
       return clazz.newInstance();
     }
     catch (InstantiationException e) {
-      throw new JbpmException("could not instantiate " + clazz, e);
+      throw new JbpmException("failed to instantiate " + clazz, e);
     }
     catch (IllegalAccessException e) {
-      throw new JbpmException("could not access " + clazz, e);
+      throw new JbpmException(getClass() + " has no access to " + clazz, e);
     }
   }
 
@@ -130,28 +130,28 @@
     if (type == String.class) {
       value = propertyElement.getText();
     }
-    else if ((type == Integer.class) || (type == int.class)) {
+    else if (type == Integer.class || type == int.class) {
       value = new Integer(propertyElement.getTextTrim());
     }
-    else if ((type == Long.class) || (type == long.class)) {
+    else if (type == Long.class || type == long.class) {
       value = new Long(propertyElement.getTextTrim());
     }
-    else if ((type == Float.class) || (type == float.class)) {
+    else if (type == Float.class || type == float.class) {
       value = new Float(propertyElement.getTextTrim());
     }
-    else if ((type == Double.class) || (type == double.class)) {
+    else if (type == Double.class || type == double.class) {
       value = new Double(propertyElement.getTextTrim());
     }
-    else if ((type == Boolean.class) || (type == boolean.class)) {
+    else if (type == Boolean.class || type == boolean.class) {
       value = Boolean.valueOf(propertyElement.getTextTrim());
     }
-    else if ((type == Character.class) || (type == char.class)) {
+    else if (type == Character.class || type == char.class) {
       value = new Character(propertyElement.getTextTrim().charAt(0));
     }
-    else if ((type == Short.class) || (type == short.class)) {
+    else if (type == Short.class || type == short.class) {
       value = new Short(propertyElement.getTextTrim());
     }
-    else if ((type == Byte.class) || (type == byte.class)) {
+    else if (type == Byte.class || type == byte.class) {
       value = new Byte(propertyElement.getTextTrim());
     }
     else if (type == List.class || type == Collection.class) {
@@ -180,32 +180,30 @@
         else if (Map.class.isAssignableFrom(type)) {
           value = getMap(propertyElement, (Map) type.newInstance());
         }
-        else {
+        else if (propertyElement.isTextOnly()) {
+          Constructor constructor = type.getConstructor(new Class[] { String.class });
           try {
-            Constructor constructor = type.getConstructor(new Class[] { String.class });
-            if (propertyElement.isTextOnly()) {
-              value = constructor.newInstance(new Object[] { propertyElement.getTextTrim() });
-            }
-            else {
-              log.error("element '" + propertyElement.getName() + "' has non-text content");
-            }
+            value = constructor.newInstance(new Object[] { propertyElement.getTextTrim() });
           }
-          catch (NoSuchMethodException e) {
-            log.error(type + " does not have a string constructor", e);
+          catch (IllegalAccessException e) {
+            log.error(FieldInstantiator.class + " has no access to " + constructor);
           }
-          catch (IllegalArgumentException e) {
-            log.error(type + " cannot be constructed with value " + propertyElement.getTextTrim(), e);
+          catch (InvocationTargetException e) {
+            log.error(constructor + " threw exception", e.getCause());
           }
         }
+        else {
+          log.error("element '" + propertyElement.getName() + "' has non-text content");
+        }
       }
       catch (InstantiationException e) {
-        log.error("could not instantiate " + type, e);
+        log.error("failed to instantiate " + type, e);
       }
       catch (IllegalAccessException e) {
-        log.error(type + " is inaccessible", e);
+        log.error(FieldInstantiator.class + " has no access to " + type, e);
       }
-      catch (InvocationTargetException e) {
-        log.error("constructor for " + type + " threw exception", e.getCause());
+      catch (NoSuchMethodException e) {
+        log.error("constructor not found: " + type.getName() + "(String)", e);
       }
     }
     return value;
@@ -225,7 +223,7 @@
     return map;
   }
 
-  static Object getCollection(Element collectionElement, Collection collection) {
+  private static Object getCollection(Element collectionElement, Collection collection) {
     Class elementClass = classForAttributeValue(collectionElement, "element-type");
 
     for (Iterator iter = collectionElement.elementIterator(); iter.hasNext();) {
@@ -236,7 +234,8 @@
   }
 
   /**
-   * Returns the <code>Class</code> associated with the value for the attribute with the given name.
+   * Returns the <code>Class</code> associated with the value for the attribute
+   * with the given name.
    */
   private static Class classForAttributeValue(Element element, String attributeName) {
     Class type = String.class;

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/job/executor/JobExecutor.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/job/executor/JobExecutor.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/job/executor/JobExecutor.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,25 +36,45 @@
   protected int lockBufferTime;
 
   private ThreadGroup threadGroup;
-  protected Map threads = new HashMap();
+  /** @deprecated call {@link #getThreads()} instead */
+  protected Map threads;
   protected LockMonitorThread lockMonitorThread;
+
   protected Map monitoredJobIds = new Hashtable();
 
   protected boolean isStarted = false;
 
+  /** @deprecated this field should never have been exposed */
   protected static String hostName;
+  private static String hostAddress;
 
   public synchronized void start() {
     if (!isStarted) {
-      log.debug("starting job executor '" + name + '\'');
+      log.debug("starting " + name);
+
+      // create thread group
+      threadGroup = new ThreadGroup(name) {
+        public void uncaughtException(Thread thread, Throwable throwable) {
+          if (thread instanceof JobExecutorThread) {
+            startThread(thread.getName());
+          }
+          else if (thread instanceof LockMonitorThread) {
+            startLockMonitorThread();
+          }
+          super.uncaughtException(thread, throwable);
+        }
+      };
+
+      // start executor threads
       for (int i = 0; i < nbrOfThreads; i++) {
         startThread();
       }
+
       startLockMonitorThread();
       isStarted = true;
     }
     else {
-      log.debug("ignoring start: job executor '" + name + "' already started'");
+      log.debug("ignoring start: " + name + " already started'");
     }
   }
 
@@ -69,24 +89,20 @@
    */
   public synchronized List stop() {
     if (!isStarted) {
-      log.debug("ignoring stop: job executor '" + name + "' not started");
+      log.debug("ignoring stop, " + name + " not started");
       return Collections.EMPTY_LIST;
     }
 
-    log.debug("stopping job executor '" + name + '\'');
+    log.debug("stopping " + name);
     isStarted = false;
 
-    Thread[] stoppedThreads = new Thread[threads.size()];
-    for (int i = 0; i < nbrOfThreads; i++) {
-      stoppedThreads[i] = stopThread();
+    Thread[] activeThreads = new Thread[threadGroup.activeCount()];
+    int threadCount = threadGroup.enumerate(activeThreads);
+    for (int i = 0; i < threadCount; i++) {
+      stopThread(activeThreads[i]);
     }
 
-    if (lockMonitorThread != null) {
-      lockMonitorThread.deactivate();
-      lockMonitorThread = null;
-    }
-
-    return Arrays.asList(stoppedThreads);
+    return Arrays.asList(activeThreads);
   }
 
   public void stopAndJoin() throws InterruptedException {
@@ -94,38 +110,33 @@
       Thread thread = (Thread) i.next();
       thread.join();
     }
-
-    if (lockMonitorThread != null) lockMonitorThread.join();
   }
 
   public void ensureThreadsAreActive() {
-    String[] deceasedNames = new String[threads.size()];
-    int deathToll = 0;
-    for (Iterator i = threads.values().iterator(); i.hasNext();) {
-      Thread thread = (Thread) i.next();
-      if (!thread.isAlive()) {
-        deceasedNames[deathToll++] = thread.getName();
+    int activeCount = threadGroup.activeCount();
+    if (activeCount < nbrOfThreads + 1) {
+      // find out who is missing
+      Thread[] activeThreads = new Thread[activeCount];
+      activeCount = threadGroup.enumerate(activeThreads);
+
+      for (int i = 1; i <= nbrOfThreads; i++) {
+        String threadName = getThreadName(i);
+        if (!contains(activeThreads, activeCount, threadName)) {
+          // thread-i is missing, restart it
+          startThread(threadName);
+        }
       }
     }
-    for (int i = 0; i < deathToll; i++) {
-      startThread(deceasedNames[i]);
+  }
+
+  private static boolean contains(Thread[] threads, int count, String threadName) {
+    for (int i = 0; i < count; i++) {
+      if (threadName.equals(threads[i].getName())) return true;
     }
+    return false;
   }
 
-  synchronized ThreadGroup getThreadGroup() {
-    if (threadGroup == null) {
-      threadGroup = new ThreadGroup(name) {
-        public void uncaughtException(Thread thread, Throwable throwable) {
-          if (thread instanceof JobExecutorThread) {
-            startThread(thread.getName());
-          }
-          else if (thread instanceof LockMonitorThread) {
-            startLockMonitorThread();
-          }
-          super.uncaughtException(thread, throwable);
-        }
-      };
-    }
+  ThreadGroup getThreadGroup() {
     return threadGroup;
   }
 
@@ -133,11 +144,10 @@
     startThread(getNextThreadName());
   }
 
-  protected synchronized void startThread(String threadName) {
+  protected void startThread(String threadName) {
     Thread thread = createThread(threadName);
-    threads.put(threadName, thread);
 
-    log.debug("starting new job executor thread '" + threadName + '\'');
+    log.debug("starting " + threadName);
     thread.start();
   }
 
@@ -146,19 +156,43 @@
   }
 
   protected String getNextThreadName() {
-    return getThreadName(threads.size() + 1);
+    return getThreadName(threadGroup.activeCount() + 1);
   }
 
   protected String getLastThreadName() {
-    return getThreadName(threads.size());
+    return getThreadName(threadGroup.activeCount());
   }
 
+  /** @deprecated */
+  protected synchronized Thread stopThread() {
+    String threadName = getLastThreadName();
+    log.debug("stopping " + threadName);
+
+    Thread thread = (Thread) threads.remove(threadName);
+    stopThread(thread);
+    return thread;
+  }
+
+  private void stopThread(Thread thread) {
+    if (thread instanceof JobExecutorThread) {
+      JobExecutorThread executor = (JobExecutorThread) thread;
+      executor.deactivate();
+    }
+    else if (thread instanceof LockMonitorThread) {
+      LockMonitorThread monitor = (LockMonitorThread) thread;
+      monitor.deactivate();
+    }
+  }
+
   private String getThreadName(int index) {
     return name + '@' + getHostAddress() + ":Executor-" + index;
   }
 
-  private void startLockMonitorThread() {
-    lockMonitorThread = new LockMonitorThread(getLockMonitorThreadName(), this);
+  void startLockMonitorThread() {
+    String threadName = getLockMonitorThreadName();
+    lockMonitorThread = new LockMonitorThread(threadName, this);
+
+    log.debug("starting " + threadName);
     lockMonitorThread.start();
   }
 
@@ -167,29 +201,17 @@
   }
 
   private static String getHostAddress() {
-    if (hostName == null) {
+    if (hostAddress == null) {
       try {
-        hostName = InetAddress.getLocalHost().getHostAddress();
+        hostAddress = InetAddress.getLocalHost().getHostAddress();
       }
       catch (UnknownHostException e) {
-        hostName = "127.0.0.1";
+        hostAddress = "127.0.0.1";
       }
     }
-    return hostName;
+    return hostAddress;
   }
 
-  protected synchronized Thread stopThread() {
-    String threadName = getLastThreadName();
-    log.debug("removing job executor thread '" + threadName + '\'');
-
-    Thread thread = (Thread) threads.remove(threadName);
-    if (thread instanceof JobExecutorThread) {
-      JobExecutorThread jobThread = (JobExecutorThread) thread;
-      jobThread.deactivate();
-    }
-    return thread;
-  }
-
   public Set getMonitoredJobIds() {
     return new HashSet(monitoredJobIds.values());
   }
@@ -282,12 +304,20 @@
   }
 
   public Map getThreads() {
-    return threads;
+    Thread[] threadList = new Thread[threadGroup.activeCount()];
+    int threadCount = threadGroup.enumerate(threadList);
+
+    Map threadMap = new HashMap(threadCount);
+    for (int i = 0; i < threadCount; i++) {
+      Thread thread = threadList[i];
+      threadMap.put(thread.getName(), thread);
+    }
+    return threadMap;
   }
 
   /**
+   * @deprecated <code>threads</code> is an internal control field
    * @throws UnsupportedOperationException to prevent invocation
-   * @deprecated <code>threads</code> is an internal control field
    */
   public void setThreads(Map threads) {
     throw new UnsupportedOperationException();

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/el/parser/ELParserTokenManager.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/el/parser/ELParserTokenManager.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/el/parser/ELParserTokenManager.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -183,7 +183,7 @@
       }
       else
       {
-         int hiByte = (int)(curChar >> 8);
+         int hiByte = curChar >> 8;
          int i1 = hiByte >> 6;
          long l1 = 1L << (hiByte & 077);
          int i2 = (curChar & 0xff) >> 6;
@@ -785,7 +785,7 @@
       }
       else
       {
-         int hiByte = (int)(curChar >> 8);
+         int hiByte = curChar >> 8;
          int i1 = hiByte >> 6;
          long l1 = 1L << (hiByte & 077);
          int i2 = (curChar & 0xff) >> 6;

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/par/ProcessArchive.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/par/ProcessArchive.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/par/ProcessArchive.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -24,6 +24,7 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 import java.io.InputStream;
+import java.io.Serializable;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Iterator;
@@ -45,7 +46,7 @@
 import org.jbpm.util.IoUtil;
 import org.jbpm.util.XmlUtil;
 
-public class ProcessArchive implements ProblemListener {
+public class ProcessArchive implements ProblemListener, Serializable {
 
   private static final long serialVersionUID = 1L;
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/xml/JpdlXmlReader.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/xml/JpdlXmlReader.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/xml/JpdlXmlReader.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -234,10 +234,10 @@
           }
         }
         catch (InstantiationException e) {
-          throw new JbpmException("could not instantiate " + nodeType, e);
+          throw new JbpmException("failed to instantiate " + nodeType, e);
         }
         catch (IllegalAccessException e) {
-          throw new JbpmException("illegal access to " + nodeType, e);
+          throw new JbpmException(getClass() + " has no access to " + nodeType, e);
         }
       }
     }
@@ -586,12 +586,12 @@
     }
   }
 
+  /** Reads actions associated to the given event. */
   public void readActions(Element eventElement, GraphElement graphElement, String eventType) {
     // for all the elements in the event element
     for (Iterator iter = eventElement.elementIterator(); iter.hasNext();) {
       Element actionElement = (Element) iter.next();
-      String actionName = actionElement.getName();
-      if (ActionTypes.hasActionName(actionName)) {
+      if (ActionTypes.hasActionName(actionElement.getName())) {
         Action action = createAction(actionElement);
         if (graphElement != null && eventType != null) {
           // add the action to the event
@@ -610,6 +610,7 @@
     event.addAction(action);
   }
 
+  /** Reads the action associated to the given node. */
   public Action readSingleAction(Element nodeElement) {
     // search for the first action element in the node
     for (Iterator iter = nodeElement.elementIterator(); iter.hasNext();) {
@@ -622,6 +623,7 @@
     return null;
   }
 
+  /** Instantiates and configures an action. */
   public Action createAction(Element actionElement) {
     String actionName = actionElement.getName();
     Class actionType = ActionTypes.getActionType(actionName);
@@ -638,10 +640,11 @@
       throw new JbpmException("failed to instantiate " + actionType, e);
     }
     catch (IllegalAccessException e) {
-      throw new JbpmException("illegal access to " + actionType, e);
+      throw new JbpmException(getClass() + " has no access to " + actionType, e);
     }
   }
 
+  /** Configures the common action parts. */
   public void readAction(Element actionElement, Action action) {
     // if a name is specified for this action
     String actionName = actionElement.attributeValue("name");

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/xml/ProblemListener.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/xml/ProblemListener.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/jpdl/xml/ProblemListener.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,9 +21,7 @@
  */
 package org.jbpm.jpdl.xml;
 
-import java.io.Serializable;
+public interface ProblemListener {
 
-public interface ProblemListener extends Serializable {
-
   void addProblem(Problem problem);
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/mail/Mail.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/mail/Mail.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/mail/Mail.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -244,7 +244,7 @@
       Object resolvedAddresses = addressResolver.resolveAddress(actorId);
       if (resolvedAddresses != null) {
         if (resolvedAddresses instanceof String) {
-          emailAddresses.add((String) resolvedAddresses);
+          emailAddresses.add(resolvedAddresses);
         }
         else if (resolvedAddresses instanceof Collection) {
           emailAddresses.addAll((Collection) resolvedAddresses);

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/PersistenceService.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/PersistenceService.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/PersistenceService.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -27,9 +27,10 @@
 import org.jbpm.db.LoggingSession;
 import org.jbpm.db.TaskMgmtSession;
 import org.jbpm.svc.Service;
+import org.jbpm.tx.TxService;
 
 public interface PersistenceService extends Service {
-  
+
   void assignId(Object object);
 
   GraphSession getGraphSession();
@@ -37,20 +38,17 @@
   JobSession getJobSession();
   ContextSession getContextSession();
   TaskMgmtSession getTaskMgmtSession();
+  Object getCustomSession(Class sessionClass);
 
-  /**
-   * @deprecated use {@link org.jbpm.tx.TxService} instead.
-   */
+  /** @deprecated call {@link TxService#isRollbackOnly()} instead */
   boolean isRollbackOnly();
-  /**
-   * @deprecated use {@link org.jbpm.tx.TxService} instead.
-   */
-  void setRollbackOnly(boolean isRollbackOnly);
-  /**
-   * @deprecated use {@link org.jbpm.tx.TxService} instead.
-   */
+
+  /** @deprecated call {@link TxService#setRollbackOnly()} instead */
   void setRollbackOnly();
 
+  /** @deprecated call {@link TxService#setRollbackOnly()} instead */
+  void setRollbackOnly(boolean isRollbackOnly);
+
   void setGraphSession(GraphSession graphSession);
   void setLoggingSession(LoggingSession loggingSession);
   void setJobSession(JobSession jobSession);

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceService.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceService.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceService.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,8 +21,12 @@
  */
 package org.jbpm.persistence.db;
 
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
 import java.sql.Connection;
 import java.sql.SQLException;
+import java.util.IdentityHashMap;
+import java.util.Map;
 
 import javax.sql.DataSource;
 
@@ -33,6 +37,8 @@
 import org.hibernate.SessionFactory;
 import org.hibernate.StaleStateException;
 import org.hibernate.Transaction;
+import org.hibernate.cfg.Configuration;
+import org.hibernate.cfg.Environment;
 import org.hibernate.exception.LockAcquisitionException;
 
 import org.jbpm.JbpmContext;
@@ -71,6 +77,8 @@
   protected ContextSession contextSession;
   protected LoggingSession loggingSession;
 
+  private Map customSessions;
+
   /**
    * @deprecated for access to other services, invoke
    * {@link JbpmContext#getServices()}
@@ -92,30 +100,28 @@
     if (session == null && getSessionFactory() != null) {
       Connection connection = getConnection(false);
       if (isCurrentSessionEnabled) {
-        log.debug("using current hibernate session");
         session = getSessionFactory().getCurrentSession();
+        log.debug("using current " + session);
         mustSessionBeClosed = false;
         mustSessionBeFlushed = false;
         mustConnectionBeClosed = false;
       }
       else if (connection != null) {
-        log.debug("creating hibernate session on " + connection);
         session = getSessionFactory().openSession(connection);
+        log.debug("created " + session);
         mustSessionBeClosed = true;
         mustSessionBeFlushed = true;
         mustConnectionBeClosed = false;
       }
       else {
-        log.debug("creating hibernate session");
         session = getSessionFactory().openSession();
+        log.debug("created " + session);
         mustSessionBeClosed = true;
         mustSessionBeFlushed = true;
         mustConnectionBeClosed = false;
       }
 
-      if (isTransactionEnabled) {
-        beginTransaction();
-      }
+      if (isTransactionEnabled) beginTransaction();
     }
     return session;
   }
@@ -129,7 +135,8 @@
   public void endTransaction() {
     if (isTransactionManagedExternally()) {
       if (session != null && getTxService().isRollbackOnly()) {
-        throw new JbpmException("cannot mark externally managed transaction for rollback");
+        throw new JbpmException(
+          "cannot honor rollback request under an external transaction manager");
       }
       return;
     }
@@ -178,15 +185,30 @@
         }
         if (session != null) {
           connection = session.connection();
-          log.debug("fetched " + connection
-            + " from hibernate session, client is responsible for closing it!");
-          mustConnectionBeClosed = false;
+          /*
+           * If the session is using aggressive collection release (as in a CMT
+           * environment), the application is responsible for closing the
+           * returned connection. Otherwise, the application should not close
+           * the connection.
+           */
+          Configuration configuration = persistenceServiceFactory.getConfiguration();
+          String releaseMode = configuration.getProperty(Environment.RELEASE_CONNECTIONS);
+          if ("after_statement".equals(releaseMode)
+            || ("auto".equals(releaseMode) && isJtaOrCmtStrategy(configuration))) {
+            mustConnectionBeClosed = true;
+          }
         }
       }
     }
     return connection;
   }
 
+  private static boolean isJtaOrCmtStrategy(Configuration configuration) {
+    String transactionStrategy = configuration.getProperty(Environment.TRANSACTION_STRATEGY);
+    return transactionStrategy != null
+      && (transactionStrategy.indexOf("JTA") != -1 || transactionStrategy.indexOf("CMT") != -1);
+  }
+
   public boolean isTransactionActive() {
     return transaction != null && transaction.isActive();
   }
@@ -227,36 +249,36 @@
   }
 
   protected Exception commit() {
+    log.debug("committing " + transaction);
+    mustSessionBeFlushed = false; // commit does a flush anyway
     try {
-      log.debug("committing " + transaction);
-      mustSessionBeFlushed = false; // commit does a flush anyway
       transaction.commit();
+      return null;
     }
     catch (HibernateException e) {
       // avoid log and throw antipattern
       return e;
     }
-    return null;
   }
 
   protected Exception rollback() {
+    log.debug("rolling back " + transaction);
+    // flushing updates that will be rolled back is not very clever :-)
+    mustSessionBeFlushed = false;
     try {
-      log.debug("rolling back " + transaction);
-      // flushing updates that will be rolled back is not very clever :-)
-      mustSessionBeFlushed = false;
       transaction.rollback();
+      return null;
     }
     catch (HibernateException e) {
       // avoid log and throw antipattern
       return e;
     }
-    return null;
   }
 
   private Exception flushSession() {
     if (mustSessionBeFlushed) {
+      log.debug("flushing " + session);
       try {
-        log.debug("flushing " + session);
         session.flush();
       }
       catch (HibernateException e) {
@@ -270,8 +292,8 @@
   private Exception closeSession() {
     if (mustSessionBeClosed) {
       if (session.isOpen()) {
+        log.debug("closing hibernate session");
         try {
-          log.debug("closing hibernate session");
           session.close();
         }
         catch (HibernateException e) {
@@ -289,8 +311,8 @@
   private Exception closeConnection() {
     if (mustConnectionBeClosed) {
       if (connection != null) {
+        log.debug("closing jdbc connection");
         try {
-          log.debug("closing jdbc connection");
           connection.close();
         }
         catch (SQLException e) {
@@ -321,9 +343,7 @@
   public GraphSession getGraphSession() {
     if (graphSession == null) {
       Session session = getSession();
-      if (session != null) {
-        graphSession = new GraphSession(session);
-      }
+      if (session != null) graphSession = new GraphSession(session);
     }
     return graphSession;
   }
@@ -331,9 +351,7 @@
   public LoggingSession getLoggingSession() {
     if (loggingSession == null) {
       Session session = getSession();
-      if (session != null) {
-        loggingSession = new LoggingSession(session);
-      }
+      if (session != null) loggingSession = new LoggingSession(session);
     }
     return loggingSession;
   }
@@ -341,9 +359,7 @@
   public JobSession getJobSession() {
     if (jobSession == null) {
       Session session = getSession();
-      if (session != null) {
-        jobSession = new JobSession(session);
-      }
+      if (session != null) jobSession = new JobSession(session);
     }
     return jobSession;
   }
@@ -351,9 +367,7 @@
   public ContextSession getContextSession() {
     if (contextSession == null) {
       Session session = getSession();
-      if (session != null) {
-        contextSession = new ContextSession(session);
-      }
+      if (session != null) contextSession = new ContextSession(session);
     }
     return contextSession;
   }
@@ -361,13 +375,45 @@
   public TaskMgmtSession getTaskMgmtSession() {
     if (taskMgmtSession == null) {
       Session session = getSession();
-      if (session != null) {
-        taskMgmtSession = new TaskMgmtSession(session);
-      }
+      if (session != null) taskMgmtSession = new TaskMgmtSession(session);
     }
     return taskMgmtSession;
   }
 
+  public Object getCustomSession(Class sessionClass) {
+    if (customSessions == null) {
+      customSessions = new IdentityHashMap();
+    }
+    else {
+      Object customSession = customSessions.get(sessionClass);
+      if (customSession != null) return customSession;
+    }
+    try {
+      Constructor constructor = sessionClass.getConstructor(new Class[] { Session.class });
+      try {
+        Object customSession = constructor.newInstance(new Object[] { session });
+        customSessions.put(sessionClass, customSession);
+        return customSession;
+      }
+      catch (InstantiationException e) {
+        throw new JbpmException(sessionClass + " is not instantiable", e);
+      }
+      catch (IllegalAccessException e) {
+        throw new JbpmException(getClass() + " has no access to " + constructor, e);
+      }
+      catch (InvocationTargetException e) {
+        throw new JbpmException(constructor + " threw exception", e.getCause());
+      }
+    }
+    catch (NoSuchMethodException e) {
+      throw new JbpmException("constructor not found: "
+        + sessionClass.getName()
+        + '('
+        + Session.class.getName()
+        + ')', e);
+    }
+  }
+
   public DataSource getDataSource() {
     return persistenceServiceFactory.dataSource;
   }
@@ -413,7 +459,7 @@
    * Injects an external Hibernate session without affecting transaction
    * management.
    * 
-   * @deprecated use {@link #setSession(Session, boolean) setSession(session,
+   * @deprecated call {@link #setSession(Session, boolean) setSession(session,
    * true)} instead
    */
   public void setSessionWithoutDisablingTx(Session session) {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/persistence/db/DbPersistenceServiceFactory.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -39,19 +39,19 @@
 
   private static final long serialVersionUID = 1L;
 
-  Configuration configuration = null;
+  Configuration configuration;
 
-  String sessionFactoryJndiName = null;
-  SessionFactory sessionFactory = null;
+  String sessionFactoryJndiName;
+  SessionFactory sessionFactory;
 
-  String dataSourceJndiName = null;
-  DataSource dataSource = null;
+  String dataSourceJndiName;
+  DataSource dataSource;
 
   boolean isTransactionEnabled = true;
-  boolean isCurrentSessionEnabled = false;
+  boolean isCurrentSessionEnabled;
 
-  SchemaExport schemaExport = null;
-  JbpmSchema jbpmSchema = null;
+  SchemaExport schemaExport;
+  JbpmSchema jbpmSchema;
 
   public Service openService() {
     log.debug("creating persistence service");
@@ -78,7 +78,6 @@
    */
   public synchronized SchemaExport getSchemaExport() {
     if (schemaExport == null) {
-      log.debug("creating schema export");
       schemaExport = new SchemaExport(getConfiguration());
     }
     return schemaExport;
@@ -86,7 +85,6 @@
 
   public synchronized JbpmSchema getJbpmSchema() {
     if (jbpmSchema == null) {
-      log.debug("creating jbpm schema tool");
       jbpmSchema = new JbpmSchema(getConfiguration());
     }
     return jbpmSchema;
@@ -95,12 +93,10 @@
   public synchronized SessionFactory getSessionFactory() {
     if (sessionFactory == null) {
       if (sessionFactoryJndiName != null) {
-        log.debug("looking up hibernate session factory in jndi '" + sessionFactoryJndiName + "'");
+        log.debug("looking up session factory bound to " + sessionFactoryJndiName);
         sessionFactory = (SessionFactory) JndiUtil.lookup(sessionFactoryJndiName, SessionFactory.class);
-
       }
       else {
-        log.debug("building hibernate session factory");
         sessionFactory = getConfiguration().buildSessionFactory();
       }
     }
@@ -108,8 +104,8 @@
   }
 
   public DataSource getDataSource() {
-    if ((dataSource == null) && (dataSourceJndiName != null)) {
-      log.debug("looking up datasource from jndi location '" + dataSourceJndiName + "'");
+    if (dataSource == null && dataSourceJndiName != null) {
+      log.debug("looking up data source bound to " + dataSourceJndiName);
       dataSource = (DataSource) JndiUtil.lookup(dataSourceJndiName, DataSource.class);
     }
     return dataSource;
@@ -140,10 +136,7 @@
   }
 
   public void close() {
-    if (sessionFactory != null) {
-      log.debug("closing hibernate session factory");
-      sessionFactory.close();
-    }
+    if (sessionFactory != null) sessionFactory.close();
   }
 
   public void finalize() throws Throwable {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/Services.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/Services.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/Services.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -156,13 +156,8 @@
   }
 
   public void save(ProcessInstance processInstance, JbpmContext jbpmContext) {
-    if (log.isDebugEnabled()) {
-      if (saveOperations == defaultSaveOperations) {
-        log.debug("executing default save operations");
-      }
-      else {
-        log.debug("executing custom save operations");
-      }
+    if (saveOperations != defaultSaveOperations && log.isDebugEnabled()) {
+      log.debug("executing custom save operations: " + saveOperations);
     }
 
     for (Iterator iter = saveOperations.iterator(); iter.hasNext();) {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/CascadeSaveOperation.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/CascadeSaveOperation.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/CascadeSaveOperation.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,31 +36,32 @@
   private static final long serialVersionUID = 1L;
 
   public void save(ProcessInstance processInstance, JbpmContext jbpmContext) {
-    log.debug("cascading save of '"+processInstance+"'");
     Set cascadedProcessInstances = new HashSet();
     cascadedProcessInstances.add(processInstance);
     cascadeSave(processInstance.removeCascadeProcessInstances(), jbpmContext, cascadedProcessInstances);
   }
 
-  void cascadeSave(Collection cascadeProcessInstances, JbpmContext jbpmContext, Set cascadedProcessInstances) {
-    if (cascadeProcessInstances!=null) {
-      Iterator iter = cascadeProcessInstances.iterator();
-      while (iter.hasNext()) {
+  private void cascadeSave(Collection cascadeProcessInstances, JbpmContext jbpmContext,
+    Set cascadedProcessInstances) {
+    if (cascadeProcessInstances != null) {
+      for (Iterator iter = cascadeProcessInstances.iterator(); iter.hasNext();) {
         ProcessInstance cascadeInstance = (ProcessInstance) iter.next();
         saveCascadeInstance(cascadeInstance, jbpmContext, cascadedProcessInstances);
       }
     }
   }
-  
-  void saveCascadeInstance(ProcessInstance cascadeInstance, JbpmContext jbpmContext, Set cascadedProcessInstances) {
-    if (! cascadedProcessInstances.contains(cascadeInstance)) {
-      Collection cascadeProcessInstances = cascadeInstance.removeCascadeProcessInstances();
-      log.debug("cascading save to process instance '"+cascadeInstance+"'");
+
+  private void saveCascadeInstance(ProcessInstance cascadeInstance, JbpmContext jbpmContext,
+    Set cascadedProcessInstances) {
+    if (!cascadedProcessInstances.contains(cascadeInstance)) {
+      log.debug("cascading save to " + cascadeInstance);
       jbpmContext.save(cascadeInstance);
       cascadedProcessInstances.add(cascadeInstance);
+
+      Collection cascadeProcessInstances = cascadeInstance.removeCascadeProcessInstances();
       cascadeSave(cascadeProcessInstances, jbpmContext, cascadedProcessInstances);
     }
   }
 
-  private static Log log = LogFactory.getLog(CascadeSaveOperation.class);
+  private Log log = LogFactory.getLog(CascadeSaveOperation.class);
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/HibernateSaveOperation.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/HibernateSaveOperation.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/HibernateSaveOperation.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -33,12 +33,13 @@
 
   public void save(ProcessInstance processInstance, JbpmContext jbpmContext) {
     Session session = jbpmContext.getSession();
-    if (session!=null) {
-      log.debug("saving process instance");
+    if (session != null) {
+      log.debug("saving " + processInstance);
       session.save(processInstance);
-    } else {
-      log.debug("ignoring hibernate save.  no session available.");
     }
+    else {
+      log.debug("ignoring hibernate save, no session available");
+    }
   }
 
   private static Log log = LogFactory.getLog(HibernateSaveOperation.class);

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/SaveLogsOperation.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/SaveLogsOperation.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/svc/save/SaveLogsOperation.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -22,6 +22,7 @@
 package org.jbpm.svc.save;
 
 import java.util.Iterator;
+import java.util.List;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -29,7 +30,6 @@
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.graph.exe.Token;
 import org.jbpm.logging.LoggingService;
-import org.jbpm.logging.exe.LoggingInstance;
 import org.jbpm.logging.log.ProcessLog;
 
 public class SaveLogsOperation implements SaveOperation {
@@ -38,25 +38,27 @@
 
   public void save(ProcessInstance processInstance, JbpmContext jbpmContext) {
     LoggingService loggingService = jbpmContext.getServices().getLoggingService();
-    
-    if (loggingService!=null) {
-      LoggingInstance loggingInstance = processInstance.getLoggingInstance();
-      log.debug("flushing logs to logging service.");
-      Iterator iter = loggingInstance.getLogs().iterator();
-      while (iter.hasNext()) {
-        ProcessLog processLog = (ProcessLog) iter.next();
-        Token token = processLog.getToken();
-        if (token!=null) {
-          int index = token.nextLogIndex();
-          processLog.setIndex(index);
+
+    if (loggingService != null) {
+      List logs = processInstance.getLoggingInstance().getLogs();
+      if (!logs.isEmpty()) {
+        log.debug("pushing " + logs.size() + " logs to logging service");
+
+        for (Iterator iter = logs.iterator(); iter.hasNext();) {
+          ProcessLog processLog = (ProcessLog) iter.next();
+          Token token = processLog.getToken();
+          if (token != null) {
+            int index = token.nextLogIndex();
+            processLog.setIndex(index);
+          }
+          loggingService.log(processLog);
         }
-        loggingService.log(processLog);
       }
-      
-    } else {
-      log.debug("ignoring logs.  no logging service available.");
     }
+    else {
+      log.debug("ignoring logs, no logging service available");
+    }
   }
-  
-  private static Log log = LogFactory.getLog(SaveLogsOperation.class);
+
+  private Log log = LogFactory.getLog(SaveLogsOperation.class);
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/taskmgmt/exe/TaskInstance.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/taskmgmt/exe/TaskInstance.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/taskmgmt/exe/TaskInstance.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -591,8 +591,12 @@
     return id;
   }
 
+  /**
+   * @deprecated database identifier is not meant to be mutable
+   * @throws UnsupportedOperationException to prevent invocation
+   */
   public void setId(long id) {
-    this.id = id;
+    throw new UnsupportedOperationException();
   }
 
   public Date getStart() {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/taskmgmt/exe/TaskMgmtInstance.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/taskmgmt/exe/TaskMgmtInstance.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/taskmgmt/exe/TaskMgmtInstance.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -103,8 +103,7 @@
   /**
    * creates an instance of the given task, in the given execution context.
    */
-  public TaskInstance createTaskInstance(Task task,
-      ExecutionContext executionContext) {
+  public TaskInstance createTaskInstance(Task task, ExecutionContext executionContext) {
     // instantiate the new task instance
     TaskInstance taskInstance = instantiateNewTaskInstance(executionContext);
 
@@ -130,10 +129,8 @@
         String durationString = null;
 
         if (dueDateString.startsWith("#")) {
-          String baseDateEL = dueDateString.substring(0,
-              dueDateString.indexOf("}") + 1);
-          Object result = JbpmExpressionEvaluator.evaluate(baseDateEL,
-              executionContext);
+          String baseDateEL = dueDateString.substring(0, dueDateString.indexOf("}") + 1);
+          Object result = JbpmExpressionEvaluator.evaluate(baseDateEL, executionContext);
           if (result instanceof Date) {
             baseDate = (Date) result;
           }
@@ -145,9 +142,7 @@
           }
           int endOfELIndex = dueDateString.indexOf("}");
           if (endOfELIndex < (dueDateString.length() - 1)) {
-            char durationSeparator = dueDateString.substring(endOfELIndex + 1)
-                .trim()
-                .charAt(0);
+            char durationSeparator = dueDateString.substring(endOfELIndex + 1).trim().charAt(0);
             if (durationSeparator != '+' && durationSeparator != '-') {
               throw new JbpmException("'+' or '-' missing after expression");
             }
@@ -179,8 +174,7 @@
         if (task != null) {
           String description = task.getDescription();
           if ((description != null) && (description.indexOf("#{") != -1)) {
-            Object result = JbpmExpressionEvaluator.evaluate(description,
-                executionContext);
+            Object result = JbpmExpressionEvaluator.evaluate(description, executionContext);
             if (result != null) {
               taskInstance.setDescription(result.toString());
             }
@@ -213,8 +207,8 @@
     return taskInstance;
   }
 
-  public SwimlaneInstance getInitializedSwimlaneInstance(
-      ExecutionContext executionContext, Swimlane swimlane) {
+  public SwimlaneInstance getInitializedSwimlaneInstance(ExecutionContext executionContext,
+    Swimlane swimlane) {
     // initialize the swimlane
     if (swimlaneInstances == null) swimlaneInstances = new HashMap();
     SwimlaneInstance swimlaneInstance = (SwimlaneInstance) swimlaneInstances.get(swimlane.getName());
@@ -222,31 +216,26 @@
       swimlaneInstance = new SwimlaneInstance(swimlane);
       addSwimlaneInstance(swimlaneInstance);
       // assign the swimlaneInstance
-      performAssignment(swimlane.getAssignmentDelegation(),
-          swimlane.getActorIdExpression(),
-          swimlane.getPooledActorsExpression(), swimlaneInstance,
-          executionContext);
+      performAssignment(swimlane.getAssignmentDelegation(), swimlane.getActorIdExpression(),
+        swimlane.getPooledActorsExpression(), swimlaneInstance, executionContext);
     }
 
     return swimlaneInstance;
   }
 
-  public void performAssignment(Delegation assignmentDelegation,
-      String actorIdExpression, String pooledActorsExpression,
-      Assignable assignable, ExecutionContext executionContext) {
+  public void performAssignment(Delegation assignmentDelegation, String actorIdExpression,
+    String pooledActorsExpression, Assignable assignable, ExecutionContext executionContext) {
     try {
       if (assignmentDelegation != null) {
-        performAssignmentDelegation(assignmentDelegation, assignable,
-            executionContext);
+        performAssignmentDelegation(assignmentDelegation, assignable, executionContext);
       }
       else {
         if (actorIdExpression != null) {
-          performAssignmentActorIdExpr(actorIdExpression, assignable,
-              executionContext);
+          performAssignmentActorIdExpr(actorIdExpression, assignable, executionContext);
         }
         if (pooledActorsExpression != null) {
           performAssignmentPooledActorsExpr(pooledActorsExpression, assignable,
-              executionContext);
+            executionContext);
         }
       }
     }
@@ -261,11 +250,9 @@
     }
   }
 
-  void performAssignmentDelegation(Delegation assignmentDelegation,
-      Assignable assignable, ExecutionContext executionContext)
-      throws Exception {
-    ClassLoader surroundingClassLoader = Thread.currentThread()
-        .getContextClassLoader();
+  void performAssignmentDelegation(Delegation assignmentDelegation, Assignable assignable,
+    ExecutionContext executionContext) throws Exception {
+    ClassLoader surroundingClassLoader = Thread.currentThread().getContextClassLoader();
     try {
       // set context class loader correctly for delegation class
       // https://jira.jboss.org/jira/browse/JBPM-1448
@@ -277,8 +264,7 @@
       // invoke the assignment handler
       UserCodeInterceptor userCodeInterceptor = UserCodeInterceptorConfig.getUserCodeInterceptor();
       if (userCodeInterceptor != null) {
-        userCodeInterceptor.executeAssignment(assignmentHandler, assignable,
-            executionContext);
+        userCodeInterceptor.executeAssignment(assignmentHandler, assignable, executionContext);
       }
       else {
         assignmentHandler.assign(assignable, executionContext);
@@ -289,31 +275,31 @@
     }
   }
 
-  void performAssignmentActorIdExpr(String actorIdExpression,
-      Assignable assignable, ExecutionContext executionContext) {
-    Object result = JbpmExpressionEvaluator.evaluate(actorIdExpression,
-        executionContext);
+  void performAssignmentActorIdExpr(String actorIdExpression, Assignable assignable,
+    ExecutionContext executionContext) {
+    Object result = JbpmExpressionEvaluator.evaluate(actorIdExpression, executionContext);
     if (result == null) {
-      throw new JbpmException("actor-id expression '" + actorIdExpression
-        + "' returned null");
+      throw new JbpmException("actor-id expression '" + actorIdExpression + "' returned null");
     }
     if (result instanceof String) {
       assignable.setActorId((String) result);
     }
     else {
-      throw new JbpmException("actor-id expression '" + actorIdExpression
-        + "' did not evaluate to string: '" + result);
+      throw new JbpmException("actor-id expression '"
+        + actorIdExpression
+        + "' did not evaluate to string: '"
+        + result);
     }
   }
 
-  void performAssignmentPooledActorsExpr(String pooledActorsExpression,
-      Assignable assignable, ExecutionContext executionContext) {
+  void performAssignmentPooledActorsExpr(String pooledActorsExpression, Assignable assignable,
+    ExecutionContext executionContext) {
     String[] pooledActors = null;
-    Object result = JbpmExpressionEvaluator.evaluate(pooledActorsExpression,
-        executionContext);
+    Object result = JbpmExpressionEvaluator.evaluate(pooledActorsExpression, executionContext);
     if (result == null) {
       throw new JbpmException("pooled-actors expression '"
-        + pooledActorsExpression + "' returned null");
+        + pooledActorsExpression
+        + "' returned null");
     }
 
     if (result instanceof String[]) {
@@ -332,11 +318,10 @@
       pooledActors = (String[]) pooledActorList.toArray(new String[pooledActorList.size()]);
     }
     else {
-      throw new JbpmException(
-          "pooled-actors expression '"
-            + pooledActorsExpression
-            + "' did not evaluate to comma-separated string, collection or string array: "
-            + result);
+      throw new JbpmException("pooled-actors expression '"
+        + pooledActorsExpression
+        + "' did not evaluate to comma-separated string, collection or string array: "
+        + result);
     }
 
     assignable.setPooledActors(pooledActors);
@@ -371,8 +356,10 @@
     if (taskInstances != null) {
       for (Iterator i = taskInstances.iterator(); i.hasNext();) {
         TaskInstance taskInstance = (TaskInstance) i.next();
-        if (!taskInstance.hasEnded() && taskInstance.isBlocking()
-          && token != null && token.equals(taskInstance.getToken())) {
+        if (!taskInstance.hasEnded()
+          && taskInstance.isBlocking()
+          && token != null
+          && token.equals(taskInstance.getToken())) {
           return true;
         }
       }
@@ -464,22 +451,21 @@
 
   public SwimlaneInstance getSwimlaneInstance(String swimlaneName) {
     return swimlaneInstances != null ? (SwimlaneInstance) swimlaneInstances.get(swimlaneName)
-        : null;
+      : null;
   }
 
   public SwimlaneInstance createSwimlaneInstance(String swimlaneName) {
-    Swimlane swimlane = (taskMgmtDefinition != null ? taskMgmtDefinition.getSwimlane(swimlaneName)
-        : null);
-    if (swimlane != null) {
-      return createSwimlaneInstance(swimlane);
+    Swimlane swimlane = taskMgmtDefinition != null ? taskMgmtDefinition.getSwimlane(swimlaneName)
+      : null;
+    if (swimlane == null) {
+      throw new JbpmException("swimlane does not exist: " + swimlaneName);
     }
-    throw new JbpmException("swimlane does not exist: " + swimlaneName);
+    return createSwimlaneInstance(swimlane);
   }
 
   public SwimlaneInstance createSwimlaneInstance(Swimlane swimlane) {
-    if (swimlaneInstances == null) {
-      swimlaneInstances = new HashMap();
-    }
+    if (swimlaneInstances == null) swimlaneInstances = new HashMap();
+
     SwimlaneInstance swimlaneInstance = new SwimlaneInstance(swimlane);
     swimlaneInstance.setTaskMgmtInstance(this);
     swimlaneInstances.put(swimlaneInstance.getName(), swimlaneInstance);

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/util/Semaphore.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/util/Semaphore.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/util/Semaphore.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -7,8 +7,8 @@
  * {@linkplain #acquire acquire} blocks if necessary until a permit is available, and then takes it.
  * Each {@linkplain #release() release} adds a permit, potentially releasing a blocking acquirer.
  * 
- * @see <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Semaphore.html">
- *      <code>java.util.concurrent.Semaphore</code></a>
+ * @see <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/util/concurrent/Semaphore.html"
+ * >java.util.concurrent.Semaphore</a>
  */
 public class Semaphore implements Serializable {
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/resources/hibernate.common.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/resources/hibernate.common.xml	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/resources/hibernate.common.xml	2010-03-18 20:29:41 UTC (rev 6230)
@@ -19,10 +19,10 @@
     <!-- Simple memory-only cache -->
     <property name="hibernate.cache.provider_class">org.hibernate.cache.HashtableCacheProvider</property>
 
-    <!-- SQL rendering properties (begin) -->
+    <!-- SQL rendering properties (begin) ===
     <property name="hibernate.format_sql">true</property>
     <property name="hibernate.use_sql_comments">true</property>
-    <!-- SQL rendering properties (end) -->
+    ==== SQL rendering properties (end) -->
 
     <!-- ############################################ -->
     <!-- # mapping files with external dependencies # -->

Copied: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/JbpmConfigurationTestHelper.java (from rev 6228, jbpm3/branches/jbpm-3.2-soa/modules/core/src/main/java/org/jbpm/JbpmConfigurationTestHelper.java)
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/JbpmConfigurationTestHelper.java	                        (rev 0)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/JbpmConfigurationTestHelper.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -0,0 +1,29 @@
+/*
+ * 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;
+
+public class JbpmConfigurationTestHelper {
+
+  public static JbpmConfiguration getCurrentJbpmConfiguration() {
+    return JbpmConfiguration.getCurrentJbpmConfiguration();
+  }
+}

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/SerializabilityTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/SerializabilityTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/SerializabilityTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -31,68 +31,58 @@
 
 public class SerializabilityTest extends AbstractJbpmTestCase {
 
-  static final String[] excusedClasses = { "org.jbpm.JbpmConfiguration$",
-      "org.jbpm.JbpmConfigurationTestHelper",
-      "org.jbpm.ant.",
-      "org.jbpm.context.exe.JbpmType",
-      "org.jbpm.db.AbstractDbTestCase",
-      "org.jbpm.db.ContextSession",
-      "org.jbpm.db.FileSession",
-      "org.jbpm.db.GraphSession",
-      "org.jbpm.db.JbpmSession",
-      "org.jbpm.db.JbpmSchema",
-      "org.jbpm.db.JobSession",
-      "org.jbpm.db.LoggingSession",
-      "org.jbpm.db.SchedulerSession",
-      "org.jbpm.db.TaskMgmtSession",
-      "org.jbpm.db.compatibility.JbpmSchemaUpdate",
-      "org.jbpm.db.hibernate.JbpmNamingStrategy",
-      "org.jbpm.db.hibernate.MySQLDialect",
-      "org.jbpm.db.hibernate.SybaseDialect",
-      "org.jbpm.db.hibernate.SybaseRowLockDialect",
-      "org.jbpm.graph.action.ActionTypes",
-      "org.jbpm.graph.exe.ExecutionContext",
-      "org.jbpm.graph.node.Fork$ForkedToken",
-      "org.jbpm.graph.node.InterleaveStart$DefaultInterleaver",
-      "org.jbpm.graph.node.NodeTypes",
-      "org.jbpm.graph.node.ProcessFactory",
-      "org.jbpm.instantiation.BeanInstantiator",
-      "org.jbpm.instantiation.ConfigurationPropertyInstantiator",
-      "org.jbpm.instantiation.ConstructorInstantiator",
-      "org.jbpm.instantiation.DefaultInstantiator",
-      "org.jbpm.instantiation.FieldInstantiator",
-      "org.jbpm.instantiation.ProcessClassLoader",
-      "org.jbpm.instantiation.XmlInstantiator",
-      "org.jbpm.job.executor.JobExecutorThread",
-      "org.jbpm.job.executor.LockMonitorThread",
-      "org.jbpm.jpdl.convert.Converter",
-      "org.jbpm.jpdl.el.",
-      "org.jbpm.jpdl.par.FileArchiveParser",
-      "org.jbpm.jpdl.par.JpdlArchiveParser",
-      "org.jbpm.jpdl.par.ProcessArchive",
-      "org.jbpm.jpdl.par.ProcessArchiveDeployer",
-      "org.jbpm.jpdl.par.ProcessArchiveDeployerTask",
-      "org.jbpm.jpdl.xml.JpdlXmlReader",
-      "org.jbpm.jpdl.xml.JpdlXmlWriter",
-      "org.jbpm.security.authenticator.JBossAuthenticator",
-      "org.jbpm.security.authenticator.JbpmDefaultAuthenticator",
-      "org.jbpm.security.authenticator.SubjectAuthenticator",
-      "org.jbpm.security.Authorization",
-      "org.jbpm.security.authorizer.AccessControllerAuthorizer",
-      "org.jbpm.security.authorizer.JbpmIdentityAuthorizer",
-      "org.jbpm.security.authorizer.RolesAuthorizer",
-      "org.jbpm.security.filter.JbpmAuthenticationFilter",
-      "org.jbpm.sim.",
-      "org.jbpm.util.Clock",
-      "org.jbpm.util.CustomLoaderObjectInputStream",
-      "org.jbpm.web.JobExecutorLauncher",
-      "org.jbpm.web.JbpmConfigurationCloser", };
+  static final String[] excusedClasses = {
+    "org.jbpm.JbpmConfiguration$",
+    "org.jbpm.ant.",
+    "org.jbpm.context.exe.JbpmType",
+    "org.jbpm.db.AbstractDbTestCase",
+    "org.jbpm.db.ContextSession",
+    "org.jbpm.db.FileSession",
+    "org.jbpm.db.GraphSession",
+    "org.jbpm.db.JbpmSession",
+    "org.jbpm.db.JbpmSchema",
+    "org.jbpm.db.JobSession",
+    "org.jbpm.db.LoggingSession",
+    "org.jbpm.db.SchedulerSession",
+    "org.jbpm.db.TaskMgmtSession",
+    "org.jbpm.db.compatibility.JbpmSchemaUpdate",
+    "org.jbpm.db.hibernate.JbpmNamingStrategy",
+    "org.jbpm.db.hibernate.MySQLDialect",
+    "org.jbpm.db.hibernate.SybaseDialect",
+    "org.jbpm.db.hibernate.SybaseRowLockDialect",
+    "org.jbpm.graph.action.ActionTypes",
+    "org.jbpm.graph.exe.ExecutionContext",
+    "org.jbpm.graph.node.Fork$ForkedToken",
+    "org.jbpm.graph.node.InterleaveStart$DefaultInterleaver",
+    "org.jbpm.graph.node.NodeTypes",
+    "org.jbpm.graph.node.ProcessFactory",
+    "org.jbpm.instantiation.BeanInstantiator",
+    "org.jbpm.instantiation.ConfigurationPropertyInstantiator",
+    "org.jbpm.instantiation.ConstructorInstantiator",
+    "org.jbpm.instantiation.DefaultInstantiator",
+    "org.jbpm.instantiation.Delegation$CompactXmlWriter",
+    "org.jbpm.instantiation.FieldInstantiator",
+    "org.jbpm.instantiation.ProcessClassLoader",
+    "org.jbpm.instantiation.XmlInstantiator",
+    "org.jbpm.job.executor.JobExecutorThread",
+    "org.jbpm.job.executor.LockMonitorThread",
+    "org.jbpm.jpdl.convert.Converter",
+    "org.jbpm.jpdl.el.",
+    "org.jbpm.jpdl.par.FileArchiveParser",
+    "org.jbpm.jpdl.par.JpdlArchiveParser",
+    "org.jbpm.jpdl.xml.JpdlXmlReader",
+    "org.jbpm.jpdl.xml.JpdlXmlWriter",
+    "org.jbpm.util.Clock$DefaultDateGenerator",
+    "org.jbpm.util.CustomLoaderObjectInputStream",
+    "org.jbpm.web.JobExecutorLauncher",
+    "org.jbpm.web.JbpmConfigurationCloser"
+  };
 
   public void testForNonSerializableClasses() throws URISyntaxException {
     File classDir = new File(ClassLoaderUtil.class.getProtectionDomain()
-        .getCodeSource()
-        .getLocation()
-        .getPath());
+      .getCodeSource()
+      .getLocation()
+      .getPath());
 
     File[] files = classDir.listFiles();
     for (int i = 0; i < files.length; i++) {
@@ -114,8 +104,7 @@
         scanForClasses(file, packageName + '.' + fileName);
       }
       else if (fileName.endsWith(".class")) {
-        String className = packageName + '.'
-            + fileName.substring(0, fileName.length() - 6);
+        String className = packageName + '.' + fileName.substring(0, fileName.length() - 6);
         assertSerializabilityOfClass(className);
       }
     }
@@ -125,8 +114,9 @@
     Class clazz = ClassLoaderUtil.classForName(className);
 
     if (!(Serializable.class.isAssignableFrom(clazz)
-        || Modifier.isAbstract(clazz.getModifiers()) || isAnonymous(clazz)
-        || isUtility(clazz) || isExcused(className))) {
+      || Modifier.isAbstract(clazz.getModifiers())
+      || isAnonymous(clazz)
+      || isUtility(clazz) || isExcused(className))) {
       fail(className + " is NOT Serializable");
     }
   }
@@ -144,7 +134,7 @@
     for (int i = 0; i < methods.length; i++) {
       Method method = methods[i];
       if (!Modifier.isStatic(method.getModifiers())
-          && method.getDeclaringClass() != Object.class) return false;
+        && method.getDeclaringClass() != Object.class) return false;
     }
     return clazz.getConstructors().length == 0;
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/ChangeProcessInstanceVersionCommandTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/ChangeProcessInstanceVersionCommandTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/ChangeProcessInstanceVersionCommandTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -8,7 +8,6 @@
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.graph.exe.Token;
-import org.jbpm.job.Job;
 import org.jbpm.job.Timer;
 import org.jbpm.taskmgmt.exe.TaskInstance;
 
@@ -23,63 +22,50 @@
   private ProcessDefinition pd2;
 
   protected void tearDown() throws Exception {
-    if (pd1 != null && pd2 != null) {
-      newTransaction();
-      // IMPORTANT: The ProcessDefinitions have to be deleted in one transaction,
-      // in the right order (new definition with ProcessInstance first) or the
-      // ProcessInstance has to be deleted first independently.
+    newTransaction();
+    // IMPORTANT: The ProcessDefinitions have to be deleted in one transaction,
+    // in the right order (new definition with ProcessInstance first) or the
+    // ProcessInstance has to be deleted first independently.
 
-      // This is because Logs of the ProcessInstance point to both ProcessDefinitions 
-      // (the old and the new one) but only with the new ProcessDefinition the 
-      // ProcessInstance is deleted
+    // This is because Logs of the ProcessInstance point to both ProcessDefinitions 
+    // (the old and the new one) but only with the new ProcessDefinition the 
+    // ProcessInstance is deleted
 
-      // exceptions look like this: could not delete: [org.jbpm.graph.def.Transition#9]
-      // Integrity constraint violation FK_LOG_TRANSITION table: JBPM_LOG in statement [/* delete org.jbpm.graph.def.Transition */ delete from JBPM_TRANSITION where ID_=?]
-      // or hibernate batch failed
+    // exceptions look like this: could not delete: [org.jbpm.graph.def.Transition#9]
+    // Integrity constraint violation FK_LOG_TRANSITION table: JBPM_LOG in statement [/* delete org.jbpm.graph.def.Transition */ delete from JBPM_TRANSITION where ID_=?]
+    // or hibernate batch failed
 
-      // IMPORTANT: Keep this order of deletions! Otherwise if there is
-      // more than one ProcessInstance for the ProcessDefinition a HibernateSeassion.flush
-      // is called when queriing the seconf ProcessInstance after deleting the first
-      // one which may fire a Integrity constraint violation (same problem as described
-      // above), in this case I got
-      // could not delete: [org.jbpm.taskmgmt.def.TaskMgmtDefinition#2]
-      // Integrity constraint violation FK_TASKMGTINST_TMD table: JBPM_MODULEINSTANCE in statement [/* delete org.jbpm.taskmgmt.def.TaskMgmtDefinition */ delete from JBPM_MODULEDEFINITION where ID_=?]
-      graphSession.deleteProcessDefinition(pd2.getId());
-      graphSession.deleteProcessDefinition(pd1.getId());
-    }
-    else if (pd1 != null) {
-      newTransaction();
-      graphSession.deleteProcessDefinition(pd1.getId());
-    }
-    else if (pd2 != null) {
-      newTransaction();
-      graphSession.deleteProcessDefinition(pd2.getId());
-    }
+    // IMPORTANT: Keep this order of deletions! Otherwise if there is
+    // more than one ProcessInstance for the ProcessDefinition a HibernateSeassion.flush
+    // is called when queriing the seconf ProcessInstance after deleting the first
+    // one which may fire a Integrity constraint violation (same problem as described
+    // above), in this case I got
+    // could not delete: [org.jbpm.taskmgmt.def.TaskMgmtDefinition#2]
+    // Integrity constraint violation FK_TASKMGTINST_TMD table: JBPM_MODULEINSTANCE in statement [/* delete org.jbpm.taskmgmt.def.TaskMgmtDefinition */ delete from JBPM_MODULEDEFINITION where ID_=?]
+    graphSession.deleteProcessDefinition(pd2.getId());
+    graphSession.deleteProcessDefinition(pd1.getId());
 
-    pd1 = null;
-    pd2 = null;
     super.tearDown();
   }
 
   /**
-   * test easy version migration (no fork or other stuff) but with name mapping (different state
-   * name in new process definition)
+   * test easy version migration (no fork or other stuff) but with name mapping
+   * (different state name in new process definition)
    */
   public void testNameMapping() throws Exception {
-    String xmlVersion1 = //
-    "<process-definition name='TestChangeVersion'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition name='state1' to='state1' />"//
-        + "      <transition name='state2' to='state2' />"//
-        + "   </start-state>" //
-        + "   <state name='state1'>" //
-        + "      <transition name='end1' to='end' />" //
-        + "   </state>" //
-        + "   <state name='state2'>" //
-        + "      <transition name='end2' to='end' />" //
-        + "   </state>" //
-        + "   <end-state name='end'/>" //
-        + "</process-definition>";
+    String xmlVersion1 = "<process-definition name='TestChangeVersion'>"
+      + "   <start-state name='start'>"
+      + "      <transition name='state1' to='state1' />"
+      + "      <transition name='state2' to='state2' />"
+      + "   </start-state>"
+      + "   <state name='state1'>"
+      + "      <transition name='end1' to='end' />"
+      + "   </state>"
+      + "   <state name='state2'>"
+      + "      <transition name='end2' to='end' />"
+      + "   </state>"
+      + "   <end-state name='end'/>"
+      + "</process-definition>";
 
     pd1 = ProcessDefinition.parseXmlString(xmlVersion1);
     jbpmContext.deployProcessDefinition(pd1);
@@ -90,40 +76,39 @@
     ProcessInstance pi2 = jbpmContext.newProcessInstance("TestChangeVersion");
     pi2.signal("state2");
 
-    String xmlVersion2 = //
-    "<process-definition name='TestChangeVersion'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition name='state1' to='state1' />"//
-        + "      <transition name='state2' to='state2b'/>"//
-        + "   </start-state>" //
-        + "   <state name='state1'>" //
-        + "      <transition name='end1' to='end' />" //
-        + "   </state>" //
-        + "   <state name='state2b'>" //
-        + "      <transition name='end2b' to='end' />" //
-        + "   </state>" //
-        + "   <end-state name='end' />" //
-        + "</process-definition>";
+    String xmlVersion2 = "<process-definition name='TestChangeVersion'>"
+      + "   <start-state name='start'>"
+      + "      <transition name='state1' to='state1' />"
+      + "      <transition name='state2' to='state2b'/>"
+      + "   </start-state>"
+      + "   <state name='state1'>"
+      + "      <transition name='end1' to='end' />"
+      + "   </state>"
+      + "   <state name='state2b'>"
+      + "      <transition name='end2b' to='end' />"
+      + "   </state>"
+      + "   <end-state name='end' />"
+      + "</process-definition>";
 
     pd2 = ProcessDefinition.parseXmlString(xmlVersion2);
     jbpmContext.deployProcessDefinition(pd2);
-    pd2 = graphSession.findLatestProcessDefinition("TestChangeVersion");
 
     // now change all process instances to most current version
     try {
       new ChangeProcessInstanceVersionCommand().processName("TestChangeVersion").execute(
-          jbpmContext);
+        jbpmContext);
       fail("Exception expected, saying that state2 is missing in new version");
     }
     catch (JbpmException ex) {
-      assertEquals("node with name 'state2' not found in new process definition", ex.getMessage());
+      assertEquals("node with name 'state2' not found in new process definition",
+        ex.getMessage());
     }
 
     HashMap nameMap = new HashMap();
     nameMap.put("state2", "state2b");
     // now supply a mapping for the missing node
     new ChangeProcessInstanceVersionCommand().nodeNameMapping(nameMap).processName(
-        "TestChangeVersion").execute(jbpmContext);
+      "TestChangeVersion").execute(jbpmContext);
 
     newTransaction();
     pi1 = graphSession.loadProcessInstance(pi1.getId());
@@ -149,30 +134,29 @@
   }
 
   /**
-   * check that update of nodes work correctly if a fork was involved and multiple child tokens
-   * exist
+   * check that update of nodes work correctly if a fork was involved and
+   * multiple child tokens exist
    */
   public void testSubTokensInFork() throws Exception {
-    String xmlVersion1 = //
-    "<process-definition name='TestChangeVersion'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition to='fork' />" //
-        + "   </start-state>" //
-        + "   <fork name='fork'>" //
-        + "      <transition name='path1' to='path1' />" //
-        + "      <transition name='path2' to='path2' />" //
-        + "   </fork>" //
-        + "   <state name='path1'>" //
-        + "      <transition to='join' />" //
-        + "   </state>" //
-        + "   <state name='path2'>" //
-        + "      <transition to='join' />" //
-        + "   </state>" //
-        + "   <join name='join'>" //
-        + "      <transition to='end' />" //
-        + "   </join>" //
-        + "   <end-state name='end' />" //
-        + "</process-definition>";
+    String xmlVersion1 = "<process-definition name='TestChangeVersion'>"
+      + "   <start-state name='start'>"
+      + "      <transition to='fork' />"
+      + "   </start-state>"
+      + "   <fork name='fork'>"
+      + "      <transition name='path1' to='path1' />"
+      + "      <transition name='path2' to='path2' />"
+      + "   </fork>"
+      + "   <state name='path1'>"
+      + "      <transition to='join' />"
+      + "   </state>"
+      + "   <state name='path2'>"
+      + "      <transition to='join' />"
+      + "   </state>"
+      + "   <join name='join'>"
+      + "      <transition to='end' />"
+      + "   </join>"
+      + "   <end-state name='end' />"
+      + "</process-definition>";
 
     pd1 = ProcessDefinition.parseXmlString(xmlVersion1);
     jbpmContext.deployProcessDefinition(pd1);
@@ -183,44 +167,45 @@
     Token t1 = pi1.getRootToken().getChild("path1");
     Token t2 = pi1.getRootToken().getChild("path2");
 
-    String xmlVersion2 = //
-    "<process-definition name='TestChangeVersion'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition to='fork' />" //
-        + "   </start-state>" //
-        + "   <fork name='fork'>" //
-        + "      <transition name='path1' to='path1' />" //
-        + "      <transition name='path2' to='path2b' />" //
-        + "   </fork>" //
-        + "   <state name='path1'>" //
-        + "      <transition to='join' />" //
-        + "   </state>" //
-        + "   <state name='path2b'>" //
-        + "      <transition name='2b' to='join' />" //
-        + "   </state>" //
-        + "   <join name='join'>" //
-        + "      <transition to='end' />" //
-        + "   </join>" //
-        + "   <end-state name='end' />" //
-        + "</process-definition>";
+    String xmlVersion2 = "<process-definition name='TestChangeVersion'>"
+      + "   <start-state name='start'>"
+      + "      <transition to='fork' />"
+      + "   </start-state>"
+      + "   <fork name='fork'>"
+      + "      <transition name='path1' to='path1' />"
+      + "      <transition name='path2' to='path2b' />"
+      + "   </fork>"
+      + "   <state name='path1'>"
+      + "      <transition to='join' />"
+      + "   </state>"
+      + "   <state name='path2b'>"
+      + "      <transition name='2b' to='join' />"
+      + "   </state>"
+      + "   <join name='join'>"
+      + "      <transition to='end' />"
+      + "   </join>"
+      + "   <end-state name='end' />"
+      + "</process-definition>";
 
-    jbpmContext.deployProcessDefinition(ProcessDefinition.parseXmlString(xmlVersion2));
-    pd2 = graphSession.findLatestProcessDefinition("TestChangeVersion");
+    pd2 = ProcessDefinition.parseXmlString(xmlVersion2);
+    jbpmContext.deployProcessDefinition(pd2);
 
     // now change all process instances to most current version
     try {
-      new ChangeProcessInstanceVersionCommand().processInstanceId(pi1.getId()).execute(jbpmContext);
+      new ChangeProcessInstanceVersionCommand().processInstanceId(pi1.getId()).execute(
+        jbpmContext);
       fail("Exception expected, saying that phase2 is missing in new version");
     }
     catch (JbpmException ex) {
-      assertEquals("node with name 'path2' not found in new process definition", ex.getMessage());
+      assertEquals("node with name 'path2' not found in new process definition",
+        ex.getMessage());
     }
 
     HashMap nameMap = new HashMap();
     nameMap.put("path2", "path2b");
     // now supply a mapping for the missing node
     new ChangeProcessInstanceVersionCommand().nodeNameMapping(nameMap).processInstanceId(
-        pi1.getId()).execute(jbpmContext);
+      pi1.getId()).execute(jbpmContext);
 
     newTransaction();
 
@@ -240,28 +225,27 @@
   }
 
   public void testTaskInFork() throws Exception {
-    String xmlVersion1 = //
-    "<process-definition name='TestChangeVersion'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition to='fork' />" //
-        + "   </start-state>" //
-        + "   <fork name='fork'>" //
-        + "      <transition name='path1' to='task1' />" //
-        + "      <transition name='path2' to='task2' />" //
-        + "   </fork>" //
-        + "   <task-node name='task1'>" //
-        + "      <task name='theTask1' />" //
-        + "      <transition to='join' />" //
-        + "   </task-node>" //
-        + "   <task-node name='task2'>" //
-        + "      <task name='theTask2' />" //
-        + "      <transition to='join' />" //
-        + "   </task-node>" //
-        + "   <join name='join'>" //
-        + "      <transition to='end' />" //
-        + "   </join>" //
-        + "   <end-state name='end' />" //
-        + "</process-definition>";
+    String xmlVersion1 = "<process-definition name='TestChangeVersion'>"
+      + "   <start-state name='start'>"
+      + "      <transition to='fork' />"
+      + "   </start-state>"
+      + "   <fork name='fork'>"
+      + "      <transition name='path1' to='task1' />"
+      + "      <transition name='path2' to='task2' />"
+      + "   </fork>"
+      + "   <task-node name='task1'>"
+      + "      <task name='theTask1' />"
+      + "      <transition to='join' />"
+      + "   </task-node>"
+      + "   <task-node name='task2'>"
+      + "      <task name='theTask2' />"
+      + "      <transition to='join' />"
+      + "   </task-node>"
+      + "   <join name='join'>"
+      + "      <transition to='end' />"
+      + "   </join>"
+      + "   <end-state name='end' />"
+      + "</process-definition>";
 
     pd1 = ProcessDefinition.parseXmlString(xmlVersion1);
     jbpmContext.deployProcessDefinition(pd1);
@@ -272,31 +256,30 @@
     Token t1 = pi1.getRootToken().getChild("path1");
     Token t2 = pi1.getRootToken().getChild("path2");
 
-    String xmlVersion2 = //
-    "<process-definition name='TestChangeVersion'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition to='fork' />" //
-        + "   </start-state>" //
-        + "   <fork name='fork'>" //
-        + "      <transition name='path1' to='task1' />" //
-        + "      <transition name='path2' to='task2' />" //
-        + "   </fork>" //
-        + "   <task-node name='task1b'>" //
-        + "      <task name='theTask1b' />" //
-        + "      <transition to='join' />" //
-        + "   </task-node>" //
-        + "   <task-node name='task2b'>" //
-        + "      <task name='theTask2b' />" //
-        + "      <transition to='join' />" //
-        + "   </task-node>" //
-        + "   <join name='join'>" //
-        + "      <transition to='end' />" //
-        + "   </join>" //
-        + "   <end-state name='end' />" //
-        + "</process-definition>";
+    String xmlVersion2 = "<process-definition name='TestChangeVersion'>"
+      + "   <start-state name='start'>"
+      + "      <transition to='fork' />"
+      + "   </start-state>"
+      + "   <fork name='fork'>"
+      + "      <transition name='path1' to='task1' />"
+      + "      <transition name='path2' to='task2' />"
+      + "   </fork>"
+      + "   <task-node name='task1b'>"
+      + "      <task name='theTask1b' />"
+      + "      <transition to='join' />"
+      + "   </task-node>"
+      + "   <task-node name='task2b'>"
+      + "      <task name='theTask2b' />"
+      + "      <transition to='join' />"
+      + "   </task-node>"
+      + "   <join name='join'>"
+      + "      <transition to='end' />"
+      + "   </join>"
+      + "   <end-state name='end' />"
+      + "</process-definition>";
 
-    jbpmContext.deployProcessDefinition(ProcessDefinition.parseXmlString(xmlVersion2));
-    pd2 = graphSession.findLatestProcessDefinition("TestChangeVersion");
+    pd2 = ProcessDefinition.parseXmlString(xmlVersion2);
+    jbpmContext.deployProcessDefinition(pd2);
 
     HashMap nodeNameMap = new HashMap();
     nodeNameMap.put("task1", "task1b");
@@ -307,7 +290,7 @@
 
     // now supply a mapping for the missing node
     new ChangeProcessInstanceVersionCommand().nodeNameMapping(nodeNameMap).taskNameMapping(
-        taskNameMap).processInstanceId(pi1.getId()).execute(jbpmContext);
+      taskNameMap).processInstanceId(pi1.getId()).execute(jbpmContext);
 
     newTransaction();
 
@@ -315,33 +298,38 @@
     assertEquals(pd2.getNode("task1b").getId(), t1.getNode().getId());
 
     Iterator taskInstanceIter = t1.getProcessInstance()
-        .getTaskMgmtInstance()
-        .getTaskInstances()
-        .iterator();
+      .getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator();
     TaskInstance ti1 = (TaskInstance) taskInstanceIter.next();
     if ("theTask2b".equals(ti1.getTask().getName())) {
       // this was the wrong one
       ti1 = (TaskInstance) taskInstanceIter.next();
     }
     assertEquals("theTask1b", ti1.getTask().getName());
-    assertEquals(pd2.getTaskMgmtDefinition().getTask("theTask1b").getId(), ti1.getTask().getId());
+    assertEquals(pd2.getTaskMgmtDefinition().getTask("theTask1b").getId(), ti1.getTask()
+      .getId());
 
     ti1.end();
 
-    ///////
+    // /////
     newTransaction();
 
     t2 = graphSession.getToken(t2.getId());
     assertEquals(pd2.getNode("task2b").getId(), t2.getNode().getId());
 
-    taskInstanceIter = t2.getProcessInstance().getTaskMgmtInstance().getTaskInstances().iterator();
+    taskInstanceIter = t2.getProcessInstance()
+      .getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator();
     TaskInstance ti2 = (TaskInstance) taskInstanceIter.next();
     if ("theTask1b".equals(ti2.getTask().getName())) {
       // this was the wrong one
       ti2 = (TaskInstance) taskInstanceIter.next();
     }
     assertEquals("theTask2b", ti2.getTask().getName());
-    assertEquals(pd2.getTaskMgmtDefinition().getTask("theTask2b").getId(), ti2.getTask().getId());
+    assertEquals(pd2.getTaskMgmtDefinition().getTask("theTask2b").getId(), ti2.getTask()
+      .getId());
 
     ti2.end();
 
@@ -353,30 +341,26 @@
     closeJbpmContext();
   }
 
-  public void testSubProcesses() {
-
-  }
-
   /**
-   * check, that TaskInstances work (TaskInstance reference to Task has to be adjusted as will)
+   * check, that TaskInstances work (TaskInstance reference to Task has to be
+   * adjusted as will)
    */
   public void testTaskInstances() throws Exception {
-    String xmlVersion1 = //
-    "<process-definition name='testTaskInstances'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition name='path1' to='task1' />"//
-        + "      <transition name='path2' to='task2' />"//
-        + "   </start-state>" //
-        + "   <task-node name='task1'>" //
-        + "      <task name='theTask1'/>" //
-        + "      <transition name='end1' to='end' />" //
-        + "   </task-node>" //
-        + "   <task-node name='task2'>" //
-        + "      <task name='theTask2'/>" //
-        + "      <transition name='end2' to='end' />" //
-        + "   </task-node>" //
-        + "   <end-state name='end'/>" //
-        + "</process-definition>";
+    String xmlVersion1 = "<process-definition name='testTaskInstances'>"
+      + "   <start-state name='start'>"
+      + "      <transition name='path1' to='task1' />"
+      + "      <transition name='path2' to='task2' />"
+      + "   </start-state>"
+      + "   <task-node name='task1'>"
+      + "      <task name='theTask1'/>"
+      + "      <transition name='end1' to='end' />"
+      + "   </task-node>"
+      + "   <task-node name='task2'>"
+      + "      <task name='theTask2'/>"
+      + "      <transition name='end2' to='end' />"
+      + "   </task-node>"
+      + "   <end-state name='end'/>"
+      + "</process-definition>";
 
     pd1 = ProcessDefinition.parseXmlString(xmlVersion1);
     jbpmContext.deployProcessDefinition(pd1);
@@ -387,53 +371,50 @@
     ProcessInstance pi2 = jbpmContext.newProcessInstance("testTaskInstances");
     pi2.signal("path2");
 
-    String xmlVersion2 = //
-    "<process-definition name='testTaskInstances'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition name='path1' to='task1' />"//
-        + "      <transition name='path2' to='task2b' />"//
-        + "   </start-state>" //
-        + "   <task-node name='task1'>" //
-        + "      <task name='theTask1'/>" //
-        + "      <transition name='end1' to='end' />" //
-        + "   </task-node>" //
-        + "   <task-node name='task2b'>" //
-        + "      <task name='theTask2b'/>" //
-        + "      <transition name='end2b' to='end' />" //
-        + "   </task-node>" //
-        + "   <end-state name='end'/>" //
-        + "</process-definition>";
+    String xmlVersion2 = "<process-definition name='testTaskInstances'>"
+      + "   <start-state name='start'>"
+      + "      <transition name='path1' to='task1' />"
+      + "      <transition name='path2' to='task2b' />"
+      + "   </start-state>"
+      + "   <task-node name='task1'>"
+      + "      <task name='theTask1'/>"
+      + "      <transition name='end1' to='end' />"
+      + "   </task-node>"
+      + "   <task-node name='task2b'>"
+      + "      <task name='theTask2b'/>"
+      + "      <transition name='end2b' to='end' />"
+      + "   </task-node>"
+      + "   <end-state name='end'/>"
+      + "</process-definition>";
 
     pd2 = ProcessDefinition.parseXmlString(xmlVersion2);
     jbpmContext.deployProcessDefinition(pd2);
-    pd2 = graphSession.findLatestProcessDefinition("testTaskInstances");
 
-    // process instance 1 can me updated, state names haven't changed in this path:
-    new ChangeProcessInstanceVersionCommand().processInstanceId(pi1.getId()).execute(jbpmContext);
+    // process instance 1 can be updated, state names haven't changed
+    new ChangeProcessInstanceVersionCommand().processInstanceId(pi1.getId()).execute(
+      jbpmContext);
 
     HashMap nameMap = new HashMap();
     nameMap.put("task2", "task2b");
 
     // now change all process instances to most current version
     try {
-      new ChangeProcessInstanceVersionCommand().nodeNameMapping(nameMap)
-          .taskNameMapping(nameMap)
-          .processName("testTaskInstances")
-          .execute(jbpmContext);
+      new ChangeProcessInstanceVersionCommand().nodeNameMapping(nameMap).taskNameMapping(
+        nameMap).processName("testTaskInstances").execute(jbpmContext);
       // fail because task2 is not mapped
       fail("Exception expected, saying that theTask2b is missing in new version");
     }
     catch (JbpmException ex) {
       assertEquals("Task 'theTask2' for node 'task2b' not found in new process definition",
-          ex.getMessage());
+        ex.getMessage());
     }
 
     // now supply a mapping for the missing task
     nameMap.put("theTask2", "theTask2b");
     new ChangeProcessInstanceVersionCommand().nodeNameMapping(nameMap)
-        .taskNameMapping(nameMap)
-        .processName("testTaskInstances")
-        .execute(jbpmContext);
+      .taskNameMapping(nameMap)
+      .processName("testTaskInstances")
+      .execute(jbpmContext);
 
     newTransaction();
 
@@ -444,16 +425,17 @@
     assertEquals(pd2.getNode("task2b").getId(), pi2.getRootToken().getNode().getId());
 
     TaskInstance ti1 = (TaskInstance) pi1.getTaskMgmtInstance()
-        .getTaskInstances()
-        .iterator()
-        .next();
+      .getTaskInstances()
+      .iterator()
+      .next();
     TaskInstance ti2 = (TaskInstance) pi2.getTaskMgmtInstance()
-        .getTaskInstances()
-        .iterator()
-        .next();
+      .getTaskInstances()
+      .iterator()
+      .next();
 
     assertEquals(pd2.getTaskMgmtDefinition().getTask("theTask1").getId(), ti1.getTask().getId());
-    assertEquals(pd2.getTaskMgmtDefinition().getTask("theTask2b").getId(), ti2.getTask().getId());
+    assertEquals(pd2.getTaskMgmtDefinition().getTask("theTask2b").getId(), ti2.getTask()
+      .getId());
 
     ti1.end("end1");
     ti2.end("end2b");
@@ -465,22 +447,21 @@
   }
 
   /**
-   * test if changing process version works correctly if a timer is included in the process
-   * definition. Important: The timer itself IS NOT changed, so e.g. used leaving transitions must
-   * be still existent
+   * test if changing process version works correctly if a timer is included in
+   * the process definition. Important: The timer itself IS NOT changed, so e.g.
+   * used leaving transitions must be still existent
    */
   public void testTimerInState() throws Exception {
-    String xmlVersion1 = //
-    "<process-definition name='TestChangeVersion'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition to='timer1' />"//
-        + "   </start-state>" //
-        + "   <state name='timer1'>" //
-        + "      <timer name='timer1' duedate='5 seconds' transition='end' />" //
-        + "      <transition name='end' to='end' />" //
-        + "   </state>" //
-        + "   <end-state name='end'/>" //
-        + "</process-definition>";
+    String xmlVersion1 = "<process-definition name='TestChangeVersion'>"
+      + "   <start-state name='start'>"
+      + "      <transition to='timer1' />"
+      + "   </start-state>"
+      + "   <state name='timer1'>"
+      + "      <timer name='timer1' duedate='5 seconds' transition='end' />"
+      + "      <transition name='end' to='end' />"
+      + "   </state>"
+      + "   <end-state name='end'/>"
+      + "</process-definition>";
 
     pd1 = ProcessDefinition.parseXmlString(xmlVersion1);
     jbpmContext.deployProcessDefinition(pd1);
@@ -495,26 +476,25 @@
     assertEquals("timer1", timer.getName());
     assertEquals(pd1.getNode("timer1").getId(), timer.getGraphElement().getId());
 
-    String xmlVersion2 = //
-    "<process-definition name='TestChangeVersion'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition to='timer2' />"//
-        + "   </start-state>" //
-        + "   <state name='timer2'>" //
-        + "      <timer name='timer1' duedate='5 seconds' transition='end1' />" //
-        + "      <transition name='end' to='end' />" //
-        + "   </state>" //
-        + "   <end-state name='end'/>" //
-        + "</process-definition>";
+    String xmlVersion2 = "<process-definition name='TestChangeVersion'>"
+      + "   <start-state name='start'>"
+      + "      <transition to='timer2' />"
+      + "   </start-state>"
+      + "   <state name='timer2'>"
+      + "      <timer name='timer1' duedate='5 seconds' transition='end1' />"
+      + "      <transition name='end' to='end' />"
+      + "   </state>"
+      + "   <end-state name='end'/>"
+      + "</process-definition>";
 
-    jbpmContext.deployProcessDefinition(ProcessDefinition.parseXmlString(xmlVersion2));
-    pd2 = graphSession.findLatestProcessDefinition("TestChangeVersion");
+    pd2 = ProcessDefinition.parseXmlString(xmlVersion2);
+    jbpmContext.deployProcessDefinition(pd2);
 
     // change version
     HashMap nameMap = new HashMap();
     nameMap.put("timer1", "timer2");
     new ChangeProcessInstanceVersionCommand().nodeNameMapping(nameMap).processInstanceId(
-        pi1.getId()).execute(jbpmContext);
+      pi1.getId()).execute(jbpmContext);
 
     // load changed stuff
     newTransaction();
@@ -533,19 +513,18 @@
   }
 
   public void testTimerInTask() throws Exception {
-    String xmlVersion1 = //
-    "<process-definition name='TestChangeVersion'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition to='timer1' />"//
-        + "   </start-state>" //
-        + "   <task-node name='timer1'>" //
-        + "      <task name='myTask'>" //
-        + "        <timer name='timer1' duedate='5 seconds' transition='end' />" //
-        + "      </task>" //
-        + "      <transition name='end' to='end' />" //
-        + "   </task-node>" //
-        + "   <end-state name='end'/>" //
-        + "</process-definition>";
+    String xmlVersion1 = "<process-definition name='TestChangeVersion'>"
+      + "   <start-state name='start'>"
+      + "      <transition to='timer1' />"
+      + "   </start-state>"
+      + "   <task-node name='timer1'>"
+      + "      <task name='myTask'>"
+      + "        <timer name='timer1' duedate='5 seconds' transition='end' />"
+      + "      </task>"
+      + "      <transition name='end' to='end' />"
+      + "   </task-node>"
+      + "   <end-state name='end'/>"
+      + "</process-definition>";
 
     pd1 = ProcessDefinition.parseXmlString(xmlVersion1);
     jbpmContext.deployProcessDefinition(pd1);
@@ -553,46 +532,45 @@
     // start instance
     ProcessInstance pi1 = jbpmContext.newProcessInstance("TestChangeVersion");
     pi1.signal();
-    //    jbpmContext.getJobSession().deleteJobsForProcessInstance(processInstance);
-    //    NOT UNIQUE?!
+    // jbpmContext.getJobSession().deleteJobsForProcessInstance(processInstance);
+    // NOT UNIQUE?!
     Timer timer = (Timer) session.createQuery("from org.jbpm.job.Timer").uniqueResult();
 
     // check timer
     assertNotNull("Timer is null", timer);
     assertEquals("timer1", timer.getName());
     assertEquals(pd1.getTaskMgmtDefinition().getTask("myTask").getId(), timer.getGraphElement()
-        .getId());
+      .getId());
     TaskInstance ti1 = (TaskInstance) pi1.getTaskMgmtInstance()
-        .getTaskInstances()
-        .iterator()
-        .next();
+      .getTaskInstances()
+      .iterator()
+      .next();
     assertEquals(pd1.getTaskMgmtDefinition().getTask("myTask").getId(), ti1.getTask().getId());
 
-    String xmlVersion2 = //
-    "<process-definition name='TestChangeVersion'>" //
-        + "   <start-state name='start'>" //
-        + "      <transition to='timer2' />"//
-        + "   </start-state>" //
-        + "   <task-node name='timer2'>" //
-        + "      <task name='myTask2'>" //
-        + "        <timer name='timer1' duedate='5 seconds' transition='end' />" //
-        + "      </task>" //
-        + "      <transition name='end' to='end' />" //
-        + "   </task-node>" //
-        + "   <end-state name='end'/>" //
-        + "</process-definition>";
+    String xmlVersion2 = "<process-definition name='TestChangeVersion'>"
+      + "   <start-state name='start'>"
+      + "      <transition to='timer2' />"
+      + "   </start-state>"
+      + "   <task-node name='timer2'>"
+      + "      <task name='myTask2'>"
+      + "        <timer name='timer1' duedate='5 seconds' transition='end' />"
+      + "      </task>"
+      + "      <transition name='end' to='end' />"
+      + "   </task-node>"
+      + "   <end-state name='end'/>"
+      + "</process-definition>";
 
-    jbpmContext.deployProcessDefinition(ProcessDefinition.parseXmlString(xmlVersion2));
-    pd2 = graphSession.findLatestProcessDefinition("TestChangeVersion");
+    pd2 = ProcessDefinition.parseXmlString(xmlVersion2);
+    jbpmContext.deployProcessDefinition(pd2);
 
     // change version
     HashMap nameMap = new HashMap();
     nameMap.put("timer1", "timer2");
     nameMap.put("myTask", "myTask2");
     new ChangeProcessInstanceVersionCommand().nodeNameMapping(nameMap)
-        .taskNameMapping(nameMap)
-        .processInstanceId(pi1.getId())
-        .execute(jbpmContext);
+      .taskNameMapping(nameMap)
+      .processInstanceId(pi1.getId())
+      .execute(jbpmContext);
 
     // load changed stuff
     newTransaction();
@@ -602,8 +580,8 @@
     // and check again
     assertEquals(pd2.getNode("timer2").getId(), pi1.getRootToken().getNode().getId());
     assertEquals("timer1", timer.getName());
-    assertEquals(pd2.getTaskMgmtDefinition().getTask("myTask2").getId(), timer.getGraphElement()
-        .getId());
+    assertEquals(pd2.getTaskMgmtDefinition().getTask("myTask2").getId(),
+      timer.getGraphElement().getId());
     ti1 = (TaskInstance) pi1.getTaskMgmtInstance().getTaskInstances().iterator().next();
     assertEquals(pd2.getTaskMgmtDefinition().getTask("myTask2").getId(), ti1.getTask().getId());
 
@@ -614,16 +592,9 @@
     assertTrue(pi1.hasEnded());
   }
 
-  public void testTimerInProcessDefinition() throws Exception {
-    // TODO
-  }
-
-  /**
-   * Asynchronous continuation is not affected by changing the version, because a {@link Job} only
-   * holds {@link ProcessInstance}.id, {@link Token}.id or {@link TaskInstance}.id. None of them are
-   * changed while version changes.
+  /*
+   * Asynchronous continuation is not affected by changing the version, because
+   * a {@link Job} only holds {@link ProcessInstance}.id, {@link Token}.id or
+   * {@link TaskInstance}.id. None of them are changed while version changes.
    */
-  public void notestAsync() {
-  }
-
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/ProcessInstanceCommandTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/ProcessInstanceCommandTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/ProcessInstanceCommandTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,41 +36,35 @@
       + "   <end-state name='end' />"
       + "</process-definition>";
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(xml);
-    jbpmContext.deployProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = processDefinition.createProcessInstance();
-      processInstance.signal();
+    ProcessInstance processInstance = processDefinition.createProcessInstance();
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
-      assert !processInstance.hasEnded() : processInstance;
+    processInstance = saveAndReload(processInstance);
+    assert !processInstance.hasEnded() : processInstance;
 
-      Token rootToken = processInstance.getRootToken();
-      assertEquals("fork", rootToken.getNode().getName());
-      for (Iterator iterator = rootToken.getChildren().values().iterator(); iterator.hasNext();) {
-        Token childToken = (Token) iterator.next();
-        assert !childToken.hasEnded() : childToken;
-      }
+    Token rootToken = processInstance.getRootToken();
+    assertEquals("fork", rootToken.getNode().getName());
+    for (Iterator iterator = rootToken.getChildren().values().iterator(); iterator.hasNext();) {
+      Token childToken = (Token) iterator.next();
+      assert !childToken.hasEnded() : childToken;
+    }
 
-      // execute CancelProcessInstanceCommand
-      new CancelProcessInstanceCommand(processInstance.getId()).execute(jbpmContext);
+    // execute CancelProcessInstanceCommand
+    new CancelProcessInstanceCommand(processInstance.getId()).execute(jbpmContext);
 
-      // and verify it is canceled
-      assert rootToken.hasEnded() : processInstance;
-      assertEquals("fork", rootToken.getNode().getName());
-      for (Iterator iterator = rootToken.getChildren().values().iterator(); iterator.hasNext();) {
-        Token childToken = (Token) iterator.next();
-        assert childToken.hasEnded() : childToken;
-      }
+    // and verify it is canceled
+    assert rootToken.hasEnded() : processInstance;
+    assertEquals("fork", rootToken.getNode().getName());
+    for (Iterator iterator = rootToken.getChildren().values().iterator(); iterator.hasNext();) {
+      Token childToken = (Token) iterator.next();
+      assert childToken.hasEnded() : childToken;
     }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
   }
 
   public void testSuspendResumeProcessInstanceCommand() throws Exception {
-    String xml = "<?xml version='1.0' encoding='UTF-8'?>"
+    String xml = "<?xml version='1.0'?>"
       + "<process-definition name='TestException'>"
       + "   <start-state name='start'>"
       + "      <transition to='fork' />"
@@ -91,70 +85,64 @@
       + "   <end-state name='end' />"
       + "</process-definition>";
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(xml);
-    jbpmContext.deployProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = processDefinition.createProcessInstance();
-      processInstance.signal();
+    ProcessInstance processInstance = processDefinition.createProcessInstance();
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
-      assert !processInstance.isSuspended() : processInstance;
+    processInstance = saveAndReload(processInstance);
+    assert !processInstance.isSuspended() : processInstance;
 
-      Token rootToken = processInstance.getRootToken();
-      assert !rootToken.isSuspended() : rootToken;
-      assertEquals("fork", rootToken.getNode().getName());
-      for (Iterator iterator = rootToken.getChildren().values().iterator(); iterator.hasNext();) {
-        Token childToken = (Token) iterator.next();
-        assert !childToken.isSuspended() : childToken;
-      }
+    Token rootToken = processInstance.getRootToken();
+    assert !rootToken.isSuspended() : rootToken;
+    assertEquals("fork", rootToken.getNode().getName());
+    for (Iterator iterator = rootToken.getChildren().values().iterator(); iterator.hasNext();) {
+      Token childToken = (Token) iterator.next();
+      assert !childToken.isSuspended() : childToken;
+    }
 
-      // execute SuspendProcessInstanceCommand
-      new SuspendProcessInstanceCommand().processInstanceId(
-          processInstance.getId()).execute(jbpmContext);
+    // execute SuspendProcessInstanceCommand
+    new SuspendProcessInstanceCommand().processInstanceId(
+      processInstance.getId()).execute(jbpmContext);
 
-      // and verify
-      assert processInstance.isSuspended() : processInstance;
-      assert rootToken.isSuspended() : rootToken;
-      assertEquals("fork", rootToken.getNode().getName());
-      for (Iterator iterator = rootToken.getChildren().values().iterator(); iterator.hasNext();) {
-        Token childToken = (Token) iterator.next();
-        assert childToken.isSuspended() : childToken;
+    // and verify
+    assert processInstance.isSuspended() : processInstance;
+    assert rootToken.isSuspended() : rootToken;
+    assertEquals("fork", rootToken.getNode().getName());
+    for (Iterator iterator = rootToken.getChildren().values().iterator(); iterator.hasNext();) {
+      Token childToken = (Token) iterator.next();
+      assert childToken.isSuspended() : childToken;
 
-        try {
-          childToken.signal();
-          fail("signal should not be accepted on suspended token");
-        }
-        catch (JbpmException ex) {
-          // token is suspended
-          assert ex.getMessage().indexOf("suspended") != 0 : ex.getMessage();
-        }
-      }
-
-      // execute ResumeProcessInstanceCommand
-      new ResumeProcessInstanceCommand().processInstanceId(
-          processInstance.getId()).execute(jbpmContext);
-
-      // and verify
-      assert !processInstance.isSuspended() : processInstance;
-      assert !rootToken.isSuspended() : rootToken;
-      for (Iterator iter = rootToken.getChildren().values().iterator(); iter.hasNext();) {
-        Token childToken = (Token) iter.next();
-        assert !childToken.isSuspended() : childToken;
+      try {
         childToken.signal();
+        fail("signal should not be accepted on suspended token");
       }
+      catch (JbpmException ex) {
+        // token is suspended
+        assert ex.getMessage().indexOf("suspended") != 0 : ex.getMessage();
+      }
+    }
 
-      assertEquals("end", rootToken.getNode().getName());
-      assert processInstance.hasEnded() : processInstance;
+    // execute ResumeProcessInstanceCommand
+    new ResumeProcessInstanceCommand().processInstanceId(
+      processInstance.getId()).execute(jbpmContext);
 
-      // check db state
-      processInstance = saveAndReload(processInstance);
-      assertEquals("end", processInstance.getRootToken().getNode().getName());
-      assert processInstance.hasEnded() : processInstance;
+    // and verify
+    assert !processInstance.isSuspended() : processInstance;
+    assert !rootToken.isSuspended() : rootToken;
+    for (Iterator iter = rootToken.getChildren().values().iterator(); iter.hasNext();) {
+      Token childToken = (Token) iter.next();
+      assert !childToken.isSuspended() : childToken;
+      childToken.signal();
     }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+
+    assertEquals("end", rootToken.getNode().getName());
+    assert processInstance.hasEnded() : processInstance;
+
+    // check db state
+    processInstance = saveAndReload(processInstance);
+    assertEquals("end", processInstance.getRootToken().getNode().getName());
+    assert processInstance.hasEnded() : processInstance;
   }
 
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/TokenCommandTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/TokenCommandTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/command/TokenCommandTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -25,56 +25,49 @@
       + "</process-definition>";
 
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(xml);
-    jbpmContext.deployProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("TestException");
+    long tokenId = processInstance.getRootToken().getId();
+    processInstance.getRootToken().signal();
+    processInstance.getRootToken().lock("TEST-OWNER");
+
+    processInstance = saveAndReload(processInstance);
     try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("TestException");
-      long tokenId = processInstance.getRootToken().getId();
       processInstance.getRootToken().signal();
-      processInstance.getRootToken().lock("TEST-OWNER");
+      fail("TOKEN IS LOCKED exception expected");
+    }
+    catch (JbpmException ex) {
+      // token is locked
+      assert ex.getMessage().indexOf("locked") != -1 : ex.getMessage();
+    }
 
-      processInstance = saveAndReload(processInstance);
-      try {
-        processInstance.getRootToken().signal();
-        fail("TOKEN IS LOCKED exception expected");
-      }
-      catch (JbpmException ex) {
-        // token is locked
-        assert ex.getMessage().indexOf("locked") != -1 : ex.getMessage();
-      }
+    // unlocking without owner is a force unlock -> works
+    new UnlockTokenCommand().tokenId(tokenId).execute(jbpmContext);
 
-      // unlocking without owner is a force unlock -> works
-      new UnlockTokenCommand().tokenId(tokenId).execute(jbpmContext);
+    // unlock with same owner
+    processInstance = saveAndReload(processInstance);
+    processInstance.getRootToken().lock("TEST-OWNER");
 
-      // unlock with same owner
-      processInstance = saveAndReload(processInstance);
-      processInstance.getRootToken().lock("TEST-OWNER");
+    processInstance = saveAndReload(processInstance);
+    new UnlockTokenCommand().lockOwner("TEST-OWNER")
+    .tokenId(tokenId)
+    .execute(jbpmContext);
 
-      processInstance = saveAndReload(processInstance);
-      new UnlockTokenCommand().lockOwner("TEST-OWNER")
-          .tokenId(tokenId)
-          .execute(jbpmContext);
+    // unlocking with wrong owner fails
+    processInstance = saveAndReload(processInstance);
+    processInstance.getRootToken().lock("TEST-OWNER");
 
-      // unlocking with wrong owner fails
-      processInstance = saveAndReload(processInstance);
-      processInstance.getRootToken().lock("TEST-OWNER");
-
-      processInstance = saveAndReload(processInstance);
-      try {
-        new UnlockTokenCommand().lockOwner("OTHER-OWNER")
-            .tokenId(tokenId)
-            .execute(jbpmContext);
-        fail("CANNOT UNLOCK TOKEN exception expected");
-      }
-      catch (JbpmException ex) {
-        // token is locked
-        assert ex.getMessage().indexOf("cannot unlock") != -1 : ex.getMessage();
-      }
+    processInstance = saveAndReload(processInstance);
+    try {
+      new UnlockTokenCommand().lockOwner("OTHER-OWNER")
+      .tokenId(tokenId)
+      .execute(jbpmContext);
+      fail("CANNOT UNLOCK TOKEN exception expected");
     }
-    finally {
-      newTransaction();
-      graphSession.deleteProcessDefinition(processDefinition.getId());
+    catch (JbpmException ex) {
+      // token is locked
+      assert ex.getMessage().indexOf("cannot unlock") != -1 : ex.getMessage();
     }
   }
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/context/exe/VariableQueryDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/context/exe/VariableQueryDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/context/exe/VariableQueryDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -15,54 +15,48 @@
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='variables'>"
         + "  <start-state name='start'/>"
         + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try {
-      newTransaction();
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance one = jbpmContext.newProcessInstanceForUpdate("variables");
-      one.getContextInstance().setVariable("category", "overpaid");
-      one.getContextInstance().setVariable("duedate", "tomorrow");
+    ProcessInstance one = jbpmContext.newProcessInstanceForUpdate("variables");
+    one.getContextInstance().setVariable("category", "overpaid");
+    one.getContextInstance().setVariable("duedate", "tomorrow");
 
-      ProcessInstance two = jbpmContext.newProcessInstanceForUpdate("variables");
-      two.getContextInstance().setVariable("category", "overpaid");
-      two.getContextInstance().setVariable("duedate", "yesterday");
+    ProcessInstance two = jbpmContext.newProcessInstanceForUpdate("variables");
+    two.getContextInstance().setVariable("category", "overpaid");
+    two.getContextInstance().setVariable("duedate", "yesterday");
 
-      ProcessInstance three = jbpmContext.newProcessInstanceForUpdate("variables");
-      three.getContextInstance().setVariable("category", "underpaid");
-      three.getContextInstance().setVariable("duedate", "today");
+    ProcessInstance three = jbpmContext.newProcessInstanceForUpdate("variables");
+    three.getContextInstance().setVariable("category", "underpaid");
+    three.getContextInstance().setVariable("duedate", "today");
 
-      newTransaction();
+    newTransaction();
 
-      Set expectedPids = new HashSet();
-      expectedPids.add(new Long(one.getId()));
-      expectedPids.add(new Long(two.getId()));
+    Set expectedPids = new HashSet();
+    expectedPids.add(new Long(one.getId()));
+    expectedPids.add(new Long(two.getId()));
 
-      Query query = session.createQuery("select pi.id "
-          + "from org.jbpm.context.exe.variableinstance.StringInstance si "
-          + "join si.processInstance pi "
-          + "where si.name = 'category'"
-          + "  and si.value like 'overpaid'");
-      Set retrievedPids = new HashSet(query.list());
+    Query query = session.createQuery("select pi.id "
+      + "from org.jbpm.context.exe.variableinstance.StringInstance si "
+      + "join si.processInstance pi "
+      + "where si.name = 'category'"
+      + "  and si.value like 'overpaid'");
+    Set retrievedPids = new HashSet(query.list());
 
-      assertEquals(expectedPids, retrievedPids);
+    assertEquals(expectedPids, retrievedPids);
 
-      newTransaction();
+    newTransaction();
 
-      expectedPids.clear();
-      expectedPids.add(new Long(three.getId()));
+    expectedPids.clear();
+    expectedPids.add(new Long(three.getId()));
 
-      query = session.createQuery("select pi.id "
-          + "from org.jbpm.context.exe.variableinstance.StringInstance si "
-          + "join si.processInstance pi "
-          + "where si.name = 'category'"
-          + "  and si.value like 'underpaid'");
-      retrievedPids.clear();
-      retrievedPids.addAll(query.list());
+    query = session.createQuery("select pi.id "
+      + "from org.jbpm.context.exe.variableinstance.StringInstance si "
+      + "join si.processInstance pi "
+      + "where si.name = 'category'"
+      + "  and si.value like 'underpaid'");
+    retrievedPids.clear();
+    retrievedPids.addAll(query.list());
 
-      assertEquals(expectedPids, retrievedPids);
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertEquals(expectedPids, retrievedPids);
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/context/exe/VariableScopingTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/context/exe/VariableScopingTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/context/exe/VariableScopingTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -34,7 +34,7 @@
 
   private static ProcessDefinition pd = createProcessDefinition();
   private ProcessInstance pi = new ProcessInstance(pd);
-  private ContextInstance ci = (ContextInstance) pi.getInstance(ContextInstance.class);
+  private ContextInstance ci = pi.getContextInstance();
   private Token rootToken = pi.getRootToken();
   private Token tokenA = new Token(rootToken, "a");
   private Token tokenAB = new Token(tokenA, "ab");

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/DeleteProcessInstanceDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/DeleteProcessInstanceDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/DeleteProcessInstanceDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -14,21 +14,16 @@
         + "  </start-state>"
         + "  <state name='buy cheese' />"
         + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("make fondue");
-      processInstance.signal();
+    deployProcessDefinition(processDefinition);
 
-      processInstance = saveAndReload(processInstance);
-      jbpmContext.getGraphSession().deleteProcessInstance(processInstance);
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("make fondue");
+    processInstance.signal();
 
-      newTransaction();
-      assertDeleted(processInstance);
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    processInstance = saveAndReload(processInstance);
+    jbpmContext.getGraphSession().deleteProcessInstance(processInstance);
+
+    newTransaction();
+    assertDeleted(processInstance);
   }
 
   public void testDeleteProcessInstanceWithTask() {
@@ -40,21 +35,16 @@
         + "    <task />"
         + "  </task-node>"
         + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("make fondue");
-      processInstance.signal();
+    deployProcessDefinition(processDefinition);
 
-      processInstance = saveAndReload(processInstance);
-      jbpmContext.getGraphSession().deleteProcessInstance(processInstance);
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("make fondue");
+    processInstance.signal();
 
-      newTransaction();
-      assertDeleted(processInstance);
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    processInstance = saveAndReload(processInstance);
+    jbpmContext.getGraphSession().deleteProcessInstance(processInstance);
+
+    newTransaction();
+    assertDeleted(processInstance);
   }
 
   public void testDeleteProcessInstanceWithSubProcessInstance() {
@@ -64,7 +54,7 @@
         + "  </start-state>"
         + "  <state name='find shop' />"
         + "</process-definition>");
-    jbpmContext.deployProcessDefinition(buyCheese);
+    deployProcessDefinition(buyCheese);
 
     ProcessDefinition makeFondue = ProcessDefinition.parseXmlString("<process-definition name='make fondue'>"
         + "  <start-state>"
@@ -74,24 +64,17 @@
         + "    <sub-process name='buy cheese' />"
         + "  </process-state>"
         + "</process-definition>");
-    jbpmContext.deployProcessDefinition(makeFondue);
+    deployProcessDefinition(makeFondue);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("make fondue");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("make fondue");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
-      jbpmContext.getGraphSession().deleteProcessInstance(processInstance);
+    processInstance = saveAndReload(processInstance);
+    jbpmContext.getGraphSession().deleteProcessInstance(processInstance);
 
-      newTransaction();
-      assertDeleted(processInstance.getRootToken().getProcessInstance());
-      assertDeleted(processInstance);
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(buyCheese.getId());
-      jbpmContext.getGraphSession().deleteProcessDefinition(makeFondue.getId());
-    }
+    newTransaction();
+    assertDeleted(processInstance.getRootToken().getProcessInstance());
+    assertDeleted(processInstance);
   }
 
   public void testDeleteProcessInstanceWithConcurrentPathsOfExecution() {
@@ -106,33 +89,28 @@
         + "  <state name='buy cheese' />"
         + "  <state name='bake bread' />"
         + "</process-definition>");
-    jbpmContext.deployProcessDefinition(makeFondue);
-    newTransaction();
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("make fondue");
-      ContextInstance contextInstance = processInstance.getContextInstance();
-      contextInstance.setVariable("a", "asterix");
-      contextInstance.setVariable("b", "obelix");
+    deployProcessDefinition(makeFondue);
 
-      processInstance.signal();
-      Token cheese = processInstance.getRootToken().getChild("cheese");
-      contextInstance.setVariable("a", "mik", cheese);
-      contextInstance.setVariable("b", "mak", cheese);
-      contextInstance.setVariable("c", "mon", cheese);
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("make fondue");
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    contextInstance.setVariable("a", "asterix");
+    contextInstance.setVariable("b", "obelix");
 
-      Token bread = processInstance.getRootToken().getChild("bread");
-      contextInstance.setVariable("a", "jip", bread);
-      contextInstance.setVariable("b", "janneke", bread);
+    processInstance.signal();
+    Token cheese = processInstance.getRootToken().getChild("cheese");
+    contextInstance.setVariable("a", "mik", cheese);
+    contextInstance.setVariable("b", "mak", cheese);
+    contextInstance.setVariable("c", "mon", cheese);
 
-      processInstance = saveAndReload(processInstance);
-      jbpmContext.getGraphSession().deleteProcessInstance(processInstance);
+    Token bread = processInstance.getRootToken().getChild("bread");
+    contextInstance.setVariable("a", "jip", bread);
+    contextInstance.setVariable("b", "janneke", bread);
 
-      newTransaction();
-      assertDeleted(processInstance);
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(makeFondue.getId());
-    }
+    processInstance = saveAndReload(processInstance);
+    jbpmContext.getGraphSession().deleteProcessInstance(processInstance);
+
+    newTransaction();
+    assertDeleted(processInstance);
   }
 
   private void assertDeleted(ProcessInstance processInstance) {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/GraphSessionDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/GraphSessionDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/GraphSessionDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -35,435 +35,274 @@
     // create a process definition
     ProcessDefinition processDefinition = new ProcessDefinition("auction");
     // save it in the database
-    graphSession.saveProcessDefinition(processDefinition);
-    try {
-      // get the assigned id
-      long processDefinitionId = processDefinition.getId();
-      // start a new transaction
-      newTransaction();
-      // load the process definition by the id
-      processDefinition = graphSession.loadProcessDefinition(processDefinitionId);
-      // check the result
-      assertEquals("auction", processDefinition.getName());
-    }
-    finally {
-      // cleanup
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    deployProcessDefinition(processDefinition);
+
+    // get the assigned id
+    long processDefinitionId = processDefinition.getId();
+    // start a new transaction
+    newTransaction();
+    // load the process definition by the id
+    processDefinition = graphSession.loadProcessDefinition(processDefinitionId);
+    // check the result
+    assertEquals("auction", processDefinition.getName());
   }
 
   public void testFindProcessDefinitionByNameAndVersion() {
-    // put 3 process definitions in the database with the same name, but
-    // different versions
+    // put 3 process definitions in the database with the same name,
+    // but different versions
     ProcessDefinition processDefinitionOne = new ProcessDefinition("auction");
-    processDefinitionOne.setVersion(1);
-    graphSession.saveProcessDefinition(processDefinitionOne);
+    deployProcessDefinition(processDefinitionOne);
 
     ProcessDefinition processDefinitionTwo = new ProcessDefinition("auction");
-    processDefinitionTwo.setVersion(2);
-    graphSession.saveProcessDefinition(processDefinitionTwo);
-    // get the assigned id of the second verions
+    deployProcessDefinition(processDefinitionTwo);
+    // get the assigned id of the second version
     long secondVersionProcessDefinitionId = processDefinitionTwo.getId();
 
     ProcessDefinition processDefinitionThree = new ProcessDefinition("auction");
-    processDefinitionThree.setVersion(3);
-    graphSession.saveProcessDefinition(processDefinitionThree);
+    deployProcessDefinition(processDefinitionThree);
 
-    // start a new transaction
-    newTransaction();
-
-    // load the process definition by the id
+    // load the process definition by name and version
     processDefinitionTwo = graphSession.findProcessDefinition("auction", 2);
     assertEquals(secondVersionProcessDefinitionId, processDefinitionTwo.getId());
     assertEquals("auction", processDefinitionTwo.getName());
     assertEquals(2, processDefinitionTwo.getVersion());
-
-    // start a new transaction
-    newTransaction();
-
-    // cleanup
-    graphSession.deleteProcessDefinition(processDefinitionOne.getId());
-    newTransaction();
-    graphSession.deleteProcessDefinition(processDefinitionTwo.getId());
-    newTransaction();
-    graphSession.deleteProcessDefinition(processDefinitionThree.getId());
   }
 
   public void testFindLatestProcessDefinition() throws Exception {
-    // put 3 process definitions in the database with the same name, but
-    // different versions
+    // put 3 process definitions in the database with the same name,
+    // but different versions
     ProcessDefinition processDefinition = new ProcessDefinition("auction");
-    processDefinition.setVersion(1);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     processDefinition = new ProcessDefinition("auction");
-    processDefinition.setVersion(2);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     processDefinition = new ProcessDefinition("auction");
-    processDefinition.setVersion(3);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
     // get the assigned id of the last verions
     long lastVersionProcessDefinitionId = processDefinition.getId();
 
-    newTransaction();
-
     processDefinition = graphSession.findLatestProcessDefinition("auction");
     assertEquals(lastVersionProcessDefinitionId, processDefinition.getId());
     assertEquals("auction", processDefinition.getName());
     assertEquals(3, processDefinition.getVersion());
-
-    newTransaction();
-
-    // cleanup
-    processDefinition = graphSession.findProcessDefinition("auction", 1);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
-
-    processDefinition = graphSession.findProcessDefinition("auction", 2);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
-
-    processDefinition = graphSession.findProcessDefinition("auction", 3);
-    graphSession.deleteProcessDefinition(processDefinition.getId());
   }
 
   public void testFindAllProcessDefinitions() throws Exception {
-    ensureCleanProcessDefinitionTable();
-
-    // put 3 process definitions in the database with the same name, but
-    // different versions
+    // put 3 process definitions in the database with the same name,
+    // but different versions
     ProcessDefinition processDefinition = new ProcessDefinition("auction");
-    processDefinition.setVersion(1);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     processDefinition = new ProcessDefinition("auction");
-    processDefinition.setVersion(2);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     processDefinition = new ProcessDefinition("auction");
-    processDefinition.setVersion(3);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     processDefinition = new ProcessDefinition("bake cake");
-    processDefinition.setVersion(1);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     processDefinition = new ProcessDefinition("bake cake");
-    processDefinition.setVersion(2);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-
-    try {
-      List allProcessDefinitions = graphSession.findAllProcessDefinitions();
-      assertEquals(5, allProcessDefinitions.size());
-      assertEquals(3, ((ProcessDefinition) allProcessDefinitions.get(0)).getVersion());
-      assertEquals("auction", ((ProcessDefinition) allProcessDefinitions.get(0)).getName());
-      assertEquals(2, ((ProcessDefinition) allProcessDefinitions.get(1)).getVersion());
-      assertEquals("auction", ((ProcessDefinition) allProcessDefinitions.get(1)).getName());
-      assertEquals(1, ((ProcessDefinition) allProcessDefinitions.get(2)).getVersion());
-      assertEquals("auction", ((ProcessDefinition) allProcessDefinitions.get(2)).getName());
-      assertEquals(2, ((ProcessDefinition) allProcessDefinitions.get(3)).getVersion());
-      assertEquals("bake cake", ((ProcessDefinition) allProcessDefinitions.get(3)).getName());
-      assertEquals(1, ((ProcessDefinition) allProcessDefinitions.get(4)).getVersion());
-      assertEquals("bake cake", ((ProcessDefinition) allProcessDefinitions.get(4)).getName());
-
-      newTransaction();
-    }
-    finally {
-      processDefinition = graphSession.findProcessDefinition("auction", 1);
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-
-      processDefinition = graphSession.findProcessDefinition("auction", 2);
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-
-      processDefinition = graphSession.findProcessDefinition("auction", 3);
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-
-      processDefinition = graphSession.findProcessDefinition("bake cake", 1);
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-
-      processDefinition = graphSession.findProcessDefinition("bake cake", 2);
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    List allProcessDefinitions = graphSession.findAllProcessDefinitions();
+    assertEquals(5, allProcessDefinitions.size());
+    assertEquals(3, ((ProcessDefinition) allProcessDefinitions.get(0)).getVersion());
+    assertEquals("auction", ((ProcessDefinition) allProcessDefinitions.get(0)).getName());
+    assertEquals(2, ((ProcessDefinition) allProcessDefinitions.get(1)).getVersion());
+    assertEquals("auction", ((ProcessDefinition) allProcessDefinitions.get(1)).getName());
+    assertEquals(1, ((ProcessDefinition) allProcessDefinitions.get(2)).getVersion());
+    assertEquals("auction", ((ProcessDefinition) allProcessDefinitions.get(2)).getName());
+    assertEquals(2, ((ProcessDefinition) allProcessDefinitions.get(3)).getVersion());
+    assertEquals("bake cake", ((ProcessDefinition) allProcessDefinitions.get(3)).getName());
+    assertEquals(1, ((ProcessDefinition) allProcessDefinitions.get(4)).getVersion());
+    assertEquals("bake cake", ((ProcessDefinition) allProcessDefinitions.get(4)).getName());
   }
 
   public void testFindAllProcessDefinitionVersions() throws Exception {
-    // put 3 process definitions in the database with the same name, but
-    // different versions
+    // put 3 process definitions in the database with the same name,
+    // but different versions
     ProcessDefinition processDefinition = new ProcessDefinition("auction");
-    processDefinition.setVersion(1);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     processDefinition = new ProcessDefinition("auction");
-    processDefinition.setVersion(2);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     processDefinition = new ProcessDefinition("auction");
-    processDefinition.setVersion(3);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     processDefinition = new ProcessDefinition("bake cake");
-    processDefinition.setVersion(1);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     processDefinition = new ProcessDefinition("bake cake");
-    processDefinition.setVersion(2);
-    graphSession.saveProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
+    List allProcessDefinitionVersions = graphSession.findAllProcessDefinitionVersions("auction");
+    assertEquals(3, allProcessDefinitionVersions.size());
+    assertEquals(3, ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getVersion());
+    assertEquals("auction", ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getName());
+    assertEquals(2, ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getVersion());
+    assertEquals("auction", ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getName());
+    assertEquals(1, ((ProcessDefinition) allProcessDefinitionVersions.get(2)).getVersion());
+    assertEquals("auction", ((ProcessDefinition) allProcessDefinitionVersions.get(2)).getName());
 
-    try {
-      List allProcessDefinitionVersions = graphSession.findAllProcessDefinitionVersions("auction");
-      assertEquals(3, allProcessDefinitionVersions.size());
-      assertEquals(3, ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getVersion());
-      assertEquals("auction", ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getName());
-      assertEquals(2, ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getVersion());
-      assertEquals("auction", ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getName());
-      assertEquals(1, ((ProcessDefinition) allProcessDefinitionVersions.get(2)).getVersion());
-      assertEquals("auction", ((ProcessDefinition) allProcessDefinitionVersions.get(2)).getName());
-
-      allProcessDefinitionVersions = graphSession.findAllProcessDefinitionVersions("bake cake");
-      assertEquals(2, allProcessDefinitionVersions.size());
-      assertEquals(2, ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getVersion());
-      assertEquals("bake cake", ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getName());
-      assertEquals(1, ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getVersion());
-      assertEquals("bake cake", ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getName());
-
-      newTransaction();
-    }
-    finally {
-      processDefinition = graphSession.findProcessDefinition("auction", 1);
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-
-      processDefinition = graphSession.findProcessDefinition("auction", 2);
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-
-      processDefinition = graphSession.findProcessDefinition("auction", 3);
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-
-      processDefinition = graphSession.findProcessDefinition("bake cake", 1);
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-
-      processDefinition = graphSession.findProcessDefinition("bake cake", 2);
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    allProcessDefinitionVersions = graphSession.findAllProcessDefinitionVersions("bake cake");
+    assertEquals(2, allProcessDefinitionVersions.size());
+    assertEquals(2, ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getVersion());
+    assertEquals("bake cake",
+      ((ProcessDefinition) allProcessDefinitionVersions.get(0)).getName());
+    assertEquals(1, ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getVersion());
+    assertEquals("bake cake",
+      ((ProcessDefinition) allProcessDefinitionVersions.get(1)).getName());
   }
 
   public void testSaveAndLoadProcessInstance() {
-    ProcessDefinition processDefinition = new ProcessDefinition();
-    graphSession.saveProcessDefinition(processDefinition);
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance = saveAndReload(processInstance);
-      assertNotNull(processInstance);
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition);
-    }
+    ProcessDefinition processDefinition = new ProcessDefinition("auction");
+    deployProcessDefinition(processDefinition);
+
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance = saveAndReload(processInstance);
+    assertNotNull(processInstance);
   }
 
   public void testUpdateProcessInstance() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
-        + "  <start-state name='s' />"
-        + "  <node name='n' />"
-        + "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='auction'>"
+      + "  <start-state name='s' />"
+      + "  <node name='n' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    processDefinition = saveAndReload(processDefinition);
-    
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
 
-      processInstance = saveAndReload(processInstance);
-      long pid = processInstance.getId();
+    processInstance = saveAndReload(processInstance);
+    long pid = processInstance.getId();
 
-      assertEquals("s", processInstance.getRootToken().getNode().getName());
-      processInstance.getRootToken().setNode(processInstance.getProcessDefinition().getNode("n"));
+    assertEquals("s", processInstance.getRootToken().getNode().getName());
+    processInstance.getRootToken().setNode(processInstance.getProcessDefinition().getNode("n"));
 
-      processInstance = saveAndReload(processInstance);
-      assertEquals("n", processInstance.getRootToken().getNode().getName());
-      assertEquals(pid, processInstance.getId());
-
-      newTransaction();
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    processInstance = saveAndReload(processInstance);
+    assertEquals("n", processInstance.getRootToken().getNode().getName());
+    assertEquals(pid, processInstance.getId());
   }
 
   public void testFindProcessInstancesByProcessDefinition() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
-        + "  <start-state name='s' />"
-        + "  <node name='n' />"
-        + "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='auction'>"
+      + "  <start-state name='s' />"
+      + "  <node name='n' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    graphSession.saveProcessDefinition(processDefinition);
+    jbpmContext.save(new ProcessInstance(processDefinition));
+    jbpmContext.save(new ProcessInstance(processDefinition));
+    jbpmContext.save(new ProcessInstance(processDefinition));
 
-    try {
-      jbpmContext.save(new ProcessInstance(processDefinition));
-      jbpmContext.save(new ProcessInstance(processDefinition));
-      jbpmContext.save(new ProcessInstance(processDefinition));
+    newTransaction();
+    List processInstances = graphSession.findProcessInstances(processDefinition.getId());
+    assertEquals(3, processInstances.size());
 
-      newTransaction();
-
-      List processInstances = graphSession.findProcessInstances(processDefinition.getId());
-      assertEquals(3, processInstances.size());
-
-      // process instances should be ordered from recent to old
-      long previousStart = System.currentTimeMillis();
-      Iterator iter = processInstances.iterator();
-      while (iter.hasNext()) {
-        ProcessInstance processInstance = (ProcessInstance) iter.next();
-        long processStart = processInstance.getStart().getTime();
-        assertTrue(previousStart >= processStart);
-        previousStart = processStart;
-      }
-
-      newTransaction();
+    // process instances should be ordered from recent to old
+    long previousStart = System.currentTimeMillis();
+    for (Iterator iter = processInstances.iterator(); iter.hasNext();) {
+      ProcessInstance processInstance = (ProcessInstance) iter.next();
+      long processStart = processInstance.getStart().getTime();
+      assertTrue(previousStart >= processStart);
+      previousStart = processStart;
     }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
   }
 
   public void testDeleteProcessInstance() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
-        + "  <start-state name='s' />"
-        + "  <node name='n' />"
-        + "</process-definition>");
-    graphSession.saveProcessDefinition(processDefinition);
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='auction'>"
+      + "  <start-state name='s' />"
+      + "  <node name='n' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      jbpmContext.save(processInstance);
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    jbpmContext.save(processInstance);
 
-      newTransaction();
+    newTransaction();
+    graphSession.deleteProcessInstance(processInstance.getId());
 
-      graphSession.deleteProcessInstance(processInstance.getId());
-
-      newTransaction();
-
-      assertEquals(0, graphSession.findProcessInstances(processDefinition.getId()).size());
-
-      newTransaction();
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    newTransaction();
+    assertEquals(0, graphSession.findProcessInstances(processDefinition.getId()).size());
   }
 
   public void testDeleteProcessInstanceWithVariables() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
-        + "  <start-state name='start'>"
-        + "    <transition to='fork' />"
-        + "  </start-state>"
-        + "  <fork name='fork'>"
-        + "    <transition name='a' to='a' />"
-        + "    <transition name='b' to='b' />"
-        + "  </fork>"
-        + "  <state name='a' />"
-        + "  <state name='b' />"
-        + "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='auction'>"
+      + "  <start-state name='start'>"
+      + "    <transition to='fork' />"
+      + "  </start-state>"
+      + "  <fork name='fork'>"
+      + "    <transition name='a' to='a' />"
+      + "    <transition name='b' to='b' />"
+      + "  </fork>"
+      + "  <state name='a' />"
+      + "  <state name='b' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    graphSession.saveProcessDefinition(processDefinition);
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
+    Token tokenA = processInstance.findToken("/a");
+    Token tokenB = processInstance.findToken("/b");
 
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
-      Token tokenA = processInstance.findToken("/a");
-      Token tokenB = processInstance.findToken("/b");
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    contextInstance.setVariable("r", "rrrrrr");
+    contextInstance.createVariable("a", "aaaaaa", tokenA);
+    contextInstance.createVariable("b", "bbbbbb", tokenB);
 
-      ContextInstance contextInstance = processInstance.getContextInstance();
-      contextInstance.setVariable("r", "rrrrrr");
-      contextInstance.createVariable("a", "aaaaaa", tokenA);
-      contextInstance.createVariable("b", "bbbbbb", tokenB);
+    processInstance = saveAndReload(processInstance);
+    graphSession.deleteProcessInstance(processInstance);
 
-      processInstance = saveAndReload(processInstance);
-
-      graphSession.deleteProcessInstance(processInstance);
-
-      newTransaction();
-
-      List processInstances = graphSession.findProcessInstances(processDefinition.getId());
-      assertEquals(0, processInstances.size());
-
-      newTransaction();
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    newTransaction();
+    List processInstances = graphSession.findProcessInstances(processDefinition.getId());
+    assertEquals(0, processInstances.size());
   }
 
   public void testDeleteProcessDefinition() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='deleteme'>"
-        + "  <start-state name='s' />"
-        + "  <node name='n' />"
-        + "</process-definition>");
-    graphSession.saveProcessDefinition(processDefinition);
+      + "  <start-state name='s' />"
+      + "  <node name='n' />"
+      + "</process-definition>");
+    jbpmContext.deployProcessDefinition(processDefinition);
 
+    newTransaction();
     try {
       jbpmContext.save(new ProcessInstance(processDefinition));
       jbpmContext.save(new ProcessInstance(processDefinition));
       jbpmContext.save(new ProcessInstance(processDefinition));
       jbpmContext.save(new ProcessInstance(processDefinition));
-
-      newTransaction();
     }
     finally {
       graphSession.deleteProcessDefinition(processDefinition.getId());
     }
 
     newTransaction();
-
-    assertEquals(0, graphSession.findAllProcessDefinitionVersions(processDefinition.getName()).size());
+    assertEquals(0, graphSession.findAllProcessDefinitionVersions(processDefinition.getName())
+      .size());
     assertEquals(0, graphSession.findProcessInstances(processDefinition.getId()).size());
   }
 
   public void testLatestProcessDefinitions() {
-    ensureCleanProcessDefinitionTable();
+    deployProcessDefinition(new ProcessDefinition("websale"));
+    deployProcessDefinition(new ProcessDefinition("websale"));
+    deployProcessDefinition(new ProcessDefinition("websale"));
 
-    ProcessDefinition websale = new ProcessDefinition("websale");
-    jbpmContext.deployProcessDefinition(websale);
-    jbpmContext.deployProcessDefinition(websale);
-    jbpmContext.deployProcessDefinition(websale);
+    deployProcessDefinition(new ProcessDefinition("change nappy"));
+    deployProcessDefinition(new ProcessDefinition("change nappy"));
 
-    ProcessDefinition changeNappy = new ProcessDefinition("change nappy");
-    jbpmContext.deployProcessDefinition(changeNappy);
-    jbpmContext.deployProcessDefinition(changeNappy);
-
-    newTransaction();
-
     List latestProcessDefinitions = graphSession.findLatestProcessDefinitions();
     assertEquals(2, latestProcessDefinitions.size());
     assertEquals(3, getVersionOfProcess("websale", latestProcessDefinitions));
     assertEquals(2, getVersionOfProcess("change nappy", latestProcessDefinitions));
-
-    newTransaction();
-
-    // cleanup
-    graphSession.deleteProcessDefinition(websale.getId());
-    graphSession.deleteProcessDefinition(changeNappy.getId());
   }
 
-  private void ensureCleanProcessDefinitionTable() {
-    List processDefinitions = session.createCriteria(ProcessDefinition.class).list();
-    if (!processDefinitions.isEmpty()) {
-      System.err.println("FIXME: "+ getClass().getName() + "." + getName() +
-          " found " + processDefinitions.size() + " process definitions left over");
-      for (Iterator i = processDefinitions.iterator(); i.hasNext();) {
-        ProcessDefinition processDefinition = (ProcessDefinition) i.next();
-        graphSession.deleteProcessDefinition(processDefinition);
-      }
-    }
-  }
-
   private int getVersionOfProcess(String name, List latestProcessDefinitions) {
-    Iterator iter = latestProcessDefinitions.iterator();
-    while (iter.hasNext()) {
+    for (Iterator iter = latestProcessDefinitions.iterator(); iter.hasNext();) {
       ProcessDefinition processDefinition = (ProcessDefinition) iter.next();
-      if (name.equals(processDefinition.getName())) {
-        return processDefinition.getVersion();
-      }
+      if (name.equals(processDefinition.getName())) return processDefinition.getVersion();
     }
-    return -2;
+    return -1;
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/TaskMgmtSessionDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/TaskMgmtSessionDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/db/TaskMgmtSessionDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,42 +36,25 @@
 
 public class TaskMgmtSessionDbTest extends AbstractDbTestCase {
 
-  ProcessDefinition processDefinition;
-  TaskMgmtDefinition taskMgmtDefinition;
-  Task laundry;
-  Task dishes;
-
   ProcessInstance processInstance;
   TaskMgmtInstance taskMgmtInstance;
 
   protected void setUp() throws Exception {
     super.setUp();
 
-    processDefinition = new ProcessDefinition();
-    taskMgmtDefinition = new TaskMgmtDefinition();
+    TaskMgmtDefinition taskMgmtDefinition = new TaskMgmtDefinition();
+    taskMgmtDefinition.addTask(new Task("laundry"));
+    taskMgmtDefinition.addTask(new Task("dishes"));
+
+    ProcessDefinition processDefinition = new ProcessDefinition("housework");
     processDefinition.addDefinition(taskMgmtDefinition);
-    laundry = new Task("laundry");
-    taskMgmtDefinition.addTask(laundry);
-    dishes = new Task("dishes");
-    taskMgmtDefinition.addTask(dishes);
+    deployProcessDefinition(processDefinition);
 
-    graphSession.saveProcessDefinition(processDefinition);
-
     processInstance = new ProcessInstance(processDefinition);
     processInstance = saveAndReload(processInstance);
-
-    processDefinition = processInstance.getProcessDefinition();
-    taskMgmtDefinition = processDefinition.getTaskMgmtDefinition();
-    laundry = taskMgmtDefinition.getTask("laundry");
-    dishes = taskMgmtDefinition.getTask("dishes");
     taskMgmtInstance = processInstance.getTaskMgmtInstance();
   }
 
-  protected void tearDown() throws Exception {
-    jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    super.tearDown();
-  }
-
   public void testFindTaskInstancesByActorId() {
     taskMgmtInstance.addTaskInstance(new TaskInstance("laundry", "me"));
     taskMgmtInstance.addTaskInstance(new TaskInstance("dishes", "me"));
@@ -130,48 +113,39 @@
         + "    <task name='cleanToilets'/>"
         + "  </task-node>"
         + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try {
-      newTransaction();
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("searchable");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("searchable");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
 
-      List taskInstances = taskMgmtSession.findTaskInstancesByProcessInstance(processInstance);
-      Set collectedTaskInstanceNames = new HashSet();
-      Iterator iter = taskInstances.iterator();
-      while (iter.hasNext()) {
-        TaskInstance taskInstance = (TaskInstance) iter.next();
-        collectedTaskInstanceNames.add(taskInstance.getName());
-      }
+    List taskInstances = taskMgmtSession.findTaskInstancesByProcessInstance(processInstance);
+    Set collectedTaskInstanceNames = new HashSet();
+    for (Iterator iter = taskInstances.iterator(); iter.hasNext();) {
+      TaskInstance taskInstance = (TaskInstance) iter.next();
+      collectedTaskInstanceNames.add(taskInstance.getName());
+    }
 
-      Set expectedTaskInstanceNames = new HashSet();
-      expectedTaskInstanceNames.add("getLaundryFromBasket");
-      expectedTaskInstanceNames.add("askHusbandWhereHeDumpedHisClothes");
-      expectedTaskInstanceNames.add("lookUnderChildrensBeds");
-      expectedTaskInstanceNames.add("cleanToilets");
+    Set expectedTaskInstanceNames = new HashSet();
+    expectedTaskInstanceNames.add("getLaundryFromBasket");
+    expectedTaskInstanceNames.add("askHusbandWhereHeDumpedHisClothes");
+    expectedTaskInstanceNames.add("lookUnderChildrensBeds");
+    expectedTaskInstanceNames.add("cleanToilets");
 
-      assertEquals(expectedTaskInstanceNames, collectedTaskInstanceNames);
+    assertEquals(expectedTaskInstanceNames, collectedTaskInstanceNames);
 
-      List nodes = graphSession.findActiveNodesByProcessInstance(processInstance);
-      Set collectedNodeNames = new HashSet();
-      iter = nodes.iterator();
-      while (iter.hasNext()) {
-        Node node = (Node) iter.next();
-        collectedNodeNames.add(node.getName());
-      }
-
-      Set expectedNodeNames = new HashSet();
-      expectedNodeNames.add("collectLaundry");
-      expectedNodeNames.add("cleanToilets");
-
-      assertEquals(expectedNodeNames, collectedNodeNames);
+    List nodes = graphSession.findActiveNodesByProcessInstance(processInstance);
+    Set collectedNodeNames = new HashSet();
+    for (Iterator iter = nodes.iterator(); iter.hasNext();) {
+      Node node = (Node) iter.next();
+      collectedNodeNames.add(node.getName());
     }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
 
+    Set expectedNodeNames = new HashSet();
+    expectedNodeNames.add("collectLaundry");
+    expectedNodeNames.add("cleanToilets");
+
+    assertEquals(expectedNodeNames, collectedNodeNames);
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/def/MultipleProcessDefinitionEventsDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/def/MultipleProcessDefinitionEventsDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/def/MultipleProcessDefinitionEventsDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -29,56 +29,37 @@
 public class MultipleProcessDefinitionEventsDbTest extends AbstractDbTestCase {
 
   public void testEventPersistence() {
-
     // Add a start state so that state '1' gets assigned id = 2
-    ProcessDefinition processDefinitionOne = ProcessDefinition.parseXmlString(
-      "<process-definition name='one'>" + 
-      "  <start-state name='start'>" + 
-      "    <transition name='start transition to 1' to='1' />" + 
-      "  </start-state>" + 
-      "  <state name='1'>" + 
-      "    <event type='node-enter'>" + 
-      "      <action class='foo' />" + 
-      "    </event>" +
-      "  </state>" + 
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinitionOne = ProcessDefinition.parseXmlString("<process-definition name='one'>"
+      + "  <start-state name='start'>"
+      + "    <transition name='start transition to 1' to='1' />"
+      + "  </start-state>"
+      + "  <state name='1'>"
+      + "    <event type='node-enter'>"
+      + "      <action class='foo' />"
+      + "    </event>"
+      + "  </state>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinitionOne);
 
-    jbpmContext.deployProcessDefinition(processDefinitionOne);
+    ProcessDefinition processDefinitionTwo = ProcessDefinition.parseXmlString("<process-definition name='two'>"
+      + "  <state name='1'>"
+      + "    <event type='node-enter'>"
+      + "      <action class='bar' />"
+      + "    </event>"
+      + "  </state>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinitionTwo);
 
-    newTransaction();
+    processDefinitionOne = graphSession.loadProcessDefinition(processDefinitionOne.getId());
+    processDefinitionTwo = graphSession.loadProcessDefinition(processDefinitionTwo.getId());
 
-    ProcessDefinition processDefinitionTwo = ProcessDefinition.parseXmlString(
-      "<process-definition name='two'>" + 
-      "  <state name='1'>" + 
-      "    <event type='node-enter'>" + 
-      "      <action class='bar' />" + 
-      "    </event>" + 
-      "  </state>" + 
-      "</process-definition>"
-    );
+    State stateOne = (State) processDefinitionOne.getNode("1");
+    State stateTwo = (State) processDefinitionTwo.getNode("1");
+    assertTrue(stateOne.getEvent("node-enter") != stateTwo.getEvent("node-enter"));
 
-    jbpmContext.deployProcessDefinition(processDefinitionTwo);
-
-    newTransaction();
-
-    try
-    {
-      processDefinitionOne = graphSession.loadProcessDefinition(processDefinitionOne.getId());
-      processDefinitionTwo = graphSession.loadProcessDefinition(processDefinitionTwo.getId());
-
-      State stateOne = (State) processDefinitionOne.getNode("1");
-      State stateTwo = (State) processDefinitionTwo.getNode("1");
-      assertTrue(stateOne.getEvent("node-enter") != stateTwo.getEvent("node-enter"));
-
-      Map processEvents = processDefinitionTwo.getEvents();
-      // System.out.println(processDefinitionTwo.getEvents());
-      assertEquals("Process Definition should not have any events. events = " + processEvents, 0, processEvents.size());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionOne.getId());
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionTwo.getId());
-    }
+    Map processEvents = processDefinitionTwo.getEvents();
+    assertEquals("Process Definition should not have any events. events = " + processEvents, 0,
+      processEvents.size());
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/def/NodeDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/def/NodeDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/def/NodeDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -25,108 +25,91 @@
 import java.util.Collection;
 import java.util.HashSet;
 import java.util.Iterator;
+import java.util.List;
 
 import org.jbpm.db.AbstractDbTestCase;
 
-public class NodeDbTest extends AbstractDbTestCase
-{
+public class NodeDbTest extends AbstractDbTestCase {
 
-  public void testNodeName()
-  {
-    ProcessDefinition processDefinition = new ProcessDefinition();
+  public void testNodeName() {
     Node node = new Node("n");
+
+    ProcessDefinition processDefinition = new ProcessDefinition();
     processDefinition.addNode(node);
 
     processDefinition = saveAndReload(processDefinition);
-    try
-    {
-      assertNotNull(processDefinition);
-      assertEquals("n", processDefinition.getNode("n").getName());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertNotNull(processDefinition);
+    assertEquals("n", processDefinition.getNode("n").getName());
   }
 
-  public void testNodeProcessDefinition()
-  {
-    ProcessDefinition processDefinition = new ProcessDefinition("p");
+  public void testNodeProcessDefinition() {
     Node node = new Node("n");
+
+    ProcessDefinition processDefinition = new ProcessDefinition();
     processDefinition.addNode(node);
 
     processDefinition = saveAndReload(processDefinition);
-    try
-    {
-      assertNotNull(processDefinition);
-      assertEquals("p", processDefinition.getNode("n").getProcessDefinition().getName());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertNotNull(processDefinition);
+    assertSame(processDefinition, processDefinition.getNode("n").getProcessDefinition());
   }
 
-  public void testNodeEvents()
-  {
-    ProcessDefinition processDefinition = new ProcessDefinition();
+  public void testNodeEvents() {
     Node node = new Node("n");
-    processDefinition.addNode(node);
     node.addEvent(new Event("node-enter"));
     node.addEvent(new Event("node-leave"));
     node.addEvent(new Event("transition"));
     node.addEvent(new Event("process-start"));
     node.addEvent(new Event("process-end"));
 
+    ProcessDefinition processDefinition = new ProcessDefinition();
+    processDefinition.addNode(node);
+
     processDefinition = saveAndReload(processDefinition);
-    try
-    {
-      node = processDefinition.getNode("n");
-      assertNotNull(node.getEvent("node-enter"));
-      assertNotNull(node.getEvent("node-leave"));
-      assertNotNull(node.getEvent("transition"));
-      assertNotNull(node.getEvent("process-start"));
-      assertNotNull(node.getEvent("process-end"));
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    node = processDefinition.getNode("n");
+    assertNotNull(node.getEvent("node-enter"));
+    assertNotNull(node.getEvent("node-leave"));
+    assertNotNull(node.getEvent("transition"));
+    assertNotNull(node.getEvent("process-start"));
+    assertNotNull(node.getEvent("process-end"));
   }
 
-  public void testNodeExceptionHandlers()
-  {
-    ProcessDefinition processDefinition = new ProcessDefinition();
+  public void testNodeExceptionHandlers() {
+    ExceptionHandler exceptionHandler1 = new ExceptionHandler();
+    exceptionHandler1.setExceptionClassName("org.disaster.FirstException");
+
+    ExceptionHandler exceptionHandler2 = new ExceptionHandler();
+    exceptionHandler2.setExceptionClassName("org.disaster.SecondException");
+
+    ExceptionHandler exceptionHandler3 = new ExceptionHandler();
+    exceptionHandler3.setExceptionClassName("org.disaster.ThirdException");
+
     Node node = new Node("n");
+    node.addExceptionHandler(exceptionHandler1);
+    node.addExceptionHandler(exceptionHandler2);
+    node.addExceptionHandler(exceptionHandler3);
+
+    ProcessDefinition processDefinition = new ProcessDefinition();
     processDefinition.addNode(node);
-    ExceptionHandler exceptionHandler = new ExceptionHandler();
-    exceptionHandler.setExceptionClassName("org.disaster.FirstException");
-    node.addExceptionHandler(exceptionHandler);
-    exceptionHandler = new ExceptionHandler();
-    exceptionHandler.setExceptionClassName("org.disaster.SecondException");
-    node.addExceptionHandler(exceptionHandler);
-    exceptionHandler = new ExceptionHandler();
-    exceptionHandler.setExceptionClassName("org.disaster.ThirdException");
-    node.addExceptionHandler(exceptionHandler);
 
     processDefinition = saveAndReload(processDefinition);
-    try
-    {
-      assertEquals("org.disaster.FirstException", ((ExceptionHandler)processDefinition.getNode("n").getExceptionHandlers().get(0)).getExceptionClassName());
-      assertEquals("org.disaster.SecondException", ((ExceptionHandler)processDefinition.getNode("n").getExceptionHandlers().get(1)).getExceptionClassName());
-      assertEquals("org.disaster.ThirdException", ((ExceptionHandler)processDefinition.getNode("n").getExceptionHandlers().get(2)).getExceptionClassName());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    node = processDefinition.getNode("n");
+    List exceptionHandlers = node.getExceptionHandlers();
+
+    exceptionHandler1 = (ExceptionHandler) exceptionHandlers.get(0);
+    assertEquals("org.disaster.FirstException", exceptionHandler1.getExceptionClassName());
+
+    exceptionHandler2 = (ExceptionHandler) exceptionHandlers.get(1);
+    assertEquals("org.disaster.SecondException", exceptionHandler2.getExceptionClassName());
+
+    exceptionHandler3 = (ExceptionHandler) exceptionHandlers.get(2);
+    assertEquals("org.disaster.ThirdException", exceptionHandler3.getExceptionClassName());
   }
 
-  public void testNodeLeavingTransitions()
-  {
-    ProcessDefinition processDefinition = new ProcessDefinition();
+  public void testNodeLeavingTransitions() {
     Node a = new Node("a");
     Node b = new Node("b");
+
+    ProcessDefinition processDefinition = new ProcessDefinition();
     processDefinition.addNode(a);
     processDefinition.addNode(b);
 
@@ -143,30 +126,23 @@
     b.addArrivingTransition(t);
 
     processDefinition = saveAndReload(processDefinition);
-    try
-    {
-      a = processDefinition.getNode("a");
-      b = processDefinition.getNode("b");
+    a = processDefinition.getNode("a");
+    b = processDefinition.getNode("b");
 
-      assertEquals("one", ((Transition)a.getLeavingTransitionsList().get(0)).getName());
-      assertEquals("two", ((Transition)a.getLeavingTransitionsList().get(1)).getName());
-      assertEquals("three", ((Transition)a.getLeavingTransitionsList().get(2)).getName());
+    assertEquals("one", ((Transition) a.getLeavingTransitionsList().get(0)).getName());
+    assertEquals("two", ((Transition) a.getLeavingTransitionsList().get(1)).getName());
+    assertEquals("three", ((Transition) a.getLeavingTransitionsList().get(2)).getName());
 
-      assertSame(b, a.getLeavingTransition("one").getTo());
-      assertSame(b, a.getLeavingTransition("two").getTo());
-      assertSame(b, a.getLeavingTransition("three").getTo());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertSame(b, a.getLeavingTransition("one").getTo());
+    assertSame(b, a.getLeavingTransition("two").getTo());
+    assertSame(b, a.getLeavingTransition("three").getTo());
   }
 
-  public void testNodeArrivingTransitions()
-  {
-    ProcessDefinition processDefinition = new ProcessDefinition();
+  public void testNodeArrivingTransitions() {
     Node a = new Node("a");
     Node b = new Node("b");
+
+    ProcessDefinition processDefinition = new ProcessDefinition();
     processDefinition.addNode(a);
     processDefinition.addNode(b);
 
@@ -183,69 +159,52 @@
     b.addArrivingTransition(t);
 
     processDefinition = saveAndReload(processDefinition);
-    try
-    {
-      a = processDefinition.getNode("a");
-      b = processDefinition.getNode("b");
+    a = processDefinition.getNode("a");
+    b = processDefinition.getNode("b");
 
-      Iterator arrivingTransitionIter = b.getArrivingTransitions().iterator();
-      assertSame(b, ((Transition)arrivingTransitionIter.next()).getTo());
-      assertSame(b, ((Transition)arrivingTransitionIter.next()).getTo());
-      assertSame(b, ((Transition)arrivingTransitionIter.next()).getTo());
+    Iterator arrivingTransitionIter = b.getArrivingTransitions().iterator();
+    assertSame(b, ((Transition) arrivingTransitionIter.next()).getTo());
+    assertSame(b, ((Transition) arrivingTransitionIter.next()).getTo());
+    assertSame(b, ((Transition) arrivingTransitionIter.next()).getTo());
 
-      Collection expectedTransitionNames = new HashSet(Arrays.asList(new String[] { "one", "two", "three" }));
-      arrivingTransitionIter = b.getArrivingTransitions().iterator();
-      expectedTransitionNames.remove(((Transition)arrivingTransitionIter.next()).getName());
-      expectedTransitionNames.remove(((Transition)arrivingTransitionIter.next()).getName());
-      expectedTransitionNames.remove(((Transition)arrivingTransitionIter.next()).getName());
-      assertEquals(0, expectedTransitionNames.size());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    Collection expectedTransitionNames = new HashSet(Arrays.asList(new String[] {
+      "one", "two", "three"
+    }));
+    arrivingTransitionIter = b.getArrivingTransitions().iterator();
+    expectedTransitionNames.remove(((Transition) arrivingTransitionIter.next()).getName());
+    expectedTransitionNames.remove(((Transition) arrivingTransitionIter.next()).getName());
+    expectedTransitionNames.remove(((Transition) arrivingTransitionIter.next()).getName());
+    assertEquals(0, expectedTransitionNames.size());
   }
 
-  public void testNodeAction()
-  {
-    ProcessDefinition processDefinition = new ProcessDefinition();
-    Node node = new Node("n");
-    processDefinition.addNode(node);
+  public void testNodeAction() {
     Action action = new Action();
     action.setName("a");
+
+    Node node = new Node("n");
     node.setAction(action);
 
+    ProcessDefinition processDefinition = new ProcessDefinition();
+    processDefinition.addNode(node);
+
     processDefinition = saveAndReload(processDefinition);
-    try
-    {
-      assertNotNull(processDefinition.getNode("n").getAction());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertNotNull(processDefinition.getNode("n").getAction());
   }
 
-  public void testNodeSuperState()
-  {
-    ProcessDefinition processDefinition = new ProcessDefinition();
-    SuperState superState = new SuperState("s");
-    processDefinition.addNode(superState);
+  public void testNodeSuperState() {
     Node node = new Node("n");
+
+    SuperState superState = new SuperState("s");
     superState.addNode(node);
 
+    ProcessDefinition processDefinition = new ProcessDefinition();
+    processDefinition.addNode(superState);
+
     processDefinition = saveAndReload(processDefinition);
-    try
-    {
-      superState = (SuperState)processDefinition.getNode("s");
-      node = superState.getNode("n");
-      assertNotNull(node);
-      assertNotNull(superState);
-      assertSame(node, superState.getNode("n"));
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    superState = (SuperState) processDefinition.getNode("s");
+    node = superState.getNode("n");
+    assertNotNull(node);
+    assertNotNull(superState);
+    assertSame(node, superState.getNode("n"));
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/BusinessKeyDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/BusinessKeyDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/BusinessKeyDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -3,60 +3,34 @@
 import org.jbpm.db.AbstractDbTestCase;
 import org.jbpm.graph.def.ProcessDefinition;
 
-public class BusinessKeyDbTest extends AbstractDbTestCase
-{
+public class BusinessKeyDbTest extends AbstractDbTestCase {
 
-  public void testSimpleBusinessKey()
-  {
+  public void testSimpleBusinessKey() {
     ProcessDefinition processDefinition = new ProcessDefinition("businesskeytest");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("businesskeytest");
-      processInstance.setKey("businesskey1");
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("businesskeytest");
+    processInstance.setKey("businesskey1");
 
-      newTransaction();
+    newTransaction();
+    processInstance = jbpmContext.newProcessInstanceForUpdate("businesskeytest");
+    processInstance.setKey("businesskey2");
 
-      processInstance = jbpmContext.newProcessInstanceForUpdate("businesskeytest");
-      processInstance.setKey("businesskey2");
-
-      newTransaction();
-
-      processDefinition = jbpmContext.getGraphSession().findLatestProcessDefinition("businesskeytest");
-      processInstance = jbpmContext.getProcessInstance(processDefinition, "businesskey1");
-      assertEquals("businesskey1", processInstance.getKey());
-    }
-    finally
-    {
-      newTransaction();
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-
+    newTransaction();
+    processDefinition = jbpmContext.getGraphSession()
+      .findLatestProcessDefinition("businesskeytest");
+    processInstance = jbpmContext.getProcessInstance(processDefinition, "businesskey1");
+    assertEquals("businesskey1", processInstance.getKey());
   }
 
-  public void testDuplicateBusinessKeyInDifferentProcesses()
-  {
+  public void testDuplicateBusinessKeyInDifferentProcesses() {
     ProcessDefinition processDefinitionOne = new ProcessDefinition("businesskeytest1");
-    processDefinitionOne = saveAndReload(processDefinitionOne);
-    long processDefinitionIdOne = processDefinitionOne.getId();
-    
+    deployProcessDefinition(processDefinitionOne);
+
     ProcessDefinition processDefinitionTwo = new ProcessDefinition("businesskeytest2");
-    processDefinitionTwo = saveAndReload(processDefinitionTwo);
-    long processDefinitionIdTwo = processDefinitionTwo.getId();
-    
-    try
-    {
-      jbpmContext.newProcessInstanceForUpdate("businesskeytest1").setKey("duplicatekey");
-      newTransaction();
-      jbpmContext.newProcessInstanceForUpdate("businesskeytest2").setKey("duplicatekey");
-    }
-    finally
-    {
-      newTransaction();
-      graphSession.deleteProcessDefinition(processDefinitionIdOne);
-      graphSession.deleteProcessDefinition(processDefinitionIdTwo);
-    }
+    deployProcessDefinition(processDefinitionTwo);
+
+    jbpmContext.newProcessInstanceForUpdate("businesskeytest1").setKey("duplicatekey");
+    jbpmContext.newProcessInstanceForUpdate("businesskeytest2").setKey("duplicatekey");
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/NodeActionTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/NodeActionTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/NodeActionTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -53,7 +53,7 @@
   private Node b = processDefinition.getNode("b");
   private Node c = processDefinition.getNode("c");
 
-  private static int scenario = 0;
+  static int scenario = 0;
 
   public static class RuntimeCalculation implements ActionHandler {
     private static final long serialVersionUID = 1L;

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/ProcessInstanceDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/ProcessInstanceDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/ProcessInstanceDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -31,8 +31,7 @@
   public void testProcessInstanceProcessDefinition() {
     ProcessDefinition processDefinition = new ProcessDefinition("definition");
     graphSession.saveProcessDefinition(processDefinition);
-    try
-    {
+    try {
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
 
       processInstance = saveAndReload(processInstance);
@@ -41,33 +40,29 @@
       processDefinition = processInstance.getProcessDefinition();
       assertEquals("definition", processDefinition.getName());
     }
-    finally
-    {
+    finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
 
   public void testProcessInstanceDates() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <start-state>" +
-      "    <transition to='end' />" +
-      "  </start-state>" +
-      "  <end-state name='end'/>" +
-      "</process-definition>" );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <start-state>"
+      + "    <transition to='end' />"
+      + "  </start-state>"
+      + "  <end-state name='end'/>"
+      + "</process-definition>");
     graphSession.saveProcessDefinition(processDefinition);
-    try
-    {
+    try {
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
       processInstance.signal();
 
       processInstance = saveAndReload(processInstance);
-      
+
       assertNotNull(processInstance.getStart());
       assertNotNull(processInstance.getEnd());
     }
-    finally
-    {
+    finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
@@ -75,97 +70,67 @@
   public void testProcessInstanceRootToken() {
     ProcessDefinition processDefinition = new ProcessDefinition();
     graphSession.saveProcessDefinition(processDefinition);
-    try
-    {
+    try {
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
 
       processInstance = saveAndReload(processInstance);
-      
       assertNotNull(processInstance.getRootToken());
     }
-    finally
-    {
+    finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
 
-  public void testProcessInstanceSuperProcessToken() 
-  {
+  public void testProcessInstanceSuperProcessToken() {
     ProcessDefinition superProcessDefinition = new ProcessDefinition("super");
-    jbpmContext.deployProcessDefinition(superProcessDefinition);
-    
+    deployProcessDefinition(superProcessDefinition);
+
     ProcessDefinition subProcessDefinition = new ProcessDefinition("sub");
-    jbpmContext.deployProcessDefinition(subProcessDefinition);
-    
+    deployProcessDefinition(subProcessDefinition);
+
     ProcessInstance superProcessInstance = new ProcessInstance(superProcessDefinition);
     ProcessInstance processInstance = new ProcessInstance(subProcessDefinition);
-    try
-    {
-      Token superProcessToken = superProcessInstance.getRootToken();
-      jbpmContext.save(superProcessInstance);
-      
-      processInstance.setSuperProcessToken(superProcessToken);
+    Token superProcessToken = superProcessInstance.getRootToken();
+    processInstance.setSuperProcessToken(superProcessToken);
+    jbpmContext.save(superProcessInstance);
 
-      processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
+    superProcessToken = processInstance.getSuperProcessToken();
+    assertNotNull(superProcessToken);
+    superProcessInstance = superProcessToken.getProcessInstance();
+    assertNotNull(superProcessInstance);
 
-      superProcessToken = processInstance.getSuperProcessToken();
-      assertNotNull(superProcessToken);
-      superProcessInstance = superProcessToken.getProcessInstance();
-      assertNotNull(superProcessInstance);
-
-      ProcessDefinition processDefinition = superProcessInstance.getProcessDefinition();
-      assertEquals("super", processDefinition.getName());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(subProcessDefinition.getId());
-      jbpmContext.getGraphSession().deleteProcessDefinition(superProcessDefinition.getId());
-    }
+    ProcessDefinition processDefinition = superProcessInstance.getProcessDefinition();
+    assertEquals("super", processDefinition.getName());
   }
-  
-  public void testProcessInstanceModuleInstances()
-  {
+
+  public void testProcessInstanceModuleInstances() {
     ProcessDefinition processDefinition = new ProcessDefinition("modinst");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    
+    deployProcessDefinition(processDefinition);
+
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.addInstance(new ContextInstance());
     processInstance.addInstance(new TaskMgmtInstance());
 
     processInstance = saveAndReload(processInstance);
-    try
-    {
-      assertNotNull(processInstance.getInstances());
-      assertEquals(2, processInstance.getInstances().size());
-      assertNotNull(processInstance.getContextInstance());
-      assertNotNull(processInstance.getTaskMgmtInstance());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertNotNull(processInstance.getInstances());
+    assertEquals(2, processInstance.getInstances().size());
+    assertNotNull(processInstance.getContextInstance());
+    assertNotNull(processInstance.getTaskMgmtInstance());
   }
 
-  public void testProcessInstanceRuntimeActions()
-  {
-	ProcessDefinition processDefinition = new ProcessDefinition("modinst");
-	jbpmContext.deployProcessDefinition(processDefinition);
+  public void testProcessInstanceRuntimeActions() {
+    ProcessDefinition processDefinition = new ProcessDefinition("modinst");
+    deployProcessDefinition(processDefinition);
 
-	ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.addRuntimeAction(new RuntimeAction());
     processInstance.addRuntimeAction(new RuntimeAction());
     processInstance.addRuntimeAction(new RuntimeAction());
     processInstance.addRuntimeAction(new RuntimeAction());
 
     processInstance = saveAndReload(processInstance);
-    try
-    {
-      assertNotNull(processInstance.getRuntimeActions());
-      assertEquals(4, processInstance.getRuntimeActions().size());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertNotNull(processInstance.getRuntimeActions());
+    assertEquals(4, processInstance.getRuntimeActions().size());
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/RuntimeActionsTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/RuntimeActionsTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/RuntimeActionsTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -41,7 +41,7 @@
     "</process-definition>"
   );
   
-  private static int count = 0;
+  static int count = 0;
 
   public static class PlusPlus implements ActionHandler {
     private static final long serialVersionUID = 1L;

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SubProcessCancellationTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SubProcessCancellationTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SubProcessCancellationTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -10,57 +10,50 @@
 
   public void testWithSubProcess() {
     ProcessDefinition subProcess = ProcessDefinition.parseXmlString("<process-definition name='sub'>"
-        + "  <start-state>"
-        + "    <transition to='wait' />"
-        + "  </start-state>"
-        + "  <task-node name='wait'>"
-        + "    <task>"
-        + "      <timer duedate='2 seconds' class='MyTimerClass' />"
-        + "    </task>"
-        + "    <transition to='end' />"
-        + "  </task-node>"
-        + "  <end-state name='end' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(subProcess);
+      + "  <start-state>"
+      + "    <transition to='wait' />"
+      + "  </start-state>"
+      + "  <task-node name='wait'>"
+      + "    <task>"
+      + "      <timer duedate='2 seconds' class='MyTimerClass' />"
+      + "    </task>"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(subProcess);
 
     ProcessDefinition superProcess = ProcessDefinition.parseXmlString("<process-definition name='super'>"
-        + "  <start-state>"
-        + "    <transition to='subprocess' />"
-        + "  </start-state>"
-        + "  <process-state name='subprocess'>"
-        + "    <sub-process name='sub' />"
-        + "    <transition to='s'/>"
-        + "  </process-state>"
-        + "  <state name='s' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(superProcess);
+      + "  <start-state>"
+      + "    <transition to='subprocess' />"
+      + "  </start-state>"
+      + "  <process-state name='subprocess'>"
+      + "    <sub-process name='sub' />"
+      + "    <transition to='s'/>"
+      + "  </process-state>"
+      + "  <state name='s' />"
+      + "</process-definition>");
+    deployProcessDefinition(superProcess);
 
-    newTransaction();
-    try {
-      ProcessInstance pi = jbpmContext.newProcessInstanceForUpdate("super");
-      pi.signal();
+    ProcessInstance pi = jbpmContext.newProcessInstanceForUpdate("super");
+    pi.signal();
 
-      ProcessInstance subPi = pi.getRootToken().getSubProcessInstance();
-      assertEquals("wait", subPi.getRootToken().getNode().getName());
+    ProcessInstance subPi = pi.getRootToken().getSubProcessInstance();
+    assertEquals("wait", subPi.getRootToken().getNode().getName());
 
-      pi = saveAndReload(pi);
-      pi.end();
-      pi.getTaskMgmtInstance().endAll();
+    pi = saveAndReload(pi);
+    pi.end();
+    pi.getTaskMgmtInstance().endAll();
 
-      pi = saveAndReload(pi);
-      assertTrue(pi.hasEnded());
-      subPi = pi.getRootToken().getSubProcessInstance();
-      assertTrue(subPi.hasEnded());
+    pi = saveAndReload(pi);
+    assertTrue(pi.hasEnded());
+    subPi = pi.getRootToken().getSubProcessInstance();
+    assertTrue(subPi.hasEnded());
 
-      for (Iterator i = subPi.getTaskMgmtInstance().getTaskInstances().iterator(); i.hasNext();) {
-        TaskInstance taskInstance = (TaskInstance) i.next();
-        assertFalse(taskInstance.isSignalling());
-        assertFalse(taskInstance.hasEnded());
-      }
+    for (Iterator i = subPi.getTaskMgmtInstance().getTaskInstances().iterator(); i.hasNext();) {
+      TaskInstance taskInstance = (TaskInstance) i.next();
+      assertFalse(taskInstance.isSignalling());
+      assertFalse(taskInstance.hasEnded());
     }
-    finally {
-      graphSession.deleteProcessDefinition(superProcess.getId());
-      graphSession.deleteProcessDefinition(subProcess.getId());
-    }
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SubProcessPlusConcurrencyDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -24,71 +24,49 @@
 import org.jbpm.context.exe.ContextInstance;
 import org.jbpm.db.AbstractDbTestCase;
 import org.jbpm.graph.def.ActionHandler;
-import org.jbpm.graph.def.Node;
 import org.jbpm.graph.def.ProcessDefinition;
-import org.jbpm.graph.node.ProcessState;
 
 public class SubProcessPlusConcurrencyDbTest extends AbstractDbTestCase {
 
-  void deployProcessDefinitions() {
+  protected void setUp() throws Exception {
+    super.setUp();
+
     ProcessDefinition subProcess = ProcessDefinition.parseXmlString("<process-definition name='sub'>"
-        + "  <start-state>"
-        + "    <transition to='wait' />"
-        + "  </start-state>"
-        + "  <state name='wait'>"
-        + "    <transition to='end' />"
-        + "  </state>"
-        + "  <end-state name='end' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(subProcess);
+      + "  <start-state>"
+      + "    <transition to='wait' />"
+      + "  </start-state>"
+      + "  <state name='wait'>"
+      + "    <transition to='end' />"
+      + "  </state>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(subProcess);
 
     ProcessDefinition superProcess = ProcessDefinition.parseXmlString("<process-definition name='super'>"
-        + "  <start-state>"
-        + "    <transition name='without subprocess' to='fork' />"
-        + "    <transition name='with subprocess' to='subprocess' />"
-        + "  </start-state>"
-        + "  <process-state name='subprocess'>"
-        + "    <sub-process name='sub' />"
-        + "    <transition to='fork'/>"
-        + "  </process-state>"
-        + "  <fork name='fork'>"
-        + "    <transition name='a' to='join' />"
-        + "    <transition name='b' to='join' />"
-        + "  </fork>"
-        + "  <join name='join' lock='UPGRADE'>"
-        + "    <transition to='s' />"
-        + "  </join>"
-        + "  <state name='s'>"
-        + "    <event type='node-enter'>"
-        + "      <action class='org.jbpm.graph.exe.SubProcessPlusConcurrencyDbTest$EnterNodeS' />"
-        + "    </event>"
-        + "  </state>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(superProcess);
-
-    newTransaction();
+      + "  <start-state>"
+      + "    <transition name='without subprocess' to='fork' />"
+      + "    <transition name='with subprocess' to='subprocess' />"
+      + "  </start-state>"
+      + "  <process-state name='subprocess'>"
+      + "    <sub-process name='sub' />"
+      + "    <transition to='fork'/>"
+      + "  </process-state>"
+      + "  <fork name='fork'>"
+      + "    <transition name='a' to='join' />"
+      + "    <transition name='b' to='join' />"
+      + "  </fork>"
+      + "  <join name='join' lock='UPGRADE'>"
+      + "    <transition to='s' />"
+      + "  </join>"
+      + "  <state name='s'>"
+      + "    <event type='node-enter'>"
+      + "      <action class='org.jbpm.graph.exe.SubProcessPlusConcurrencyDbTest$EnterNodeS' />"
+      + "    </event>"
+      + "  </state>"
+      + "</process-definition>");
+    deployProcessDefinition(superProcess);
   }
 
-  public void deleteProcessDefinitions() {
-    ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("super");
-    Node node = processDefinition.getNode("subprocess");
-    ProcessState processState = (ProcessState) session.load(ProcessState.class, new Long(
-        node.getId()));
-    processState.setSubProcessDefinition(null);
-
-    newTransaction();
-
-    processDefinition = graphSession.findLatestProcessDefinition("sub");
-    graphSession.deleteProcessDefinition(processDefinition.getId());
-
-    newTransaction();
-
-    processDefinition = graphSession.findLatestProcessDefinition("super");
-    graphSession.deleteProcessDefinition(processDefinition.getId());
-
-    newTransaction();
-  }
-
   public static class EnterNodeS implements ActionHandler {
 
     private static final long serialVersionUID = 1L;
@@ -100,51 +78,32 @@
         contextInstance.setVariable("invocationCount", new Integer(1));
       }
       else {
-        contextInstance.setVariable("invocationCount", new Integer(invocationCount.intValue() + 1));
+        contextInstance.setVariable("invocationCount", new Integer(
+          invocationCount.intValue() + 1));
       }
     }
   }
 
   public void testWithoutSubProcess() {
-    deployProcessDefinitions();
-
-    try {
-      ProcessInstance pi = jbpmContext.newProcessInstanceForUpdate("super");
-      pi.signal("without subprocess");
-      assertEquals("s", pi.getRootToken().getNode().getName());
-      assertEquals(new Integer(1), pi.getContextInstance().getVariable("invocationCount"));
-      newTransaction();
-
-    }
-    finally {
-      deleteProcessDefinitions();
-    }
+    ProcessInstance pi = jbpmContext.newProcessInstanceForUpdate("super");
+    pi.signal("without subprocess");
+    assertEquals("s", pi.getRootToken().getNode().getName());
+    assertEquals(new Integer(1), pi.getContextInstance().getVariable("invocationCount"));
   }
 
   public void testWithSubProcess() {
-    deployProcessDefinitions();
+    ProcessInstance pi = jbpmContext.newProcessInstanceForUpdate("super");
+    pi.signal("with subprocess");
 
-    try {
-      ProcessInstance pi = jbpmContext.newProcessInstanceForUpdate("super");
-      pi.signal("with subprocess");
+    ProcessInstance subPi = pi.getRootToken().getSubProcessInstance();
+    assertEquals("wait", subPi.getRootToken().getNode().getName());
 
-      ProcessInstance subPi = pi.getRootToken().getSubProcessInstance();
-      assertEquals("wait", subPi.getRootToken().getNode().getName());
+    newTransaction();
+    subPi = jbpmContext.loadProcessInstanceForUpdate(subPi.getId());
+    subPi.signal();
+    pi = subPi.getSuperProcessToken().getProcessInstance();
 
-      newTransaction();
-
-      subPi = jbpmContext.loadProcessInstanceForUpdate(subPi.getId());
-      subPi.signal();
-      pi = subPi.getSuperProcessToken().getProcessInstance();
-
-      assertEquals("s", pi.getRootToken().getNode().getName());
-      assertEquals(new Integer(1), pi.getContextInstance().getVariable("invocationCount"));
-
-      newTransaction();
-
-    }
-    finally {
-      deleteProcessDefinitions();
-    }
+    assertEquals("s", pi.getRootToken().getNode().getName());
+    assertEquals(new Integer(1), pi.getContextInstance().getVariable("invocationCount"));
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SuperStateActionExecutionDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SuperStateActionExecutionDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SuperStateActionExecutionDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -34,103 +34,89 @@
 
 public class SuperStateActionExecutionDbTest extends AbstractDbTestCase {
 
-  static List executedActions = null;
-  
-  public static class ExecutedAction
-  {
-    // ExectionContext members
-    Token token = null;
-    Event event = null;
-    GraphElement eventSource = null;
-    Action action = null;
-    Throwable exception = null;
-    // The node returned by the ExecutionContext at the time of execution
-    Node node = null;
+  static List executedActions = new ArrayList();
+
+  public static class ExecutedAction {
+    Token token;
+    Event event;
+    GraphElement eventSource;
+    Action action;
+    Throwable exception;
+    Node node;
+
+    public ExecutedAction(ExecutionContext executionContext) {
+      token = executionContext.getToken();
+      event = executionContext.getEvent();
+      eventSource = executionContext.getEventSource();
+      action = executionContext.getAction();
+      exception = executionContext.getException();
+      node = executionContext.getNode();
+    }
   }
 
-  public static class Recorder implements ActionHandler
-  {
+  public static class Recorder implements ActionHandler {
     private static final long serialVersionUID = 1L;
 
-    public void execute(ExecutionContext executionContext) throws Exception
-    {
-      ExecutedAction executedAction = new ExecutedAction();
-      executedAction.token = executionContext.getToken();
-      executedAction.event = executionContext.getEvent();
-      executedAction.eventSource = executionContext.getEventSource();
-      executedAction.action = executionContext.getAction();
-      executedAction.exception = executionContext.getException();
-      executedAction.node = executionContext.getNode();
-      executedActions.add(executedAction);
+    public void execute(ExecutionContext executionContext) throws Exception {
+      executedActions.add(new ExecutedAction(executionContext));
     }
   }
-  
-  protected void setUp() throws Exception
-  {
-    super.setUp();
-    executedActions = new ArrayList();
-  }
 
   public void testSuperStateEnterViaTransitionToSuperState() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='enterviatransitiontosuperstate'>" +
-      "  <start-state name='start'>" +
-      "    <transition to='superstate'/>" +
-      "  </start-state>" +
-      "  <super-state name='superstate'>" +
-      "    <event type='superstate-enter'>" +
-      "      <action class='"+Recorder.class.getName()+"' />" +
-      "    </event>" +
-      "    <super-state name='nestedsuperstate'>" +
-      "      <event type='superstate-enter'>" +
-      "        <action class='"+Recorder.class.getName()+"' />" +
-      "      </event>" +
-      "      <state name='insidenestedsuperstate' />" +
-      "    </super-state>" +
-      "  </super-state>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
-      
-      // create the process instance
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("enterviatransitiontosuperstate");
-      
-      processInstance = saveAndReload(processInstance);
-      
-      processInstance.signal();
-      
-      assertEquals(3, executedActions.size());
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='enterviatransitiontosuperstate'>"
+      + "  <start-state name='start'>"
+      + "    <transition to='superstate'/>"
+      + "  </start-state>"
+      + "  <super-state name='superstate'>"
+      + "    <event type='superstate-enter'>"
+      + "      <action class='"
+      + Recorder.class.getName()
+      + "' />"
+      + "    </event>"
+      + "    <super-state name='nestedsuperstate'>"
+      + "      <event type='superstate-enter'>"
+      + "        <action class='"
+      + Recorder.class.getName()
+      + "' />"
+      + "      </event>"
+      + "      <state name='insidenestedsuperstate' />"
+      + "    </super-state>"
+      + "  </super-state>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      // the first action called is the superstate-enter on the 'superstate'
-      ExecutedAction executedAction = (ExecutedAction) executedActions.get(0);
-      assertEquals("superstate-enter", executedAction.event.getEventType());
-      assertEquals("superstate", executedAction.event.getGraphElement().getName());
-      assertEquals("superstate", executedAction.eventSource.getName());
-      assertEquals(processInstance.getRootToken(), executedAction.token);
-      assertNull(executedAction.node);
-      
-      // the second action called is the superstate-enter on the 'nestedsuperstate'
-      executedAction = (ExecutedAction) executedActions.get(1);
-      assertEquals("superstate-enter", executedAction.event.getEventType());
-      assertEquals("nestedsuperstate", executedAction.event.getGraphElement().getName());
-      assertEquals("nestedsuperstate", executedAction.eventSource.getName());
-      assertEquals(processInstance.getRootToken(), executedAction.token);
-      assertNull(executedAction.node);
+    // create the process instance
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("enterviatransitiontosuperstate");
 
-      // the third action called is the *propagated* event of the 'nestedsuperstate' to the 'superstate'
-      executedAction = (ExecutedAction) executedActions.get(2);
-      assertEquals("superstate-enter", executedAction.event.getEventType());
-      assertEquals("superstate", executedAction.event.getGraphElement().getName());
-      assertEquals("nestedsuperstate", executedAction.eventSource.getName());
-      assertEquals(processInstance.getRootToken(), executedAction.token);
-      assertNull(executedAction.node);
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    processInstance = saveAndReload(processInstance);
+    processInstance.signal();
+
+    assertEquals(3, executedActions.size());
+
+    // the first action called is the superstate-enter on the 'superstate'
+    ExecutedAction executedAction = (ExecutedAction) executedActions.get(0);
+    assertEquals("superstate-enter", executedAction.event.getEventType());
+    assertEquals("superstate", executedAction.event.getGraphElement().getName());
+    assertEquals("superstate", executedAction.eventSource.getName());
+    assertEquals(processInstance.getRootToken(), executedAction.token);
+    assertNull(executedAction.node);
+
+    // the second action called is the superstate-enter on the
+    // 'nestedsuperstate'
+    executedAction = (ExecutedAction) executedActions.get(1);
+    assertEquals("superstate-enter", executedAction.event.getEventType());
+    assertEquals("nestedsuperstate", executedAction.event.getGraphElement().getName());
+    assertEquals("nestedsuperstate", executedAction.eventSource.getName());
+    assertEquals(processInstance.getRootToken(), executedAction.token);
+    assertNull(executedAction.node);
+
+    // the third action called is the *propagated* event of the
+    // 'nestedsuperstate' to the 'superstate'
+    executedAction = (ExecutedAction) executedActions.get(2);
+    assertEquals("superstate-enter", executedAction.event.getEventType());
+    assertEquals("superstate", executedAction.event.getGraphElement().getName());
+    assertEquals("nestedsuperstate", executedAction.eventSource.getName());
+    assertEquals(processInstance.getRootToken(), executedAction.token);
+    assertNull(executedAction.node);
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SuspendAndResumeDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SuspendAndResumeDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/SuspendAndResumeDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -33,113 +33,99 @@
 
   public void testSuspend() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='suspendable process'>"
-        + "  <start-state>"
-        + "    <transition to='so something usefull' />"
-        + "  </start-state>"
-        + "  <task-node name='so something usefull'>"
-        + "    <timer duedate='20 minutes' transition='timer expired' />"
-        + "    <task name='be silent'>"
-        + "      <assignment actor-id='manager' />"
-        + "    </task>"
-        + "    <transition name='timer expired' to='error state' />"
-        + "  </task-node>"
-        + "  <state name='error state' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='so something usefull' />"
+      + "  </start-state>"
+      + "  <task-node name='so something usefull'>"
+      + "    <timer duedate='20 minutes' transition='timer expired' />"
+      + "    <task name='be silent'>"
+      + "      <assignment actor-id='manager' />"
+      + "    </task>"
+      + "    <transition name='timer expired' to='error state' />"
+      + "  </task-node>"
+      + "  <state name='error state' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("suspendable process");
+    processInstance.signal();
+    jbpmContext.save(processInstance);
+
     newTransaction();
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("suspendable process");
-      processInstance.signal();
-      jbpmContext.save(processInstance);
+    List tasks = jbpmContext.getTaskList("manager");
+    assertNotNull(tasks);
+    assertEquals(1, tasks.size());
 
-      newTransaction();
-      List tasks = jbpmContext.getTaskList("manager");
-      assertNotNull(tasks);
-      assertEquals(1, tasks.size());
+    assertEquals(1, getNbrOfJobsAvailable());
 
-      assertEquals(1, getNbrOfJobsAvailable());
+    processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
+    processInstance.suspend();
+    jbpmContext.save(processInstance);
 
-      processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
-      processInstance.suspend();
-      jbpmContext.save(processInstance);
+    newTransaction();
+    tasks = jbpmContext.getTaskList("manager");
+    assertNotNull(tasks);
+    assertEquals(0, tasks.size());
 
-      newTransaction();
-      tasks = jbpmContext.getTaskList("manager");
-      assertNotNull(tasks);
-      assertEquals(0, tasks.size());
-
-      assertNull(jobSession.getFirstAcquirableJob(null));
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    assertNull(jobSession.getFirstAcquirableJob(null));
   }
 
   public void testResume() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='suspendable process'>"
-        + "  <start-state>"
-        + "    <transition to='so something usefull' />"
-        + "  </start-state>"
-        + "  <task-node name='so something usefull'>"
-        + "    <timer duedate='20 minutes' transition='timer expired' />"
-        + "    <task name='completedTask'>"
-        + "      <assignment actor-id='manager' />"
-        + "    </task>"
-        + "    <task name='notCompletedTask'>"
-        + "      <assignment actor-id='manager' />"
-        + "    </task>"
-        + "    <transition name='timer expired' to='error state' />"
-        + "  </task-node>"
-        + "  <state name='error state' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='so something usefull' />"
+      + "  </start-state>"
+      + "  <task-node name='so something usefull'>"
+      + "    <timer duedate='20 minutes' transition='timer expired' />"
+      + "    <task name='completedTask'>"
+      + "      <assignment actor-id='manager' />"
+      + "    </task>"
+      + "    <task name='notCompletedTask'>"
+      + "      <assignment actor-id='manager' />"
+      + "    </task>"
+      + "    <transition name='timer expired' to='error state' />"
+      + "  </task-node>"
+      + "  <state name='error state' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("suspendable process");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("suspendable process");
+    processInstance.signal();
 
-      TaskInstance completedTask = findTask(processInstance, "completedTask");
-      assertTrue(completedTask.isOpen());
-      completedTask.end();
-      assertFalse(completedTask.isOpen());
-      jbpmContext.save(processInstance);
+    TaskInstance completedTask = findTask(processInstance, "completedTask");
+    assertTrue(completedTask.isOpen());
+    completedTask.end();
+    assertFalse(completedTask.isOpen());
+    jbpmContext.save(processInstance);
 
-      newTransaction();
-      processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
-      completedTask = findTask(processInstance, "completedTask");
-      assertFalse(completedTask.isOpen());
-      processInstance.suspend();
-      jbpmContext.save(processInstance);
+    newTransaction();
+    processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
+    completedTask = findTask(processInstance, "completedTask");
+    assertFalse(completedTask.isOpen());
+    processInstance.suspend();
+    jbpmContext.save(processInstance);
 
-      newTransaction();
-      processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
-      processInstance.resume();
-      jbpmContext.save(processInstance);
+    newTransaction();
+    processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
+    processInstance.resume();
+    jbpmContext.save(processInstance);
 
-      newTransaction();
-      processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
-      completedTask = findTask(processInstance, "completedTask");
-      assertFalse(completedTask.isOpen());
+    newTransaction();
+    processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
+    completedTask = findTask(processInstance, "completedTask");
+    assertFalse(completedTask.isOpen());
 
-      List tasks = jbpmContext.getTaskList("manager");
-      assertEquals(1, tasks.size());
+    List tasks = jbpmContext.getTaskList("manager");
+    assertEquals(1, tasks.size());
 
-      assertEquals(1, getNbrOfJobsAvailable());
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    assertEquals(1, getNbrOfJobsAvailable());
   }
 
   private TaskInstance findTask(ProcessInstance processInstance, String taskName) {
     TaskMgmtInstance tmi = processInstance.getTaskMgmtInstance();
     for (Iterator iter = tmi.getTaskInstances().iterator(); iter.hasNext();) {
       TaskInstance taskInstance = (TaskInstance) iter.next();
-      if (taskName.equals(taskInstance.getName())) {
-        return taskInstance;
-      }
+      if (taskName.equals(taskInstance.getName())) return taskInstance;
     }
     return null;
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/TokenDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/TokenDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/exe/TokenDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -33,13 +33,11 @@
 public class TokenDbTest extends AbstractDbTestCase {
 
   public void testTokenName() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <start-state />" +
-      "</process-definition>" );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <start-state />"
+      + "</process-definition>");
     graphSession.saveProcessDefinition(processDefinition);
-    try
-    {
+    try {
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
       processInstance.getRootToken().name = "roottoken";
 
@@ -47,55 +45,48 @@
 
       assertEquals("roottoken", processInstance.getRootToken().getName());
     }
-    finally
-    {
+    finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
 
   public void testTokenStartAndEndDate() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <start-state>" +
-      "    <transition to='end' />" +
-      "  </start-state>" +
-      "  <end-state name='end'/>" +
-      "</process-definition>" );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <start-state>"
+      + "    <transition to='end' />"
+      + "  </start-state>"
+      + "  <end-state name='end'/>"
+      + "</process-definition>");
     graphSession.saveProcessDefinition(processDefinition);
-    try
-    {
+    try {
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
       processInstance.signal();
 
       processInstance = saveAndReload(processInstance);
       Token token = processInstance.getRootToken();
-      
+
       assertNotNull(token.getStart());
       assertNotNull(token.getEnd());
     }
-    finally
-    {
+    finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
 
   public void testTokenNode() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <start-state name='s' />" +
-      "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <start-state name='s' />"
+      + "</process-definition>");
     graphSession.saveProcessDefinition(processDefinition);
-    try
-    {
+    try {
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
       processInstance = saveAndReload(processInstance);
-      
+
       Node s = processInstance.getProcessDefinition().getStartState();
-      
-      assertSame(s , processInstance.getRootToken().getNode());
+
+      assertSame(s, processInstance.getRootToken().getNode());
     }
-    finally
-    {
+    finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
@@ -103,15 +94,13 @@
   public void testTokenProcessInstance() {
     ProcessDefinition processDefinition = new ProcessDefinition();
     graphSession.saveProcessDefinition(processDefinition);
-    try
-    {
+    try {
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
       processInstance = saveAndReload(processInstance);
-      
-      assertSame(processInstance , processInstance.getRootToken().getProcessInstance());
+
+      assertSame(processInstance, processInstance.getRootToken().getProcessInstance());
     }
-    finally
-    {
+    finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
@@ -119,28 +108,25 @@
   public void testTokenParent() {
     ProcessDefinition processDefinition = new ProcessDefinition();
     graphSession.saveProcessDefinition(processDefinition);
-    try
-    {
+    try {
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
       new Token(processInstance.getRootToken(), "one");
 
       processInstance = saveAndReload(processInstance);
       Token rootToken = processInstance.getRootToken();
       Token childOne = rootToken.getChild("one");
-      
-      assertSame(rootToken , childOne.getParent());
+
+      assertSame(rootToken, childOne.getParent());
     }
-    finally
-    {
+    finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
-  
+
   public void testTokenChildren() {
     ProcessDefinition processDefinition = new ProcessDefinition();
     graphSession.saveProcessDefinition(processDefinition);
-    try
-    {
+    try {
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
       new Token(processInstance.getRootToken(), "one");
       new Token(processInstance.getRootToken(), "two");
@@ -151,59 +137,47 @@
       Token childOne = rootToken.getChild("one");
       Token childTwo = rootToken.getChild("two");
       Token childThree = rootToken.getChild("three");
-      
-      assertEquals("one" , childOne.getName());
-      assertEquals("two" , childTwo.getName());
-      assertEquals("three" , childThree.getName());
+
+      assertEquals("one", childOne.getName());
+      assertEquals("two", childTwo.getName());
+      assertEquals("three", childThree.getName());
     }
-    finally
-    {
+    finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
     }
   }
 
   public void testAvailableTransitions() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-        "<process-definition name='conditionsprocess'>" +
-        "  <start-state name='zero'>" +
-        "    <transition to='one'   condition='#{a==5}' />" +
-        "    <transition to='two'   condition='#{a&gt;7}' />" +
-        "    <transition to='three' />" +
-        "    <transition to='four'  condition='#{a&lt;7}' />" +
-        "  </start-state>" +
-        "  <state name='one' />" +
-        "  <state name='two' />" +
-        "  <state name='three' />" +
-        "  <state name='four' />" +
-        "</process-definition>"
-      );
-      jbpmContext.deployProcessDefinition(processDefinition);
-      try
-      {
-        newTransaction();
-        
-        ProcessInstance processInstance = jbpmContext.newProcessInstance("conditionsprocess");
-        processInstance.getContextInstance().setVariable("a", new Integer(5));
-        processInstance = saveAndReload(processInstance);
-        
-        Set availableTransitions = processInstance.getRootToken().getAvailableTransitions();
-        Set availableToNames = new HashSet();
-        Iterator iter = availableTransitions.iterator();
-        while (iter.hasNext()) {
-          Transition transition = (Transition) iter.next();
-          availableToNames.add(transition.getTo().getName());
-        }
-        
-        Set expectedToNames = new HashSet();
-        expectedToNames.add("one");
-        expectedToNames.add("three");
-        expectedToNames.add("four");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='conditionsprocess'>"
+      + "  <start-state name='zero'>"
+      + "    <transition to='one'   condition='#{a==5}' />"
+      + "    <transition to='two'   condition='#{a&gt;7}' />"
+      + "    <transition to='three' />"
+      + "    <transition to='four'  condition='#{a&lt;7}' />"
+      + "  </start-state>"
+      + "  <state name='one' />"
+      + "  <state name='two' />"
+      + "  <state name='three' />"
+      + "  <state name='four' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-        assertEquals(expectedToNames, availableToNames);
-      }
-      finally
-      {
-        jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-      }
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("conditionsprocess");
+    processInstance.getContextInstance().setVariable("a", new Integer(5));
+    processInstance = saveAndReload(processInstance);
+
+    Set availableTransitions = processInstance.getRootToken().getAvailableTransitions();
+    Set availableToNames = new HashSet();
+    for (Iterator iter = availableTransitions.iterator(); iter.hasNext();) {
+      Transition transition = (Transition) iter.next();
+      availableToNames.add(transition.getTo().getName());
+    }
+
+    Set expectedToNames = new HashSet();
+    expectedToNames.add("one");
+    expectedToNames.add("three");
+    expectedToNames.add("four");
+
+    assertEquals(expectedToNames, availableToNames);
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/JoinDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/JoinDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/JoinDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -56,9 +56,8 @@
       URL cfgResource = getClass().getClassLoader().getResource("hibernate.cfg.xml");
       try {
         InputStream cfgSource = cfgResource.openStream();
-        OutputStream cfgSink = new FileOutputStream(new File(URI
-            .create(cfgResource.toString())
-            .resolve("hibernate.join.cfg.xml")));
+        OutputStream cfgSink = new FileOutputStream(new File(URI.create(cfgResource.toString())
+          .resolve("hibernate.join.cfg.xml")));
 
         sed("Join\\.hbm\\.xml", "Join.lock.hbm.xml", cfgSource, cfgSink);
 
@@ -69,14 +68,13 @@
         throw new JbpmException("could not edit hibernate configuration", e);
       }
       jbpmConfiguration = JbpmConfiguration.parseXmlString("<jbpm-configuration>"
-          + "  <string name='resource.hibernate.cfg.xml' value='hibernate.join.cfg.xml' />"
-          + "</jbpm-configuration>");
+        + "  <string name='resource.hibernate.cfg.xml' value='hibernate.join.cfg.xml' />"
+        + "</jbpm-configuration>");
 
       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
       try {
         DbPersistenceServiceFactory persistenceServiceFactory = (DbPersistenceServiceFactory) jbpmContext
-            .getServiceFactory(Services.SERVICENAME_PERSISTENCE);
-
+          .getServiceFactory(Services.SERVICENAME_PERSISTENCE);
         JbpmSchema jbpmSchema = new JbpmSchema(persistenceServiceFactory.getConfiguration());
         jbpmSchema.updateTable("JBPM_NODE");
       }
@@ -93,7 +91,7 @@
   }
 
   private static void sed(String regex, String replacement, InputStream inStream,
-      OutputStream outStream) throws IOException {
+    OutputStream outStream) throws IOException {
     BufferedReader reader = new BufferedReader(new InputStreamReader(inStream));
     PrintWriter writer = new PrintWriter(outStream);
     Pattern pattern = Pattern.compile(regex);
@@ -105,27 +103,19 @@
   }
 
   public void testParentLockMode() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='"
-        + getName()
-        + "'>"
-        + "  <join name='read' lock='READ' />"
-        + "  <join name='nowait' lock='UPGRADE_NOWAIT' />"
-        + "  <join name='upgrade' lock='pessimistic' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='lock mode'>"
+      + "  <join name='read' lock='READ' />"
+      + "  <join name='nowait' lock='UPGRADE_NOWAIT' />"
+      + "  <join name='upgrade' lock='pessimistic' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      processDefinition = graphSession.findLatestProcessDefinition(getName());
-      Join join = (Join) processDefinition.getNode("read");
-      assertEquals(LockMode.READ.toString(), join.getParentLockMode());
-      join = (Join) processDefinition.getNode("nowait");
-      assertEquals(LockMode.UPGRADE_NOWAIT.toString(), join.getParentLockMode());
-      join = (Join) processDefinition.getNode("upgrade");
-      assertEquals(LockMode.UPGRADE.toString(), join.getParentLockMode());
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    processDefinition = graphSession.findLatestProcessDefinition("lock mode");
+    Join join = (Join) processDefinition.getNode("read");
+    assertEquals(LockMode.READ.toString(), join.getParentLockMode());
+    join = (Join) processDefinition.getNode("nowait");
+    assertEquals(LockMode.UPGRADE_NOWAIT.toString(), join.getParentLockMode());
+    join = (Join) processDefinition.getNode("upgrade");
+    assertEquals(LockMode.UPGRADE.toString(), join.getParentLockMode());
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/JpdlDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/JpdlDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/JpdlDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,20 +36,19 @@
 public class JpdlDbTest extends AbstractDbTestCase {
 
   public void testDecision() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <decision name='d'>" +
-      "    <transition name='one' to='d'>" +
-      "      <condition>a == 1</condition>" +
-      "    </transition>" +
-      "    <transition name='two' to='d'>" +
-      "      <condition>a == 2</condition>" +
-      "    </transition>" +
-      "    <transition name='three' to='d'>" +
-      "      <condition>a == 3</condition>" +
-      "    </transition>" +
-      "  </decision>" +
-      "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <decision name='d'>"
+      + "    <transition name='one' to='d'>"
+      + "      <condition>a == 1</condition>"
+      + "    </transition>"
+      + "    <transition name='two' to='d'>"
+      + "      <condition>a == 2</condition>"
+      + "    </transition>"
+      + "    <transition name='three' to='d'>"
+      + "      <condition>a == 3</condition>"
+      + "    </transition>"
+      + "  </decision>"
+      + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
     try {
@@ -73,27 +72,27 @@
   }
 
   public void testDecisionDelegation() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <decision name='d' >" +
-      "    <handler class='org.jbpm.graph.node.JpdlDbTest$MyDecisionHandler' >" +
-      "      <decisionHandlerConfigText>testing... one, two... testing</decisionHandlerConfigText>" +
-      "    </handler>" +
-      "    <transition name='one' to='d'/>" +
-      "    <transition name='two' to='d'/>" +
-      "    <transition name='three' to='d'/>" +
-      "  </decision>" +
-      "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <decision name='d' >"
+      + "    <handler class='org.jbpm.graph.node.JpdlDbTest$MyDecisionHandler'>"
+      + "      <decisionHandlerConfigText>testing... one, two... testing</decisionHandlerConfigText>"
+      + "    </handler>"
+      + "    <transition name='one' to='d'/>"
+      + "    <transition name='two' to='d'/>"
+      + "    <transition name='three' to='d'/>"
+      + "  </decision>"
+      + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
     try {
       Decision decision = (Decision) processDefinition.getNode("d");
       Delegation decisionDelegation = decision.getDecisionDelegation();
       assertNotNull(decisionDelegation);
-      assertEquals("org.jbpm.graph.node.JpdlDbTest$MyDecisionHandler", decisionDelegation
-        .getClassName());
-      MyDecisionHandler decisionHandler = (MyDecisionHandler) decisionDelegation.instantiate();
-      assertEquals("testing... one, two... testing", decisionHandler.decisionHandlerConfigText);
+      assertEquals("org.jbpm.graph.node.JpdlDbTest$MyDecisionHandler",
+        decisionDelegation.getClassName());
+      assertEquals(
+        "<decisionHandlerConfigText>testing... one, two... testing</decisionHandlerConfigText>",
+        decisionDelegation.getConfiguration());
     }
     finally {
       jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
@@ -101,10 +100,9 @@
   }
 
   public void testFork() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <fork name='f' />" +
-      "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <fork name='f' />"
+      + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
     try {
@@ -117,10 +115,9 @@
   }
 
   public void testJoin() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <join name='j' />" +
-      "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <join name='j' />"
+      + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
     try {
@@ -133,16 +130,15 @@
   }
 
   public void testScript() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <script name='s'>" +
-      "    <variable name='a' access='read' />" +
-      "    <variable name='b' access='read-write' />" +
-      "    <variable name='c' access='read-write' />" +
-      "    <variable name='d' access='read-write-required' />" +
-      "    <expression>e = m * Math.pow(c,2);</expression>" +
-      "  </script>" +
-      "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <script name='s'>"
+      + "    <variable name='a' access='read' />"
+      + "    <variable name='b' access='read-write' />"
+      + "    <variable name='c' access='read-write' />"
+      + "    <variable name='d' access='read-write-required' />"
+      + "    <expression>e = m * Math.pow(c,2);</expression>"
+      + "  </script>"
+      + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
     try {
@@ -157,10 +153,9 @@
   }
 
   public void testState() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <state name='s' />" +
-      "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <state name='s' />"
+      + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
     try {
@@ -173,17 +168,15 @@
   }
 
   public void testTaskNode() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <task-node name='t' signal='first-wait' create-tasks='false'>" +
-      "    <task name='change the world once' blocking='true'>" +
-      "      <assignment class='anyonebutme' />" +
-      "    </task>" +
-      "    <task name='change the world twice' />" +
-      "    <task name='change the world three times' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <task-node name='t' signal='first-wait' create-tasks='false'>"
+      + "    <task name='change the world once' blocking='true'>"
+      + "      <assignment class='anyonebutme' />"
+      + "    </task>"
+      + "    <task name='change the world twice' />"
+      + "    <task name='change the world three times' />"
+      + "  </task-node>"
+      + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
     try {
@@ -219,26 +212,25 @@
   }
 
   public void testNoAccessToObsoleteDecisionConditionTable() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      " <start-state>" +
-      " <transition to='d' />" +
-      " </start-state>" +
-      " <decision name='d'>" +
-      " <transition name='one' to='a'>" +
-      " <condition>#{a == 1}</condition>" +
-      " </transition>" +
-      " <transition name='two' to='b'>" +
-      " <condition>#{a == 2}</condition>" +
-      " </transition>" +
-      " <transition name='three' to='c'>" +
-      " <condition>#{a == 3}</condition>" +
-      " </transition>" +
-      " </decision>" +
-      " <state name='a' />" +
-      " <state name='b' />" +
-      " <state name='c' />" +
-      "</process-definition>");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + " <start-state>"
+      + " <transition to='d' />"
+      + " </start-state>"
+      + " <decision name='d'>"
+      + " <transition name='one' to='a'>"
+      + " <condition>#{a == 1}</condition>"
+      + " </transition>"
+      + " <transition name='two' to='b'>"
+      + " <condition>#{a == 2}</condition>"
+      + " </transition>"
+      + " <transition name='three' to='c'>"
+      + " <condition>#{a == 3}</condition>"
+      + " </transition>"
+      + " </decision>"
+      + " <state name='a' />"
+      + " <state name='b' />"
+      + " <state name='c' />"
+      + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
     try {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/ProcessStateDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -38,13 +38,8 @@
       + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
-    try {
-      ProcessState processState = (ProcessState) processDefinition.getNode("subprocess");
-      assertEquals("subprocess", processState.getName());
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition);
-    }
+    ProcessState processState = (ProcessState) processDefinition.getNode("subprocess");
+    assertEquals("subprocess", processState.getName());
   }
 
   public void testRecursiveProcessDefinition() {
@@ -62,38 +57,28 @@
       + "  </process-state>"
       + "  <end-state name='end' />"
       + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    processDefinition = saveAndReload(processDefinition);
-    try {
-      ProcessInstance superProcessInstance = processDefinition.createProcessInstance();
-      superProcessInstance.signal();
-      superProcessInstance.signal();
+    ProcessInstance superProcessInstance = jbpmContext.newProcessInstance("recursive process");
+    superProcessInstance.signal();
+    superProcessInstance.signal();
 
-      superProcessInstance = saveAndReload(superProcessInstance);
+    superProcessInstance = saveAndReload(superProcessInstance);
+    Token superToken = superProcessInstance.getRootToken();
+    assertEquals("subprocessnode", superToken.getNode().getName());
 
-      Token superToken = superProcessInstance.getRootToken();
-      assertEquals("subprocessnode", superToken.getNode().getName());
+    ProcessInstance subProcessInstance = superToken.getSubProcessInstance();
+    assertNotNull(subProcessInstance);
+    assertEquals("recursive process", subProcessInstance.getProcessDefinition().getName());
 
-      ProcessInstance subProcessInstance = superToken.getSubProcessInstance();
-      assertNotNull(subProcessInstance);
-      assertEquals("recursive process",
-          subProcessInstance.getProcessDefinition().getName());
-      Token subToken = subProcessInstance.getRootToken();
+    Token subToken = subProcessInstance.getRootToken();
+    assertEquals("first wait", subToken.getNode().getName());
+    subProcessInstance.signal("done");
 
-      assertEquals("first wait", subToken.getNode().getName());
-
-      subProcessInstance.signal("done");
-
-      subProcessInstance = saveAndReload(subProcessInstance);
-      superProcessInstance = graphSession.loadProcessInstance(superProcessInstance.getId());
-
-      assertTrue(subProcessInstance.hasEnded());
-      assertTrue(superProcessInstance.hasEnded());
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinition.getId());
-    }
+    subProcessInstance = saveAndReload(subProcessInstance);
+    superProcessInstance = graphSession.loadProcessInstance(superProcessInstance.getId());
+    assertTrue(subProcessInstance.hasEnded());
+    assertTrue(superProcessInstance.hasEnded());
   }
 
   public void testMultipleRecursiveProcessDefinitions() {
@@ -107,31 +92,20 @@
     // create the subprocess
     ProcessDefinition subProcessDefinition = new ProcessDefinition("sub");
     // store the subprocess in the database
-    graphSession.saveProcessDefinition(subProcessDefinition);
-    try {
-      // create the super process
-      ProcessDefinition superProcessDefinition = ProcessDefinition.parseXmlString("<process-definition name='super'>"
-        + "  <process-state name='subprocess' />"
-        + "</process-definition>");
-      // resolve the reference to the subprocess
-      ProcessState processState = (ProcessState) superProcessDefinition.getNode("subprocess");
-      processState.setSubProcessDefinition(subProcessDefinition);
+    deployProcessDefinition(subProcessDefinition);
 
-      // save and reload the superprocess
-      superProcessDefinition = saveAndReload(superProcessDefinition);
-      try {
-        processState = (ProcessState) superProcessDefinition.getNode("subprocess");
-        assertNotNull("sub", processState.getSubProcessDefinition().getName());
-      }
-      finally {
-        jbpmContext.getGraphSession().deleteProcessDefinition(
-            superProcessDefinition);
-      }
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          subProcessDefinition.getId());
-    }
+    // create the super process
+    ProcessDefinition superProcessDefinition = ProcessDefinition.parseXmlString("<process-definition name='super'>"
+      + "  <process-state name='subprocess' />"
+      + "</process-definition>");
+    // resolve the reference to the subprocess
+    ProcessState processState = (ProcessState) superProcessDefinition.getNode("subprocess");
+    processState.setSubProcessDefinition(subProcessDefinition);
+
+    // save and reload the superprocess
+    superProcessDefinition = saveAndReload(superProcessDefinition);
+    processState = (ProcessState) superProcessDefinition.getNode("subprocess");
+    assertNotNull("sub", processState.getSubProcessDefinition().getName());
   }
 
   public void testProcessStateStartVariableMappings() {
@@ -144,47 +118,26 @@
       + "</process-definition>");
 
     processDefinition = saveAndReload(processDefinition);
-    try {
-      ProcessState processState = (ProcessState) processDefinition.getNode("subprocess");
-      assertEquals(3, processState.variableAccesses.size());
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition);
-    }
+    ProcessState processState = (ProcessState) processDefinition.getNode("subprocess");
+    assertEquals(3, processState.variableAccesses.size());
   }
 
   public void testSubProcessBindingWithLatestVersion() {
     final int versionCount = 3;
     for (int i = 0; i < versionCount; i++) {
-      jbpmContext.deployProcessDefinition(new ProcessDefinition(
-          "the multiversion subprocess"));
+      deployProcessDefinition(new ProcessDefinition("the multiversion subprocess"));
     }
 
-    newTransaction();
-    try {
-      ProcessDefinition processDefinitionTwo = ProcessDefinition.parseXmlString("<process-definition>"
-        + "  <process-state name='the sub process state'>"
-        + "    <sub-process name='the multiversion subprocess'/>"
-        + "  </process-state>"
-        + "</process-definition>");
-      processDefinitionTwo = saveAndReload(processDefinitionTwo);
-      try {
-        ProcessState processState = (ProcessState) processDefinitionTwo.getNode("the sub process state");
-        assertEquals("the multiversion subprocess",
-            processState.getSubProcessDefinition().getName());
-        assertEquals(3, processState.getSubProcessDefinition().getVersion());
-      }
-      finally {
-        graphSession.deleteProcessDefinition(processDefinitionTwo);
-      }
-    }
-    finally {
-      for (int i = 1; i <= versionCount; i++) {
-        ProcessDefinition processDefinition = graphSession.findProcessDefinition(
-            "the multiversion subprocess", i);
-        graphSession.deleteProcessDefinition(processDefinition);
-      }
-    }
+    ProcessDefinition processDefinitionTwo = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <process-state name='the sub process state'>"
+      + "    <sub-process name='the multiversion subprocess'/>"
+      + "  </process-state>"
+      + "</process-definition>");
+    processDefinitionTwo = saveAndReload(processDefinitionTwo);
+    ProcessState processState = (ProcessState) processDefinitionTwo.getNode("the sub process state");
+    assertEquals("the multiversion subprocess", processState.getSubProcessDefinition()
+      .getName());
+    assertEquals(3, processState.getSubProcessDefinition().getVersion());
   }
 
   public void testAverageSubProcess() {
@@ -197,7 +150,7 @@
       + "  </state>"
       + "  <end-state name='end' />"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(subProcessDefinition);
+    deployProcessDefinition(subProcessDefinition);
 
     ProcessDefinition superProcessDefinition = ProcessDefinition.parseXmlString("<process-definition name='superprocess'>"
       + "  <start-state name='start'>"
@@ -212,95 +165,65 @@
       + "  </process-state>"
       + "  <state name='wait' />"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(superProcessDefinition);
-    try {
-      newTransaction();
+    deployProcessDefinition(superProcessDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("superprocess");
-      ContextInstance contextInstance = processInstance.getContextInstance();
-      contextInstance.setVariable("a", "1");
-      contextInstance.setVariable("b", "1");
-      contextInstance.setVariable("c", "1");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("superprocess");
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    contextInstance.setVariable("a", "1");
+    contextInstance.setVariable("b", "1");
+    contextInstance.setVariable("c", "1");
+    processInstance.signal();
 
-      newTransaction();
+    newTransaction();
+    long processInstanceId = processInstance.getId();
+    long subProcessInstanceId = processInstance.getRootToken().getSubProcessInstance().getId();
 
-      long processInstanceId = processInstance.getId();
-      long subProcessInstanceId = processInstance.getRootToken()
-          .getSubProcessInstance()
-          .getId();
+    processInstance = jbpmContext.loadProcessInstance(processInstanceId);
+    assertNotNull(processInstance.getRootToken().getSubProcessInstance());
+    assertEquals("sub process state", processInstance.getRootToken().getNode().getName());
+    contextInstance = processInstance.getContextInstance();
+    assertEquals("1", contextInstance.getVariable("a"));
+    assertEquals("1", contextInstance.getVariable("b"));
+    assertEquals("1", contextInstance.getVariable("c"));
 
-      processInstance = jbpmContext.loadProcessInstance(processInstanceId);
-      assertNotNull(processInstance.getRootToken().getSubProcessInstance());
-      assertEquals("sub process state", processInstance.getRootToken()
-          .getNode()
-          .getName());
-      contextInstance = processInstance.getContextInstance();
-      assertEquals("1", contextInstance.getVariable("a"));
-      assertEquals("1", contextInstance.getVariable("b"));
-      assertEquals("1", contextInstance.getVariable("c"));
+    ProcessInstance subProcessInstance = jbpmContext.loadProcessInstance(subProcessInstanceId);
+    assertEquals("wait", subProcessInstance.getRootToken().getNode().getName());
+    ContextInstance subContextInstance = subProcessInstance.getContextInstance();
+    assertEquals("1", subContextInstance.getVariable("A"));
+    assertEquals("1", subContextInstance.getVariable("B"));
+    assertNull(subContextInstance.getVariable("C"));
 
-      ProcessInstance subProcessInstance = jbpmContext.loadProcessInstance(subProcessInstanceId);
-      assertEquals("wait", subProcessInstance.getRootToken()
-          .getNode()
-          .getName());
-      ContextInstance subContextInstance = subProcessInstance.getContextInstance();
-      assertEquals("1", subContextInstance.getVariable("A"));
-      assertEquals("1", subContextInstance.getVariable("B"));
-      assertNull(subContextInstance.getVariable("C"));
+    subContextInstance.setVariable("A", "2");
+    subContextInstance.setVariable("B", "2");
+    subContextInstance.setVariable("C", "2");
+    subProcessInstance.signal();
+    jbpmContext.save(subProcessInstance);
 
-      subContextInstance.setVariable("A", "2");
-      subContextInstance.setVariable("B", "2");
-      subContextInstance.setVariable("C", "2");
-      subProcessInstance.signal();
+    newTransaction();
+    assertTrue(jbpmContext.loadProcessInstance(subProcessInstanceId).hasEnded());
 
-      jbpmContext.save(subProcessInstance);
-
-      newTransaction();
-
-      assertTrue(jbpmContext.loadProcessInstance(subProcessInstanceId)
-          .hasEnded());
-
-      processInstance = jbpmContext.loadProcessInstance(processInstanceId);
-      assertEquals("wait", processInstance.getRootToken().getNode().getName());
-      contextInstance = processInstance.getContextInstance();
-      assertEquals("1", contextInstance.getVariable("a"));
-      assertEquals("2", contextInstance.getVariable("b"));
-      assertEquals("2", contextInstance.getVariable("c"));
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          superProcessDefinition.getId());
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          subProcessDefinition.getId());
-    }
+    processInstance = jbpmContext.loadProcessInstance(processInstanceId);
+    assertEquals("wait", processInstance.getRootToken().getNode().getName());
+    contextInstance = processInstance.getContextInstance();
+    assertEquals("1", contextInstance.getVariable("a"));
+    assertEquals("2", contextInstance.getVariable("b"));
+    assertEquals("2", contextInstance.getVariable("c"));
   }
 
   public void testSubProcessBindingByVersion() {
-    ProcessDefinition processDefinitionOne = new ProcessDefinition(
-        "the ultimate subprocess");
-    jbpmContext.deployProcessDefinition(processDefinitionOne);
+    ProcessDefinition processDefinitionOne = new ProcessDefinition("the ultimate subprocess");
+    deployProcessDefinition(processDefinitionOne);
 
-    newTransaction();
-
-    ProcessDefinition processDefinitionTwo = ProcessDefinition.parseXmlString("<process-definition>"
+    ProcessDefinition processDefinitionTwo = ProcessDefinition.parseXmlString("<process-definition name='other'>"
       + "  <process-state name='the sub process state'>"
       + "    <sub-process name='the ultimate subprocess' version='1' />"
       + "  </process-state>"
       + "</process-definition>");
+
     processDefinitionTwo = saveAndReload(processDefinitionTwo);
-    try {
-      ProcessState processState = (ProcessState) processDefinitionTwo.getNode("the sub process state");
-      assertEquals("the ultimate subprocess",
-          processState.getSubProcessDefinition().getName());
-      assertEquals(1, processState.getSubProcessDefinition().getVersion());
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinitionOne.getId());
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinitionTwo);
-    }
+    ProcessState processState = (ProcessState) processDefinitionTwo.getNode("the sub process state");
+    assertEquals("the ultimate subprocess", processState.getSubProcessDefinition().getName());
+    assertEquals(1, processState.getSubProcessDefinition().getVersion());
   }
 
   public void testSubProcessLogs() {
@@ -313,7 +236,7 @@
       + "  </state>"
       + "  <end-state name='end' />"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(subProcessDefinition);
+    deployProcessDefinition(subProcessDefinition);
 
     ProcessDefinition superProcessDefinition = ProcessDefinition.parseXmlString("<process-definition name='superprocess'>"
       + "  <start-state name='start'>"
@@ -325,41 +248,28 @@
       + "  </process-state>"
       + "  <state name='wait' />"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(superProcessDefinition);
+    deployProcessDefinition(superProcessDefinition);
 
-    try {
-      newTransaction();
+    ProcessInstance superProcessInstance = jbpmContext.newProcessInstanceForUpdate("superprocess");
+    superProcessInstance.signal();
 
-      ProcessInstance superProcessInstance = jbpmContext.newProcessInstanceForUpdate("superprocess");
-      superProcessInstance.signal();
+    newTransaction();
+    long subProcessInstanceId = superProcessInstance.getRootToken()
+      .getSubProcessInstance()
+      .getId();
+    ProcessInstance subProcessInstance = jbpmContext.loadProcessInstance(subProcessInstanceId);
+    subProcessInstance.signal();
+    jbpmContext.save(subProcessInstance);
 
-      newTransaction();
-
-      long subProcessInstanceId = superProcessInstance.getRootToken()
-          .getSubProcessInstance()
-          .getId();
-      ProcessInstance subProcessInstance = jbpmContext.loadProcessInstance(subProcessInstanceId);
-      subProcessInstance.signal();
-      jbpmContext.save(subProcessInstance);
-
-      newTransaction();
-
-      ProcessStateLog processStateLog = (ProcessStateLog) session.createCriteria(
-          ProcessStateLog.class)
-          .addOrder(Order.desc("enter"))
-          .setMaxResults(1)
-          .uniqueResult();
-
-      assertEquals(subProcessInstanceId,
-          processStateLog.getSubProcessInstance().getId());
-      assertEquals(superProcessInstance.getId(), processStateLog.getToken()
-          .getProcessInstance()
-          .getId());
-    }
-    finally {
-      graphSession.deleteProcessDefinition(subProcessDefinition.getId());
-      graphSession.deleteProcessDefinition(superProcessDefinition.getId());
-    }
+    newTransaction();
+    ProcessStateLog processStateLog = (ProcessStateLog) session.createCriteria(ProcessStateLog.class)
+      .addOrder(Order.desc("enter"))
+      .setMaxResults(1)
+      .uniqueResult();
+    assertEquals(subProcessInstanceId, processStateLog.getSubProcessInstance().getId());
+    assertEquals(superProcessInstance.getId(), processStateLog.getToken()
+      .getProcessInstance()
+      .getId());
   }
 
   public void testDynamicProcessBinding() {
@@ -372,7 +282,7 @@
       + "  </state>"
       + "  <end-state name='end' />"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinitionOne);
+    deployProcessDefinition(processDefinitionOne);
 
     ProcessDefinition processDefinitionTwo = ProcessDefinition.parseXmlString("<process-definition name='subprocess2'>"
       + "  <start-state name='start'>"
@@ -383,7 +293,7 @@
       + "  </state>"
       + "  <end-state name='end' />"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinitionTwo);
+    deployProcessDefinition(processDefinitionTwo);
 
     ProcessDefinition processDefinitionThree = ProcessDefinition.parseXmlString("<process-definition name='superprocess'>"
       + "  <start-state name='start'>"
@@ -395,101 +305,63 @@
       + "  </process-state>"
       + "  <state name='wait' />"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinitionThree);
-    try {
-      newTransaction();
+    deployProcessDefinition(processDefinitionThree);
 
-      ProcessInstance processInstance1 = jbpmContext.newProcessInstanceForUpdate("superprocess");
-      ContextInstance contextInstance = processInstance1.getContextInstance();
-      contextInstance.setVariable("mySubProcess", "subprocess1");
-      processInstance1.signal();
+    ProcessInstance processInstance1 = jbpmContext.newProcessInstanceForUpdate("superprocess");
+    ContextInstance contextInstance = processInstance1.getContextInstance();
+    contextInstance.setVariable("mySubProcess", "subprocess1");
+    processInstance1.signal();
 
-      newTransaction();
+    newTransaction();
+    long processInstanceId = processInstance1.getId();
+    long subProcessInstanceId = processInstance1.getRootToken().getSubProcessInstance().getId();
 
-      long processInstanceId = processInstance1.getId();
-      long subProcessInstanceId = processInstance1.getRootToken()
-          .getSubProcessInstance()
-          .getId();
-      // System.out.println("process ID: " + processInstanceId +
-      // "  subprocess ID: " + subProcessInstanceId);
+    processInstance1 = jbpmContext.loadProcessInstance(processInstanceId);
+    assertNotNull(processInstance1.getRootToken().getSubProcessInstance());
+    assertEquals("sub process state", processInstance1.getRootToken().getNode().getName());
+    contextInstance = processInstance1.getContextInstance();
+    assertEquals("subprocess1", contextInstance.getVariable("mySubProcess"));
 
-      processInstance1 = jbpmContext.loadProcessInstance(processInstanceId);
-      assertNotNull(processInstance1.getRootToken().getSubProcessInstance());
-      assertEquals("sub process state", processInstance1.getRootToken()
-          .getNode()
-          .getName());
-      contextInstance = processInstance1.getContextInstance();
-      assertEquals("subprocess1", contextInstance.getVariable("mySubProcess"));
+    ProcessInstance subProcessInstance1 = jbpmContext.loadProcessInstance(subProcessInstanceId);
+    assertEquals("subprocess1", subProcessInstance1.getProcessDefinition().getName());
+    assertEquals("wait subprocess 1", subProcessInstance1.getRootToken().getNode().getName());
+    subProcessInstance1.signal();
+    jbpmContext.save(subProcessInstance1);
 
-      ProcessInstance subProcessInstance1 = jbpmContext.loadProcessInstance(subProcessInstanceId);
-      assertEquals("subprocess1", subProcessInstance1.getProcessDefinition()
-          .getName());
-      assertEquals("wait subprocess 1", subProcessInstance1.getRootToken()
-          .getNode()
-          .getName());
-      subProcessInstance1.signal();
+    newTransaction();
+    assertTrue(jbpmContext.loadProcessInstance(subProcessInstanceId).hasEnded());
 
-      jbpmContext.save(subProcessInstance1);
+    processInstance1 = jbpmContext.loadProcessInstance(processInstanceId);
+    assertEquals("wait", processInstance1.getRootToken().getNode().getName());
 
-      newTransaction();
+    newTransaction();
+    ProcessInstance processInstance2 = jbpmContext.newProcessInstanceForUpdate("superprocess");
+    ContextInstance contextInstance2 = processInstance2.getContextInstance();
+    contextInstance2.setVariable("mySubProcess", "subprocess2");
+    processInstance2.signal();
 
-      assertTrue(jbpmContext.loadProcessInstance(subProcessInstanceId)
-          .hasEnded());
+    newTransaction();
+    long processInstanceId2 = processInstance2.getId();
+    long subProcessInstanceId2 = processInstance2.getRootToken()
+      .getSubProcessInstance()
+      .getId();
 
-      processInstance1 = jbpmContext.loadProcessInstance(processInstanceId);
-      assertEquals("wait", processInstance1.getRootToken().getNode().getName());
+    processInstance2 = jbpmContext.loadProcessInstance(processInstanceId2);
+    assertNotNull(processInstance2.getRootToken().getSubProcessInstance());
+    assertEquals("sub process state", processInstance2.getRootToken().getNode().getName());
+    contextInstance2 = processInstance2.getContextInstance();
+    assertEquals("subprocess2", contextInstance2.getVariable("mySubProcess"));
 
-      newTransaction();
+    ProcessInstance subProcessInstance2 = jbpmContext.loadProcessInstance(subProcessInstanceId2);
+    assertEquals("subprocess2", subProcessInstance2.getProcessDefinition().getName());
+    assertEquals("wait subprocess 2", subProcessInstance2.getRootToken().getNode().getName());
+    subProcessInstance2.signal();
+    jbpmContext.save(subProcessInstance2);
 
-      ProcessInstance processInstance2 = jbpmContext.newProcessInstanceForUpdate("superprocess");
-      ContextInstance contextInstance2 = processInstance2.getContextInstance();
-      contextInstance2.setVariable("mySubProcess", "subprocess2");
-      processInstance2.signal();
-
-      newTransaction();
-
-      long processInstanceId2 = processInstance2.getId();
-      long subProcessInstanceId2 = processInstance2.getRootToken()
-          .getSubProcessInstance()
-          .getId();
-      // System.out.println("process ID: " + processInstanceId2 +
-      // "  subprocess ID: " + subProcessInstanceId2);
-
-      processInstance2 = jbpmContext.loadProcessInstance(processInstanceId2);
-      assertNotNull(processInstance2.getRootToken().getSubProcessInstance());
-      assertEquals("sub process state", processInstance2.getRootToken()
-          .getNode()
-          .getName());
-      contextInstance2 = processInstance2.getContextInstance();
-      assertEquals("subprocess2", contextInstance2.getVariable("mySubProcess"));
-
-      ProcessInstance subProcessInstance2 = jbpmContext.loadProcessInstance(subProcessInstanceId2);
-      assertEquals("subprocess2", subProcessInstance2.getProcessDefinition()
-          .getName());
-      assertEquals("wait subprocess 2", subProcessInstance2.getRootToken()
-          .getNode()
-          .getName());
-      subProcessInstance2.signal();
-
-      jbpmContext.save(subProcessInstance2);
-
-      newTransaction();
-
-      assertTrue(jbpmContext.loadProcessInstance(subProcessInstanceId2)
-          .hasEnded());
-
-      processInstance2 = jbpmContext.loadProcessInstance(processInstanceId2);
-      assertEquals("wait", processInstance2.getRootToken().getNode().getName());
-    }
-    finally {
-      newTransaction();
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinitionOne.getId());
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinitionTwo.getId());
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinitionThree.getId());
-    }
+    newTransaction();
+    assertTrue(jbpmContext.loadProcessInstance(subProcessInstanceId2).hasEnded());
+    processInstance2 = jbpmContext.loadProcessInstance(processInstanceId2);
+    assertEquals("wait", processInstance2.getRootToken().getNode().getName());
   }
 
   public void testUnboundSubProcess() {
@@ -503,25 +375,16 @@
       + "  </process-state>"
       + "  <state name='wait' />"
       + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    jbpmContext.deployProcessDefinition(processDefinition);
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("superprocess");
     try {
-      newTransaction();
-
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("superprocess");
-      try {
-        processInstance.signal();
-        fail("expected exception");
-      }
-      catch (IllegalArgumentException e) {
-        // expected
-        jbpmContext.setRollbackOnly();
-      }
+      processInstance.signal();
+      fail("expected exception");
     }
-    finally {
-      newTransaction();
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinition.getId());
+    catch (IllegalArgumentException e) {
+      // expected
+      jbpmContext.setRollbackOnly();
     }
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/TaskNotificationDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/TaskNotificationDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/graph/node/TaskNotificationDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -5,22 +5,15 @@
 
 public class TaskNotificationDbTest extends AbstractDbTestCase {
 
-  public void testProcessDeleteWithTaskNotification() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='tasknotification'>" +
-      "  <task-node name='mail'>" +
-      "    <task name='email info' notify='yes'>" +
-      "      <assignment actor-id='mputz'></assignment>" +
-      "    </task>" +
-      "    <transition to='end-state1'></transition>" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    
-    jbpmContext.deployProcessDefinition(processDefinition);
-    
-    newTransaction();
-    
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+  public void testDeleteProcessWithTaskNotification() {
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='tasknotification'>"
+      + "  <task-node name='mail'>"
+      + "    <task name='email info' notify='yes'>"
+      + "      <assignment actor-id='mputz'></assignment>"
+      + "    </task>"
+      + "    <transition to='end-state1'></transition>"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/BeanInstantiatorTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/BeanInstantiatorTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/BeanInstantiatorTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -31,10 +31,10 @@
   // most of the stuff is been tested in FieldInstantiatorTest
   // here, only  the method stuff needs to be tested
   public static class Mix {
-    private String s = null;
-    private Element structuredElement = null;
-    private RuntimeException stringConstructor = null;
-    private String memberWithoutSetter = null;
+    String s = null;
+    Element structuredElement = null;
+    RuntimeException stringConstructor = null;
+    String memberWithoutSetter = null;
     
     private int callCounter = 0;
     
@@ -74,7 +74,7 @@
     
     Mix mix = (Mix) beanInstantiator.instantiate(Mix.class, configuration);
     
-    assertEquals( "hello", mix.s );
+    assertEquals( "hello", mix.s);
 
     assertEquals("i want yoghurt", mix.stringConstructor.getMessage());
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/FieldInstantiatorTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/FieldInstantiatorTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/FieldInstantiatorTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -43,23 +43,23 @@
   public FieldInstantiator fieldInstantiator = new FieldInstantiator();
   
   public static class ClassWithLotsOfFields {
-    private String s = null;
-    private Integer i = null;
-    private int ii = -1;
-    private Long l = null;
-    private long ll = -1;
-    private Float f = null;
-    private float ff = -1;
-    private Double d = null;
-    private double dd = -1;
-    private Boolean b = null;
-    private boolean bb = false;
-    private Character c = null;
-    private char cc = ' ';
-    private Short sh = null;
-    private short shsh = -1;
-    private Byte by = null;
-    private byte byby = -1;
+    String s = null;
+    Integer i = null;
+    int ii = -1;
+    Long l = null;
+    long ll = -1;
+    Float f = null;
+    float ff = -1;
+    Double d = null;
+    double dd = -1;
+    Boolean b = null;
+    boolean bb = false;
+    Character c = null;
+    char cc = ' ';
+    Short sh = null;
+    short shsh = -1;
+    Byte by = null;
+    byte byby = -1;
   }
   
   public void testBasicTypes() {
@@ -104,7 +104,7 @@
   }
 
   public static class ClassWithStringConstructorType {
-    private RuntimeException e;
+    RuntimeException e;
   }
 
   public void testStringConstructorType() {
@@ -114,7 +114,7 @@
   }
 
   public static class ClassWithDom4jField{
-    private Element structuredElement;
+    Element structuredElement;
   }
 
   public void testStructuredElement() {
@@ -133,7 +133,7 @@
   }
 
   public static class ClassWithOneField {
-    private String onlyMember = null;
+    String onlyMember = null;
   }
 
   public void testEmptyConfiguration() {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/UserCodeInterceptorTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/UserCodeInterceptorTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/instantiation/UserCodeInterceptorTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -20,7 +20,7 @@
 
 public class UserCodeInterceptorTest extends AbstractJbpmTestCase {
 
-  private static List logs = new ArrayList();
+  static List logs = new ArrayList();
 
   private JbpmContext jbpmContext;
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1071/JBPM1071Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1071/JBPM1071Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1071/JBPM1071Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -4,6 +4,10 @@
 import java.util.Iterator;
 import java.util.List;
 
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+
+import org.jbpm.JbpmConfiguration;
 import org.jbpm.JbpmContext;
 import org.jbpm.db.AbstractDbTestCase;
 import org.jbpm.graph.def.ProcessDefinition;
@@ -20,29 +24,20 @@
  */
 public class JBPM1071Test extends AbstractDbTestCase {
 
-  private long processDefinitionId;
-
   static final int nbrOfThreads = 4;
   static final int nbrOfIterations = 20;
 
   protected void setUp() throws Exception {
     super.setUp();
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='lockprocess'>"
-        + "  <start-state name='start'>"
-        + "    <transition to='end'/>"
-        + "  </start-state>"
-        + "  <end-state name='end' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
-    processDefinitionId = processDefinition.getId();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='jbpm1071'>"
+      + "  <start-state name='start'>"
+      + "    <transition to='end'/>"
+      + "  </start-state>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
   }
 
-  protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinitionId);
-    super.tearDown();
-  }
-
   public void testLocking() {
     // the process will be executed in 2 separate transactions:
     // Transaction 1 will create the process instance and position
@@ -50,17 +45,12 @@
     // Transaction 2 will signal the process instance while it is in the
     // start state, and that signal will bring the process to it's end state.
     // multiple competing threads will be set up for the second transaction
-
-    ProcessDefinition processDefinition = graphSession.loadProcessDefinition(processDefinitionId);
     for (int i = 0; i < nbrOfIterations; i++) {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      jbpmContext.save(processInstance);
-
+      long processInstanceId = jbpmContext.newProcessInstanceForUpdate("jbpm1071").getId();
       newTransaction();
 
       // create a bunch of threads that will all wait on the
       // semaphore before they will try to signal the same process instance
-      long processInstanceId = processInstance.getId();
       Semaphore semaphore = new Semaphore(0);
       List threads = startThreads(semaphore, processInstanceId);
 
@@ -78,17 +68,17 @@
       session.delete(results.get(0));
 
       // check that the process instance has ended
-      processInstance = jbpmContext.loadProcessInstance(processInstanceId);
-      assertTrue(processInstance.hasEnded());
+      ProcessInstance processInstance = jbpmContext.loadProcessInstance(processInstanceId);
+      assertTrue("expected " + processInstance + " to have ended", processInstance.hasEnded());
     }
   }
 
   private List startThreads(Semaphore semaphore, long processInstanceId) {
     List threads = new ArrayList();
     for (int i = 0; i < nbrOfThreads; i++) {
-      Thread thread = new Thread(new Signaller(semaphore, processInstanceId));
-      threads.add(thread);
+      Thread thread = new Thread(new Signaller(semaphore, jbpmConfiguration, processInstanceId));
       thread.start();
+      threads.add(thread);
     }
     return threads;
   }
@@ -105,13 +95,15 @@
     }
   }
 
-  class Signaller implements Runnable {
+  static class Signaller implements Runnable {
 
-    final Semaphore semaphore;
-    final long processInstanceId;
+    private final Semaphore semaphore;
+    private final JbpmConfiguration jbpmConfiguration;
+    private final long processInstanceId;
 
-    Signaller(Semaphore semaphore, long processInstanceId) {
+    Signaller(Semaphore semaphore, JbpmConfiguration jbpmConfiguration, long processInstanceId) {
       this.semaphore = semaphore;
+      this.jbpmConfiguration = jbpmConfiguration;
       this.processInstanceId = processInstanceId;
     }
 
@@ -125,9 +117,11 @@
         fail("semaphore waiting got interrupted");
       }
 
-      // after a thread is released (=notified), it will try to load the process instance,
+      // after a thread is released (=notified), it will try to load the process
+      // instance,
       // signal it and then commit the transaction
       String threadName = Thread.currentThread().getName();
+      Log log = LogFactory.getLog(JBPM1071Test.class);
       JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
       try {
         ProcessInstance processInstance = jbpmContext.loadProcessInstance(processInstanceId);

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1072/JBPM1072Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1072/JBPM1072Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1072/JBPM1072Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -32,9 +32,10 @@
 import org.jbpm.job.executor.JobExecutor;
 
 /**
- * Concurrent job executors can process the same job in parallel. The test simulates multiple
- * nodes in the network processing a common job set. The key setting is to give each job
- * executor a different name; normally, a job executor is named after the node's inet address
+ * Concurrent job executors can process the same job in parallel. The test
+ * simulates multiple nodes in the network processing a common job set. The key
+ * setting is to give each job executor a different name; normally, a job
+ * executor is named after the node's inet address
  * 
  * @see <a href="https://jira.jboss.org/jira/browse/JBPM-1072">JBPM-1072</a>
  * @author Jiri Pechanec
@@ -45,58 +46,52 @@
   private static final int JOB_EXECUTOR_COUNT = 4;
 
   private JobExecutor[] jobExecutors = new JobExecutor[JOB_EXECUTOR_COUNT];
-  private ProcessDefinition processDefinition;
 
-  private static final String PROCESS_DEFINITION = "<process-definition name='job-executors'>"
-      + "  <event type='process-end'>"
-      + "    <action expression='#{eventCallback.processEnd}' />"
-      + "  </event>"
-      + "  <start-state name='start-state1'>"
-      + "    <transition to='Service 1'></transition>"
-      + "  </start-state>"
-      + "  <node name='Service 1' async='true'>"
-      + "    <action class='"
-      + Counter.class.getName()
-      + "' />"
-      + "    <transition to='Service 2' />"
-      + "  </node>"
-      + "  <node name='Service 2' async='true'>"
-      + "    <action class='"
-      + Counter.class.getName()
-      + "' />"
-      + "    <transition to='end-state1' />"
-      + "  </node>"
-      + "  <end-state name='end-state1' />"
-      + "</process-definition>";
+  private static final String PROCESS_DEFINITION = "<process-definition name='jbpm1072'>"
+    + "  <event type='process-end'>"
+    + "    <action expression='#{eventCallback.processEnd}' />"
+    + "  </event>"
+    + "  <start-state name='start-state1'>"
+    + "    <transition to='Service 1'></transition>"
+    + "  </start-state>"
+    + "  <node name='Service 1' async='true'>"
+    + "    <action class='"
+    + Counter.class.getName()
+    + "' />"
+    + "    <transition to='Service 2' />"
+    + "  </node>"
+    + "  <node name='Service 2' async='true'>"
+    + "    <action class='"
+    + Counter.class.getName()
+    + "' />"
+    + "    <transition to='end-state1' />"
+    + "  </node>"
+    + "  <end-state name='end-state1' />"
+    + "</process-definition>";
 
   protected void setUp() throws Exception {
     super.setUp();
 
-    processDefinition = ProcessDefinition.parseXmlString(PROCESS_DEFINITION);
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
-
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(PROCESS_DEFINITION);
+    deployProcessDefinition(processDefinition);
     startJobExecutors();
   }
 
   protected void tearDown() throws Exception {
     stopJobExecutors();
-
-    graphSession.deleteProcessDefinition(processDefinition.getId());
-
     EventCallback.clear();
+
     super.tearDown();
   }
 
   public void testMultipleJobExecutors() {
-    // Won't Fix [JBPM-1072] Concurrent JobExecutors can process the same job in parallel
+    // multiple job executors not supported on hsql
     if (getHibernateDialect().indexOf("HSQL") != -1) return;
 
     // kick off process instance
-    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("jbpm1072");
     processInstance.getContextInstance().setVariable("eventCallback", new EventCallback());
     processInstance.signal();
-    jbpmContext.save(processInstance);
 
     commitAndCloseSession();
     try {
@@ -137,9 +132,7 @@
 
     public void execute(ExecutionContext exeContext) throws Exception {
       Integer count = (Integer) exeContext.getVariable("count");
-      count = count != null ? new Integer(count.intValue() + 1) : new Integer(1);
-      exeContext.setVariable("count", count);
-
+      exeContext.setVariable("count", new Integer(count != null ? count.intValue() + 1 : 1));
       exeContext.leaveNode();
     }
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1106/JBPM1106Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1106/JBPM1106Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1106/JBPM1106Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -32,20 +32,19 @@
 import org.jbpm.graph.exe.ProcessInstance;
 
 /**
- * GetProcessInstancesCommand should use Query.setTimestamp instead of Query.setDate
- * https://jira.jboss.org/jira/browse/JBPM-1106
+ * GetProcessInstancesCommand should set timestamp instead of date.
  * 
+ * @see <a href="https://jira.jboss.org/jira/browse/JBPM-1106">JBPM-1106</a>
  * @author Alejandro Guizar
  */
 public class JBPM1106Test extends AbstractDbTestCase {
 
   private CommandService commandService = new CommandServiceImpl(getJbpmConfiguration());
-  private ProcessDefinition processDefinition;
 
   protected void setUp() throws Exception {
     super.setUp();
-    processDefinition = new ProcessDefinition("Audit");
-    jbpmContext.deployProcessDefinition(processDefinition);
+    ProcessDefinition processDefinition = new ProcessDefinition("jbpm1106");
+    deployProcessDefinition(processDefinition);
 
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     Calendar calendar = Calendar.getInstance();
@@ -71,11 +70,6 @@
     newTransaction();
   }
 
-  protected void tearDown() throws Exception {
-    jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    super.tearDown();
-  }
-
   public void testStartDate() {
     GetProcessInstancesCommand command = new GetProcessInstancesCommand();
     Calendar calendar = Calendar.getInstance();

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1135/JBPM1135Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1135/JBPM1135Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1135/JBPM1135Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -28,53 +28,44 @@
 import org.jbpm.graph.exe.ProcessInstance;
 
 /**
- * When a timer fires and another timer is created as part of its execution, no exception should be
- * thrown. https://jira.jboss.org/jira/browse/JBPM-1135
+ * When a timer fires and another timer is created as part of its execution, no
+ * exception should be thrown.
  * 
+ * @see <a href="https://jira.jboss.org/jira/browse/JBPM-1135">JBPM-1135</a>
  * @author Alejandro Guizar
  */
 public class JBPM1135Test extends AbstractDbTestCase {
 
-  private long processDefinitionId;
-
   protected void setUp() throws Exception {
     super.setUp();
 
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("org/jbpm/jbpm1135/timerprocess.xml");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    processDefinitionId = processDefinition.getId();
-    newTransaction();
-
+    deployProcessDefinition(processDefinition);
     startJobExecutor();
   }
 
   protected void tearDown() throws Exception {
     stopJobExecutor();
-    graphSession.deleteProcessDefinition(processDefinitionId);
-    super.tearDown();
-
     EventCallback.clear();
+
+    super.tearDown();
   }
 
   public void testTimerOnTimer() {
-    ProcessDefinition processDefinition = graphSession.loadProcessDefinition(processDefinitionId);
-    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("jbpm1135");
     processInstance.getContextInstance().setVariable("eventCallback", new EventCallback());
     processInstance.signal();
-    jbpmContext.save(processInstance);
     assertEquals("firstNode", processInstance.getRootToken().getNode().getName());
 
     newTransaction();
-
     EventCallback.waitForEvent(Event.EVENTTYPE_TIMER);
     long processInstanceId = processInstance.getId();
     assertEquals("secondNode", jbpmContext.loadProcessInstance(processInstanceId)
-        .getRootToken()
-        .getNode()
-        .getName());
+      .getRootToken()
+      .getNode()
+      .getName());
 
     newTransaction();
-
     EventCallback.waitForEvent(Event.EVENTTYPE_PROCESS_END);
     assertTrue(jbpmContext.loadProcessInstance(processInstanceId).hasEnded());
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1452/JBPM1452Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1452/JBPM1452Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1452/JBPM1452Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -29,32 +29,27 @@
 
 /**
  * JbpmConfiguration assumes the object factory has a jbpm.job.executor entry
- * https://jira.jboss.org/jira/browse/JBPM-1452
  * 
+ * @see <a href="https://jira.jboss.org/jira/browse/JBPM-1452">JBPM-1452</a>
  * @author Alejandro Guizar
  */
 public class JBPM1452Test extends AbstractDbTestCase {
 
-  private long processDefinitionId;
-
   protected JbpmConfiguration getJbpmConfiguration() {
     if (jbpmConfiguration == null) {
       jbpmConfiguration = JbpmConfiguration.parseXmlString("<jbpm-configuration>"
-          + "  <null name='jbpm.job.executor' />"
-          + "</jbpm-configuration>");
+        + "  <null name='jbpm.job.executor' />"
+        + "</jbpm-configuration>");
     }
     return jbpmConfiguration;
   }
 
   protected void setUp() throws Exception {
     super.setUp();
-    ProcessDefinition processDefinition = new ProcessDefinition("Audit");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    processDefinitionId = processDefinition.getId();
+    deployProcessDefinition(new ProcessDefinition("jbpm1452"));
   }
 
   protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinitionId);
     super.tearDown();
     jbpmConfiguration.close();
   }
@@ -63,20 +58,14 @@
     // check the job executor is properly nullified
     ObjectFactory objectFactory = jbpmContext.getObjectFactory();
     assertTrue("expected object factory to have object jbpm.job.executor",
-        objectFactory.hasObject("jbpm.job.executor"));
+      objectFactory.hasObject("jbpm.job.executor"));
     assertNull(objectFactory.createObject("jbpm.job.executor"));
     // start and end a process instance, no exception should be thrown
-    try {
-      ProcessDefinition processDefinition = graphSession.loadProcessDefinition(processDefinitionId);
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      jbpmContext.save(processInstance);
+    long processInstanceId = jbpmContext.newProcessInstanceForUpdate("jbpm1452").getId();
 
-      newTransaction();
-      processInstance.end();
-    }
-    catch (RuntimeException e) {
-      jbpmContext.setRollbackOnly();
-      fail("could not end process instance in absence of job executor: " + e);
-    }
+    newTransaction();
+    ProcessInstance processInstance = jbpmContext.loadProcessInstance(processInstanceId);
+    processInstance.end();
+    assertTrue("expected " + processInstance + " to have ended", processInstance.hasEnded());
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1755/JBPM1755Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -11,8 +11,8 @@
 
 /**
  * Allow process author to set the parent token lock mode in the join token.
- * https://jira.jboss.org/jira/browse/JBPM-1755
  * 
+ * @see <a href="https://jira.jboss.org/jira/browse/JBPM-1755">JBPM-1755</a>
  * @author Alejandro Guizar
  */
 public class JBPM1755Test extends AbstractDbTestCase {
@@ -27,7 +27,6 @@
   }
 
   protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinition.getId());
     EventCallback.clear();
     super.tearDown();
   }
@@ -47,11 +46,10 @@
   private void launchProcessInstances(LockMode lockMode) {
     Join join = (Join) processDefinition.getNode("join1");
     join.setParentLockMode(lockMode.toString());
-    jbpmContext.deployProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
     long[] processInstanceIds = new long[processInstanceCount];
     for (int i = 0; i < processInstanceCount; i++) {
-      newTransaction();
       ProcessInstance processInstance = new ProcessInstance(processDefinition);
       processInstanceIds[i] = processInstance.getId();
       processInstance.getContextInstance().setVariable("eventCallback", new EventCallback());
@@ -72,7 +70,7 @@
     for (int i = 0; i < processInstanceCount; i++) {
       long processInstanceId = processInstanceIds[i];
       assertTrue("expected process instance " + processInstanceId + " to have ended",
-          jbpmContext.loadProcessInstance(processInstanceId).hasEnded());
+        jbpmContext.loadProcessInstance(processInstanceId).hasEnded());
     }
   }
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1775/JBPM1775Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1775/JBPM1775Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1775/JBPM1775Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,13 +21,13 @@
  */
 package org.jbpm.jbpm1775;
 
-import org.jbpm.JbpmException;
 import org.jbpm.db.AbstractDbTestCase;
 import org.jbpm.graph.def.ActionHandler;
 import org.jbpm.graph.def.DelegationException;
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ExecutionContext;
 import org.jbpm.graph.exe.ProcessInstance;
+import org.jbpm.persistence.JbpmPersistenceException;
 import org.jbpm.persistence.db.DbPersistenceService;
 
 /**
@@ -40,31 +40,35 @@
 
   public void testExceptionInAction() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<?xml version='1.0'?>"
-        + "<process-definition name='"
-        + getName()
-        + "'>"
-        + "  <exception-handler exception-class='java.lang.IllegalStateException'>"
-        + "    <action class='org.example.NoSuchAction' />"
-        + "  </exception-handler>"
-        + "  <start-state name='start'>"
-        + "    <transition to='end'>"
-        + "      <action class='"
-        + ExceptionAction.class.getName()
-        + "' />"
-        + "    </transition>"
-        + "  </start-state>"
-        + "  <end-state name='end' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "<process-definition name='"
+      + getName()
+      + "'>"
+      + "  <exception-handler exception-class='java.lang.IllegalStateException'>"
+      + "    <action class='org.example.NoSuchAction' />"
+      + "  </exception-handler>"
+      + "  <start-state name='start'>"
+      + "    <transition to='end'>"
+      + "      <action class='"
+      + ExceptionAction.class.getName()
+      + "' />"
+      + "    </transition>"
+      + "  </start-state>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
     try {
       ProcessInstance processInstance = jbpmContext.newProcessInstance(processDefinition.getName());
       processInstance.signal();
       fail("expected delegation exception");
-    } catch (DelegationException e) {
+    }
+    catch (DelegationException e) {
+      jbpmContext.setRollbackOnly();
       assertSame(IllegalStateException.class, e.getCause().getClass());
+
       try {
-        closeJbpmContext();
-      } catch (JbpmException je) {
+        commitAndCloseSession();
+      }
+      catch (JbpmPersistenceException je) {
         // discard failure to close normally
       }
       beginSessionTransaction();
@@ -75,10 +79,11 @@
     private static final long serialVersionUID = 1L;
 
     public void execute(ExecutionContext executionContext) throws Exception {
-      // NOTE that manipulating the hibernate transaction directly is bad practice
+      // NOTE that manipulating the transaction directly is bad practice
       // use JbpmContext or TxService instead!
-      DbPersistenceService persistenceService = (DbPersistenceService) executionContext
-          .getJbpmContext().getServices().getPersistenceService();
+      DbPersistenceService persistenceService = (DbPersistenceService) executionContext.getJbpmContext()
+        .getServices()
+        .getPersistenceService();
       persistenceService.getTransaction().rollback();
       // throw exception
       throw new IllegalStateException("transaction was forcefully rolled back");

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1921/JBPM1921Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1921/JBPM1921Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm1921/JBPM1921Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -30,57 +30,52 @@
 
 /**
  * Assigning a task to two pooled actors and calling
- * <code>jbpmContext.getGroupTaskList(List actorIds)</code> with these two actor
- * ids will get you a list with duplicate task instances.
+ * <code>jbpmContext.getGroupTaskList(List actorIds)</code> with these two
+ * actors will get you a list with duplicate task instances.
  * 
+ * @see <a href="https://jira.jboss.org/jira/browse/JBPM-1921">JBPM-1921</a>
  * @author Alejandro Guizar
  */
 public class JBPM1921Test extends AbstractDbTestCase {
 
   public void testFindByActorId() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<?xml version='1.0'?>"
-        + "<process-definition name='" + getName() + "'>"
-        + "  <start-state name='start'>"
-        + "    <transition to='team work'/>"
-        + "  </start-state>"
-        + "  <task-node name='team work'>"
-        + "    <task>"
-        + "      <assignment pooled-actors='ernie,bert,ernie' />"
-        + "    </task>"
-        + "  </task-node>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance(processDefinition.getName());
-      processInstance.signal();
-      List pooledTasks = taskMgmtSession.findPooledTaskInstances("ernie");
-      assertEquals(1, pooledTasks.size());
-    } finally {
-      graphSession.deleteProcessDefinition(processDefinition);
-    }
+      + "<process-definition name='jbpm1921'>"
+      + "  <start-state name='start'>"
+      + "    <transition to='team work'/>"
+      + "  </start-state>"
+      + "  <task-node name='team work'>"
+      + "    <task>"
+      + "      <assignment pooled-actors='ernie,bert,ernie' />"
+      + "    </task>"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
+
+    ProcessInstance processInstance = jbpmContext.newProcessInstance(processDefinition.getName());
+    processInstance.signal();
+    List pooledTasks = taskMgmtSession.findPooledTaskInstances("ernie");
+    assertEquals(1, pooledTasks.size());
   }
 
   public void testFindByActorIds() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<?xml version='1.0'?>"
-        + "<process-definition name='" + getName() + "'>"
-        + "  <start-state name='start'>"
-        + "    <transition to='team work'/>"
-        + "  </start-state>"
-        + "  <task-node name='team work'>"
-        + "    <task>"
-        + "      <assignment pooled-actors='ernie,bert,groover' />"
-        + "    </task>"
-        + "  </task-node>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance(processDefinition.getName());
-      processInstance.signal();
-      List pooledTasks = jbpmContext.getGroupTaskList(Arrays
-          .asList(new String[] { "ernie", "bert" }));
-      assertEquals(1, pooledTasks.size());
-    } finally {
-      graphSession.deleteProcessDefinition(processDefinition);
-    }
+      + "<process-definition name='jbpm1921'>"
+      + "  <start-state name='start'>"
+      + "    <transition to='team work'/>"
+      + "  </start-state>"
+      + "  <task-node name='team work'>"
+      + "    <task>"
+      + "      <assignment pooled-actors='ernie,bert,groover' />"
+      + "    </task>"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
+
+    ProcessInstance processInstance = jbpmContext.newProcessInstance(processDefinition.getName());
+    processInstance.signal();
+    List pooledTasks = jbpmContext.getGroupTaskList(Arrays.asList(new String[] { "ernie",
+      "bert" }));
+    assertEquals(1, pooledTasks.size());
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2017/JBPM2017Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2017/JBPM2017Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2017/JBPM2017Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -32,32 +32,26 @@
 import org.jbpm.graph.exe.ProcessInstance;
 
 /**
- * STRINGVALUE_ column in JBPM_VARIABLEINSTANCE table should be text, not varchar(255)
+ * STRINGVALUE_ column in JBPM_VARIABLEINSTANCE table should be text, not
+ * varchar(255)
  * 
- * https://jira.jboss.org/jira/browse/JBPM-2017
- * 
+ * @see <a href="https://jira.jboss.org/jira/browse/JBPM-2017">JBPM-2017</a>
  * @author Alejandro Guizar
  */
 public class JBPM2017Test extends AbstractDbTestCase {
 
   public void testTextVariable() throws IOException {
-    String processName = getName();
+    final String processName = "jbpm2017";
     ProcessDefinition processDefinition = ProcessDefinition.createNewProcessDefinition();
     processDefinition.setName(processName);
-    jbpmContext.deployProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance(processName);
-      String quote = readString(getClass().getResourceAsStream("quote.txt"));
-      processInstance.getContextInstance().setVariable("quote", quote);
+    ProcessInstance processInstance = jbpmContext.newProcessInstance(processName);
+    String quote = readString(getClass().getResourceAsStream("quote.txt"));
+    processInstance.getContextInstance().setVariable("quote", quote);
 
-      processInstance = saveAndReload(processInstance);
-      assertEquals(quote, processInstance.getContextInstance().getVariable("quote"));
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    processInstance = saveAndReload(processInstance);
+    assertEquals(quote, processInstance.getContextInstance().getVariable("quote"));
   }
 
   private static String readString(InputStream in) throws IOException {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2036/JBPM2036Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2036/JBPM2036Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2036/JBPM2036Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -18,67 +18,60 @@
 
   public void testTimerAction() {
     ProcessDefinition processDefinition = getProcessDefinition();
-    jbpmContext.deployProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
-      jbpmContext.save(processInstance);
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
+    jbpmContext.save(processInstance);
 
-      processJobs(30000);
+    processJobs(30000);
 
-      processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
-      assertTrue("expected " + processInstance + " to have ended", processInstance.hasEnded());
+    processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
+    assertTrue("expected " + processInstance + " to have ended", processInstance.hasEnded());
 
-      ContextInstance contextInstance = processInstance.getContextInstance();
-      Integer count = (Integer) contextInstance.getVariable("chaos");
-      assertEquals(1, count.intValue());
-      count = (Integer) contextInstance.getVariable("undead");
-      assertEquals(1, count.intValue());
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    Integer count = (Integer) contextInstance.getVariable("chaos");
+    assertEquals(1, count.intValue());
+    count = (Integer) contextInstance.getVariable("undead");
+    assertEquals(1, count.intValue());
   }
 
-  private ProcessDefinition getProcessDefinition() {
+  private static ProcessDefinition getProcessDefinition() {
     return ProcessDefinition.parseXmlString("<process-definition name='jbpm2036'>"
-        + "  <start-state name='start'>"
-        + "    <transition to='midway'/>"
-        + "  </start-state>"
-        + "  <task-node name='midway' end-tasks='yes'>"
-        + "    <timer name='chaos' duedate='2 seconds' repeat='5 seconds'>"
-        + "      <action class='"
-        + TimerAction.class.getName()
-        + "'>"
-        + "        <leave>true</leave>"
-        + "      </action>"
-        + "    </timer>"
-        + "    <task name='doit'>"
-        + "      <timer name='undead' duedate='1 second' repeat='5 seconds'>"
-        + "        <action class='"
-        + TimerAction.class.getName()
-        + "'/>"
-        + "      </timer>"
-        + "    </task>"
-        + "    <transition to='end'/>"
-        + "  </task-node>"
-        + "  <end-state name='end' />"
-        + "</process-definition>");
+      + "  <start-state name='start'>"
+      + "    <transition to='midway'/>"
+      + "  </start-state>"
+      + "  <task-node name='midway' end-tasks='yes'>"
+      + "    <timer name='chaos' duedate='2 seconds' repeat='5 seconds'>"
+      + "      <action class='"
+      + TimerAction.class.getName()
+      + "'>"
+      + "        <leave>true</leave>"
+      + "      </action>"
+      + "    </timer>"
+      + "    <task name='doit'>"
+      + "      <timer name='undead' duedate='1 second' repeat='5 seconds'>"
+      + "        <action class='"
+      + TimerAction.class.getName()
+      + "'/>"
+      + "      </timer>"
+      + "    </task>"
+      + "    <transition to='end'/>"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
   }
 
   public static class TimerAction implements ActionHandler {
 
     private boolean leave;
-
     private static final long serialVersionUID = 1L;
-    private static final Integer ONE = new Integer(1);
 
     public void execute(ExecutionContext executionContext) throws Exception {
       String timerName = executionContext.getTimer().getName();
       Integer count = (Integer) executionContext.getVariable(timerName);
-      executionContext.setVariable(timerName, count != null ? new Integer(count.intValue() + 1)
-          : ONE);
+      executionContext.setVariable(timerName, new Integer(count != null ? count.intValue() + 1
+        : 1));
 
       if (leave) executionContext.leaveNode();
     }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2094/JBPM2094Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -33,28 +33,24 @@
  */
 public class JBPM2094Test extends AbstractDbTestCase {
 
-  private ProcessDefinition processDefinition;
-
   private static final int TIMEOUT = 60 * 1000;
   private static final int INSTANCE_COUNT = 10;
 
   protected void setUp() throws Exception {
     super.setUp();
 
+    // [JBPM-2115] multiple threads not supported on DB2 < 9.7
+    // multiple threads not be supported on HSQL
     String dialect = getHibernateDialect();
-    if (dialect.indexOf("DB2") == -1 // [JBPM-2115] multiple threads not supported on DB2 < 9.7
-        && dialect.indexOf("HSQL") == -1) { // multiple threads will not be supported on HSQL
+    if (dialect.indexOf("DB2") == -1 && dialect.indexOf("HSQL") == -1) {
       jbpmConfiguration.getJobExecutor().setNbrOfThreads(4);
     }
 
-    processDefinition = ProcessDefinition.parseXmlResource("org/jbpm/jbpm2094/processdefinition.xml");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("org/jbpm/jbpm2094/processdefinition.xml");
+    deployProcessDefinition(processDefinition);
   }
 
   protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinition.getId());
-
     jbpmConfiguration.getJobExecutor().setNbrOfThreads(1);
     super.tearDown();
   }
@@ -62,12 +58,10 @@
   public void testJobExecutorDeadlock() {
     long[] processInstanceIds = new long[INSTANCE_COUNT];
     for (int i = 0; i < INSTANCE_COUNT; i++) {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
+      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("jbpm2094");
       processInstance.getContextInstance().setVariable("theBody", getName().getBytes());
       processInstance.signal();
-      jbpmContext.save(processInstance);
 
-      newTransaction();
       processInstanceIds[i] = processInstance.getId();
     }
 
@@ -77,9 +71,6 @@
       ProcessInstance processInstance = jbpmContext.loadProcessInstance(processInstanceIds[i]);
       assertTrue("expected " + processInstance + " to have ended", processInstance.hasEnded());
     }
-
-    // close transaction before test ends to prevent occasional lock timeouts during teardown
-    newTransaction();
   }
 
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2263/JBPM2263Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2263/JBPM2263Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2263/JBPM2263Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -26,27 +26,20 @@
 import org.jbpm.graph.exe.ProcessInstance;
 
 /**
+ * Multiple timers in node cause event source reset.
+ * 
+ * @see <a href="https://jira.jboss.org/jira/browse/JBPM-2263">JBPM-2263</a>
  * @author Alejandro Guizar
  */
 public class JBPM2263Test extends AbstractDbTestCase {
 
-  private long processDefinitionId;
-
   protected void setUp() throws Exception {
     super.setUp();
 
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("org/jbpm/jbpm2263/processdefinition.xml");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
-
-    processDefinitionId = processDefinition.getId();
+    deployProcessDefinition(processDefinition);
   }
 
-  protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinitionId);
-    super.tearDown();
-  }
-
   public void testMultipleTimers() {
     ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("multiple timers");
     processInstance.signal();

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2375/JBPM2375Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -7,67 +7,56 @@
 import org.jbpm.graph.exe.ProcessInstance;
 
 /**
- * Test if the JobExecutorThread recovers from an Error
+ * Test if the JobExecutorThread recovers from an Error.
  * 
  * @see <a href="https://jira.jboss.org/jira/browse/JBPM-2375">JBPM-2375</a>
  * @author mputz at redhat.com
+ * @author Alejandro Guizar
  * @since 30-Jun-2009
  */
 public class JBPM2375Test extends AbstractDbTestCase {
 
   private static final int TEST_TIMEOUT = 60 * 1000;
-  private static boolean throwError;
+  static boolean throwError;
 
-  private ProcessDefinition processDefinition;
-
   // a process definition with two timers moving the token forward
   // the second state has an action associated with the node-enter event,
   // which can simulate an Error condition by throwing a NoClassDefFoundError
-  private static final String PROCESS_DEFINITION = "<process-definition name='jbpm2375-test'>" +
-      "  <start-state name='start'>" +
-      "    <transition to='state1' name='to_state1'/>" +
-      "  </start-state>" +
-      "  <state name='state1'>" +
-      "    <timer name='moveToNextStateAfter1second' duedate='1 second' transition='to_state2'/>" +
-      "    <transition to='state2' name='to_state2'/>" +
-      "  </state>" +
-      "  <state name='state2'>" +
-      "    <timer name='moveToEndAfter1second' duedate='1 second' transition='to_end'/>" +
-      "    <event type='node-enter'>" +
-      "      <action name='exceptionTest' class='" +
-      TimerExceptionAction.class.getName() +
-      "'>" +
-      "      </action>" +
-      "    </event>" +
-      "    <transition to='end' name='to_end'/>" +
-      "  </state>" +
-      "  <end-state name='end' />" +
-      "</process-definition>";
+  private static final String PROCESS_DEFINITION = "<process-definition name='jbpm2375'>"
+    + "  <start-state name='start'>"
+    + "    <transition to='state1' name='to_state1'/>"
+    + "  </start-state>"
+    + "  <state name='state1'>"
+    + "    <timer name='moveToNextStateAfter1second' duedate='1 second' transition='to_state2'/>"
+    + "    <transition to='state2' name='to_state2'/>"
+    + "  </state>"
+    + "  <state name='state2'>"
+    + "    <timer name='moveToEndAfter1second' duedate='1 second' transition='to_end'/>"
+    + "    <event type='node-enter'>"
+    + "      <action name='exceptionTest' class='"
+    + TimerExceptionAction.class.getName()
+    + "'>"
+    + "      </action>"
+    + "    </event>"
+    + "    <transition to='end' name='to_end'/>"
+    + "  </state>"
+    + "  <end-state name='end' />"
+    + "</process-definition>";
 
   protected void setUp() throws Exception {
     super.setUp();
-    jbpmConfiguration.getJobExecutor().setLockMonitorInterval(TEST_TIMEOUT / 6);
-
-    processDefinition = ProcessDefinition.parseXmlString(PROCESS_DEFINITION);
-    jbpmContext.deployProcessDefinition(processDefinition);
-
-    newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(PROCESS_DEFINITION);
+    deployProcessDefinition(processDefinition);
   }
 
-  protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinition.getId());
-
-    jbpmConfiguration.getJobExecutor().setLockMonitorInterval(60000);
-    super.tearDown();
-  }
-
   // check if the process ends correctly if no Error is thrown
   public void testTimerWithoutErrorAction() {
     throwError = false;
     runTimerErrorAction();
   }
 
-  // check if the process ends correctly if an Error is thrown in the ActionHandler
+  // check if the process ends correctly if an Error is thrown in the
+  // ActionHandler
   public void testTimerWithErrorAction() {
     throwError = true;
     runTimerErrorAction();
@@ -75,9 +64,8 @@
 
   private void runTimerErrorAction() {
     // kick off process instance
-    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("jbpm2375");
     processInstance.signal();
-    jbpmContext.save(processInstance);
 
     processJobs(TEST_TIMEOUT);
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2489/JBPM2489Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -26,33 +26,24 @@
 import org.jbpm.graph.exe.ProcessInstance;
 
 /**
- * Process loses access to process variables when timer is used inside forked process
+ * Process instance loses access to variables when timer is present inside fork
+ * construct.
  * 
  * @see <a href="https://jira.jboss.org/jira/browse/JBPM-2489">JBPM-2489</a>
  * @author Alejandro Guizar
  */
 public class JBPM2489Test extends AbstractDbTestCase {
 
-  private long processDefinitionId;
-
   private static final int TIMEOUT = 60 * 1000;
 
   protected void setUp() throws Exception {
     super.setUp();
 
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("org/jbpm/jbpm2489/processdefinition.xml");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    processDefinitionId = processDefinition.getId();
+    deployProcessDefinition(processDefinition);
   }
 
-  protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinitionId);
-
-    super.tearDown();
-  }
-
   public void testLostAccessToVariableWithTimer() {
-    newTransaction();
     ProcessInstance processInstance = jbpmContext.newProcessInstance("bpm_orchestration2");
     processInstance.getContextInstance().setVariable("theBody", getName().getBytes());
     processInstance.signal();

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2574/JBPM2574Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2574/JBPM2574Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2574/JBPM2574Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -16,23 +16,14 @@
  */
 public class JBPM2574Test extends AbstractDbTestCase {
 
-  private long processDefinitionId;
-
   protected void setUp() throws Exception {
     super.setUp();
 
-    ProcessDefinition processDefinition = ProcessDefinition
-      .parseXmlResource("org/jbpm/jbpm2574/processdefinition.xml");
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("org/jbpm/jbpm2574/processdefinition.xml");
     processDefinition.addDefinition(new FileDefinition());
-    jbpmContext.deployProcessDefinition(processDefinition);
-    processDefinitionId = processDefinition.getId();
+    deployProcessDefinition(processDefinition);
   }
 
-  protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinitionId);
-    super.tearDown();
-  }
-
   public void testLoadInexistentClass() {
     try {
       ProcessInstance processInstance = jbpmContext.newProcessInstance("scripted");

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2603/JBPM2603Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2603/JBPM2603Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2603/JBPM2603Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -50,19 +50,14 @@
       + "    </timer>"
       + "  </state>"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
-      jbpmContext.save(processInstance);
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
+    jbpmContext.save(processInstance);
 
-      Timer timer = (Timer) session.createCriteria(Timer.class).uniqueResult();
-      assertEquals(processDefinition.getAction("example").getId(), timer.getAction().getId());
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    Timer timer = (Timer) session.createCriteria(Timer.class).uniqueResult();
+    assertEquals(processDefinition.getAction("example").getId(), timer.getAction().getId());
   }
 
   public void testDynamicTimerAction() {
@@ -77,22 +72,17 @@
       + "    </event>"
       + "  </state>"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
-      jbpmContext.save(processInstance);
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
 
-      Timer timer = (Timer) session.createCriteria(Timer.class).uniqueResult();
-      Action action = timer.getAction();
-      assertEquals("org.example.Action", action.getActionDelegation().getClassName());
+    Timer timer = (Timer) session.createCriteria(Timer.class).uniqueResult();
+    Action action = timer.getAction();
+    assertEquals("org.example.Action", action.getActionDelegation().getClassName());
 
-      session.delete(action);
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    jobSession.deleteJob(timer);
+    session.delete(action);
   }
 
   public static class CreateDynamicTimer implements ActionHandler {
@@ -101,11 +91,11 @@
     public void execute(ExecutionContext executionContext) throws Exception {
       Action action = new Action(new Delegation("org.example.Action"));
 
-      Calendar oneHour = Calendar.getInstance();
-      oneHour.add(Calendar.HOUR_OF_DAY, 1);
+      Calendar oneSecond = Calendar.getInstance();
+      oneSecond.add(Calendar.SECOND, 1);
 
       Timer timer = new Timer(executionContext.getToken());
-      timer.setDueDate(oneHour.getTime());
+      timer.setDueDate(oneSecond.getTime());
       timer.setAction(action);
 
       executionContext.getJbpmContext().getServices().getSchedulerService().createTimer(timer);

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2630/JBPM2630Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2630/JBPM2630Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2630/JBPM2630Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,10 +36,8 @@
 
   protected void setUp() throws Exception {
     super.setUp();
-    testConfiguration =
-        JbpmConfiguration.getInstance("org/jbpm/jbpm.test.cfg.xml");
-    noLogConfiguration =
-        JbpmConfiguration.getInstance("org/jbpm/jbpm2630/jbpm.nolog.cfg.xml");
+    testConfiguration = JbpmConfiguration.getInstance();
+    noLogConfiguration = JbpmConfiguration.getInstance("org/jbpm/jbpm2630/jbpm.nolog.cfg.xml");
   }
 
   protected void tearDown() throws Exception {
@@ -55,12 +53,14 @@
       try {
         JbpmContext testContext2 = testConfiguration.createJbpmContext();
         try {
-          assertSame(testConfiguration, JbpmConfigurationTestHelper.getCurrentJbpmConfiguration());
+          assertSame(testConfiguration,
+            JbpmConfigurationTestHelper.getCurrentJbpmConfiguration());
         }
         finally {
           testContext2.close();
         }
-        assertSame(noLogConfiguration, JbpmConfigurationTestHelper.getCurrentJbpmConfiguration());
+        assertSame(noLogConfiguration,
+          JbpmConfigurationTestHelper.getCurrentJbpmConfiguration());
       }
       finally {
         noLogContext.close();

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2637/JBPM2637Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2637/JBPM2637Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2637/JBPM2637Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -28,6 +28,7 @@
 import org.jbpm.db.TaskMgmtSession;
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ProcessInstance;
+import org.jbpm.taskmgmt.def.TaskMgmtDefinition;
 
 /**
  * {@link TaskMgmtSession#findTaskInstancesByIds(List)} fails if taskInstanceIds
@@ -38,27 +39,18 @@
  */
 public class JBPM2637Test extends AbstractDbTestCase {
 
-  private long processDefinitionId;
-
   protected void setUp() throws Exception {
     super.setUp();
 
-    ProcessDefinition processDefinition = ProcessDefinition.createNewProcessDefinition();
-    processDefinition.setName("jbpm2637");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    processDefinitionId = processDefinition.getId();
-    newTransaction();
+    ProcessDefinition processDefinition = new ProcessDefinition("jbpm2637");
+    processDefinition.addDefinition(new TaskMgmtDefinition());
+    deployProcessDefinition(processDefinition);
 
     ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("jbpm2637");
     processInstance.getTaskMgmtInstance().createTaskInstance(processInstance.getRootToken());
     newTransaction();
   }
 
-  protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinitionId);
-    super.tearDown();
-  }
-
   public void testFindTaskInstancesEmptyActorList() {
     assertEquals(0, taskMgmtSession.findTaskInstances(Collections.EMPTY_LIST).size());
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2691/JBPM2691Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2691/JBPM2691Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2691/JBPM2691Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -37,22 +37,12 @@
  */
 public class JBPM2691Test extends AbstractDbTestCase {
 
-  private long processDefinitionId;
-
   protected void setUp() throws Exception {
     super.setUp();
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("org/jbpm/jbpm2691/processdefinition.xml");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    processDefinitionId = processDefinition.getId();
-
-    newTransaction();
+    deployProcessDefinition(processDefinition);
   }
 
-  protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinitionId);
-    super.tearDown();
-  }
-
   public void testSaveExceptionInSeparateTx() {
     ProcessInstance processInstance = jbpmContext.newProcessInstance("jobex");
     processInstance.signal();

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2778/JBPM2778Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2778/JBPM2778Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2778/JBPM2778Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -12,25 +12,14 @@
  */
 public class JBPM2778Test extends AbstractDbTestCase {
 
-  private long processDefinitionId;
-
   protected void setUp() throws Exception {
     super.setUp();
 
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("org/jbpm/jbpm2778/processdefinition.xml");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    processDefinitionId = processDefinition.getId();
-
-    newTransaction();
+    deployProcessDefinition(processDefinition);
   }
 
-  protected void tearDown() throws Exception {
-    newTransaction();
-    graphSession.deleteProcessDefinition(processDefinitionId);
-    super.tearDown();
-  }
-
-  public void testProcess() throws Exception {
+  public void testScriptAcceptPropagatedEvents() throws Exception {
     ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("jbpm2778");
     processInstance.signal();
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2787/JBPM2787Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -26,47 +26,41 @@
 import org.jbpm.graph.exe.ProcessInstance;
 
 /**
- * Process instances get stuck in a fork.
+ * Process instances get stuck in a join.
  * 
  * @author Alejandro Guizar
  * @see <a href="https://jira.jboss.org/jira/browse/JBPM-2787">JBPM-2787</a>
  */
 public class JBPM2787Test extends AbstractDbTestCase {
 
-  private ProcessDefinition processDefinition;
-
   private static final int TIMEOUT = 60 * 1000;
   private static final int INSTANCE_COUNT = 10;
 
   protected void setUp() throws Exception {
     super.setUp();
 
+    // [JBPM-2115] multiple threads not supported on DB2 < 9.7
+    // multiple threads not supported on HSQL
     String dialect = getHibernateDialect();
-    if (dialect.indexOf("DB2") == -1 // [JBPM-2115] multiple threads not supported on DB2 < 9.7
-        && dialect.indexOf("HSQL") == -1) { // multiple threads will not be supported on HSQL
+    if (dialect.indexOf("DB2") == -1 && dialect.indexOf("HSQL") == -1) {
       jbpmConfiguration.getJobExecutor().setNbrOfThreads(4);
     }
 
-    processDefinition = ProcessDefinition.parseXmlResource("org/jbpm/jbpm2787/processdefinition.xml");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlResource("org/jbpm/jbpm2787/processdefinition.xml");
+    deployProcessDefinition(processDefinition);
   }
 
   protected void tearDown() throws Exception {
-    graphSession.deleteProcessDefinition(processDefinition.getId());
-
     jbpmConfiguration.getJobExecutor().setNbrOfThreads(1);
     super.tearDown();
   }
 
-  public void testJobExecutorDeadlock() {
+  public void testProcessInstancesStuckInJoin() {
     long[] processInstanceIds = new long[INSTANCE_COUNT];
     for (int i = 0; i < INSTANCE_COUNT; i++) {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
+      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("jbpm2787");
       processInstance.signal();
-      jbpmContext.save(processInstance);
 
-      newTransaction();
       processInstanceIds[i] = processInstance.getId();
     }
 
@@ -76,9 +70,6 @@
       ProcessInstance processInstance = jbpmContext.loadProcessInstance(processInstanceIds[i]);
       assertTrue("expected " + processInstance + " to have ended", processInstance.hasEnded());
     }
-
-    // close transaction before test ends to prevent occasional lock timeouts during teardown
-    newTransaction();
   }
 
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2812/JBPM2812Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2812/JBPM2812Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2812/JBPM2812Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -41,7 +41,7 @@
       "  </start-state>" +
       "  <super-state name='super-state'>" +
       "    <state name='state1'>" +
-      "      <timer duedate='3 seconds' name='timeout-timer' transition='timeout'/>" +
+      "      <timer duedate='1 second' name='timeout-timer' transition='timeout'/>" +
       "      <transition to='state2' name='go'/>" +
       "    </state>" +
       "    <state name='state2'>" +

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2828/JBPM2828Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2828/JBPM2828Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm2828/JBPM2828Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -19,63 +19,48 @@
  * 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.JBPM2828;
+package org.jbpm.jbpm2828;
 
-import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 
-import org.hibernate.Session;
+import org.hibernate.criterion.Projections;
 
 import org.jbpm.JbpmConfiguration;
+import org.jbpm.context.exe.ContextInstance;
+import org.jbpm.context.exe.variableinstance.ByteArrayInstance;
+import org.jbpm.context.exe.variableinstance.LongInstance;
+import org.jbpm.context.exe.variableinstance.StringInstance;
 import org.jbpm.db.AbstractDbTestCase;
 import org.jbpm.graph.def.ActionHandler;
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ExecutionContext;
 import org.jbpm.graph.exe.ProcessInstance;
 
-
 /**
- * Test to verify if contextInstance.deleteVariable(name) does not cause orphaned variable records
+ * Test to verify if contextInstance.deleteVariable(name) does not cause
+ * orphaned variable records.
  * 
  * @see <a href="https://jira.jboss.org/jira/browse/JBPM-2828">JBPM-2828</a>
  * @author Martin Putz
  */
 public class JBPM2828Test extends AbstractDbTestCase {
 
-  protected static List listVariable = new ArrayList();
-  protected static Long longVariable = new Long(10L);
-  protected static String stringVariable = "jBPM";
+  static final List listVariable = Arrays.asList(new String[] { "Bart", "Lisa",
+    "Marge", "Barney", "Homer", "Maggie" });
+  static final Long longVariable = new Long(10L);
+  private static final String stringVariable = "jBPM";
 
-  static {
-    listVariable.add("Bart");
-    listVariable.add("Lisa");
-    listVariable.add("Marge");
-    listVariable.add("Barney");
-    listVariable.add("Homer");
-    listVariable.add("Maggie");
-   }
-
-
-
-   public static class CreateVariablesAction implements ActionHandler {
+  public static class CreateVariablesAction implements ActionHandler {
     private static final long serialVersionUID = 1L;
-    public void execute(ExecutionContext executionContext) throws Exception {
-      executionContext.setVariable("listVariable", listVariable); 
-      executionContext.setVariable("longVariable", longVariable); 
-      executionContext.setVariable("stringVariable", stringVariable); 
-    }
-   }
 
-   public static class DeleteVariablesAction implements ActionHandler {
-    private static final long serialVersionUID = 1L;
     public void execute(ExecutionContext executionContext) throws Exception {
-      executionContext.getContextInstance().deleteVariable("listVariable"); 
-      executionContext.getContextInstance().deleteVariable("longVariable"); 
-      executionContext.getContextInstance().deleteVariable("stringVariable"); 
+      executionContext.setVariable("listVariable", listVariable);
+      executionContext.setVariable("longVariable", longVariable);
+      executionContext.setVariable("stringVariable", stringVariable);
     }
-   }
+  }
 
-
   protected JbpmConfiguration getJbpmConfiguration() {
     if (jbpmConfiguration == null) {
       jbpmConfiguration = JbpmConfiguration.parseResource("org/jbpm/jbpm2828/jbpm.nolog.cfg.xml");
@@ -83,78 +68,64 @@
     return jbpmConfiguration;
   }
 
+  protected void tearDown() throws Exception {
+    super.tearDown();
+    jbpmConfiguration.close();
+  }
 
   public void testDeleteVariable() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='jbpmXXX'>" +
-      "  <start-state name='start'>" +
-      "    <transition to='state1'>" +
-      "      <action name='createVariables' class='"+this.getClass().getName()+"$CreateVariablesAction'/>" +
-      "    </transition>" +
-      "  </start-state>" +
-      "  <state name='state1'>" +
-      "    <transition to='state2' name='go'>" +
-      "      <action name='deleteVariables' class='"+this.getClass().getName()+"$DeleteVariablesAction'/>" +
-      "    </transition>" +
-      "  </state>" +
-      "  <state name='state2'>" +
-      "    <transition to='end' name='go'/>" +
-      "  </state>" +
-      "  <end-state name='end'/>" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='jbpm2828'>"
+      + "  <start-state name='start'>"
+      + "    <transition to='state1'>"
+      + "      <action name='createVariables' class='"
+      + CreateVariablesAction.class.getName()
+      + "'/>"
+      + "    </transition>"
+      + "  </start-state>"
+      + "  <state name='state1'>"
+      + "    <transition to='state2' name='go'>"
+      + "      <script>"
+      + "      contextInstance = executionContext.getContextInstance();"
+      + "      contextInstance.deleteVariable(\"listVariable\");"
+      + "      contextInstance.deleteVariable(\"longVariable\");"
+      + "      contextInstance.deleteVariable(\"stringVariable\");"
+      + "      </script>"
+      + "    </transition>"
+      + "  </state>"
+      + "  <state name='state2'>"
+      + "    <transition to='end' name='go'/>"
+      + "  </state>"
+      + "  <end-state name='end'/>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    processDefinition = saveAndReload(processDefinition);
-    try
-    {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
-      processInstance = saveAndReload(processInstance);
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
 
-      assertEquals(listVariable, processInstance.getContextInstance().getVariable("listVariable"));
-      assertEquals(longVariable, processInstance.getContextInstance().getVariable("longVariable"));
-      assertEquals(stringVariable, processInstance.getContextInstance().getVariable("stringVariable"));
-      assertEquals(1, getRecordCount("org.jbpm.context.exe.variableinstance.ByteArrayInstance", null));
-      assertEquals(1, getRecordCount("org.jbpm.context.exe.variableinstance.LongInstance", null));
-      assertEquals(1, getRecordCount("org.jbpm.context.exe.variableinstance.StringInstance", null));
+    processInstance = saveAndReload(processInstance);
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    assertEquals(listVariable, contextInstance.getVariable("listVariable"));
+    assertEquals(longVariable, contextInstance.getVariable("longVariable"));
+    assertEquals(stringVariable, contextInstance.getVariable("stringVariable"));
+    assertEquals(1, getRecordCount(ByteArrayInstance.class));
+    assertEquals(1, getRecordCount(LongInstance.class));
+    assertEquals(1, getRecordCount(StringInstance.class));
+    processInstance.signal();
 
-      processInstance.signal();
-      processInstance = saveAndReload(processInstance);
-      assertNull(processInstance.getContextInstance().getVariable("listVariable"));
-      assertNull(processInstance.getContextInstance().getVariable("longVariable"));
-      assertNull(processInstance.getContextInstance().getVariable("stringVariable"));
-      assertEquals(0, getRecordCount("org.jbpm.context.exe.variableinstance.ByteArrayInstance", null));
-      assertEquals(0, getRecordCount("org.jbpm.context.exe.variableinstance.LongInstance", null));
-      assertEquals(0, getRecordCount("org.jbpm.context.exe.variableinstance.StringInstance", null));
-
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    processInstance = saveAndReload(processInstance);
+    contextInstance = processInstance.getContextInstance();
+    assertNull(contextInstance.getVariable("listVariable"));
+    assertNull(contextInstance.getVariable("longVariable"));
+    assertNull(contextInstance.getVariable("stringVariable"));
+    assertEquals(0, getRecordCount(ByteArrayInstance.class));
+    assertEquals(0, getRecordCount(LongInstance.class));
+    assertEquals(0, getRecordCount(StringInstance.class));
   }
 
-  protected int getRecordCount(String name, String where) {
-    if (session != null) {
-      return getRecords(session, name, where);
-    }
-    else {
-      beginSessionTransaction();
-      try {
-        return getRecords(session, name, where);
-      }
-      finally {
-        commitAndCloseSession();
-      }
-    }
+  private int getRecordCount(Class entity) {
+    Number count = (Number) session.createCriteria(entity)
+      .setProjection(Projections.rowCount())
+      .uniqueResult();
+    return count.intValue();
   }
-   
-   protected int getRecords(Session session, String name, String where) {
-    Number count = (Number) session.createQuery("select count(*) "
-        + "from " + name + (where!=null ? " " + where : "")).uniqueResult();
-    return count.intValue();      
-   }
-
-
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jbpm983/JBPM983Test.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -17,99 +17,90 @@
  */
 public class JBPM983Test extends AbstractDbTestCase {
 
-  private long processDefinitionId;
-  private long subProcessDefinitionId;
-
   protected void setUp() throws Exception {
     super.setUp();
 
     ProcessDefinition subProcessDefinition = ProcessDefinition.parseXmlString(SUBPROCESS_XML);
-    jbpmContext.deployProcessDefinition(subProcessDefinition);
-    subProcessDefinitionId = subProcessDefinition.getId();
+    deployProcessDefinition(subProcessDefinition);
 
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(PROCESS_XML);
-    jbpmContext.deployProcessDefinition(processDefinition);
-    processDefinitionId = processDefinition.getId();
+    deployProcessDefinition(processDefinition);
 
+    // [JBPM-2115] multiple threads not supported on DB2 < 9.7
+    // multiple threads not supported on HSQL
     String dialect = getHibernateDialect();
-    if (dialect.indexOf("DB2") == -1 // [JBPM-2115] multiple threads not supported on DB2 < 9.7
-        && dialect.indexOf("HSQL") == -1) { // multiple threads will not be supported on HSQL
+    if (dialect.indexOf("DB2") == -1 && dialect.indexOf("HSQL") == -1) {
       jbpmConfiguration.getJobExecutor().setNbrOfThreads(4);
     }
   }
 
   protected void tearDown() throws Exception {
     jbpmConfiguration.getJobExecutor().setNbrOfThreads(1);
-
-    graphSession.deleteProcessDefinition(processDefinitionId);
-    graphSession.deleteProcessDefinition(subProcessDefinitionId);
-
     super.tearDown();
   }
 
   static final String SUBPROCESS_XML = "<?xml version='1.0'?>"
-      + "<process-definition xmlns='urn:jbpm.org:jpdl-3.2' name='subprocess'>"
-      + "<start-state name='start-state1'>"
-      + "   <description>start of the process</description>"
-      + "   <transition name='start-to-check' to='fileCheck'/>"
-      + "</start-state>"
-      + "<node name='fileCheck' async='true'>"
-      + "   <action name='action_filecheck' class='"
-      + TestAction.class.getName()
-      + "'>"
-      + "   </action>"
-      + "   <transition name='check-to-do' to='doWhatever'/>"
-      + "</node>"
-      + "<node name='doWhatever' async='true'>"
-      + "   <action name='action_do' class='"
-      + TestAction.class.getName()
-      + "'/>"
-      + "   <transition name='check-to-end' to='end-state-success'/>"
-      + "</node>"
-      + "<end-state name='end-state-success'>"
-      + "   <description>process finished normally</description>"
-      + "</end-state>"
-      + "</process-definition>";
+    + "<process-definition xmlns='urn:jbpm.org:jpdl-3.2' name='subprocess'>"
+    + "<start-state name='start-state1'>"
+    + "   <description>start of the process</description>"
+    + "   <transition name='start-to-check' to='fileCheck'/>"
+    + "</start-state>"
+    + "<node name='fileCheck' async='true'>"
+    + "   <action name='action_filecheck' class='"
+    + TestAction.class.getName()
+    + "'>"
+    + "   </action>"
+    + "   <transition name='check-to-do' to='doWhatever'/>"
+    + "</node>"
+    + "<node name='doWhatever' async='true'>"
+    + "   <action name='action_do' class='"
+    + TestAction.class.getName()
+    + "'/>"
+    + "   <transition name='check-to-end' to='end-state-success'/>"
+    + "</node>"
+    + "<end-state name='end-state-success'>"
+    + "   <description>process finished normally</description>"
+    + "</end-state>"
+    + "</process-definition>";
 
   static final String PROCESS_XML = "<?xml version='1.0'?>"
-      + "<process-definition xmlns='urn:jbpm.org:jpdl-3.2' name='superprocess'>"
-      + "<start-state name='start-state1'>"
-      + "   <description>start of the process</description>"
-      + "   <transition name='start-to-check' to='fileCheck'/>"
-      + "</start-state>"
-      + ""
-      + "<node name='fileCheck' async='true'>"
-      + "   <action name='action_check' class='"
-      + TestAction.class.getName()
-      + "'/>"
-      + "   <transition name='check-to-fork' to='fork1'/>"
-      + "</node>"
-      + "<fork name='fork1'>"
-      + "   <transition name='toNode1' to='node1'/>"
-      + "   <transition name='toNode2' to='node2'/>"
-      + "</fork>"
-      + "<process-state name='node1' async='true'>"
-      + "   <sub-process name='subprocess'/>"
-      + "   <transition name='node1toJoin1' to='join1'/>"
-      + "</process-state>"
-      + "<process-state name='node2' async='true'>"
-      + "   <sub-process name='subprocess'/>"
-      + "   <transition name='node2toJoin1' to='join1'/>"
-      + "</process-state>"
-      + "<join name='join1'>"
-      + "   <transition name='joinToEnd' to='end-state-success'/>"
-      + "</join>"
-      + "<end-state name='end-state-success'>"
-      + "   <description>process finished normally</description>"
-      + "</end-state>"
-      + "</process-definition>";
+    + "<process-definition xmlns='urn:jbpm.org:jpdl-3.2' name='superprocess'>"
+    + "<start-state name='start-state1'>"
+    + "   <description>start of the process</description>"
+    + "   <transition name='start-to-check' to='fileCheck'/>"
+    + "</start-state>"
+    + ""
+    + "<node name='fileCheck' async='true'>"
+    + "   <action name='action_check' class='"
+    + TestAction.class.getName()
+    + "'/>"
+    + "   <transition name='check-to-fork' to='fork1'/>"
+    + "</node>"
+    + "<fork name='fork1'>"
+    + "   <transition name='toNode1' to='node1'/>"
+    + "   <transition name='toNode2' to='node2'/>"
+    + "</fork>"
+    + "<process-state name='node1' async='true'>"
+    + "   <sub-process name='subprocess'/>"
+    + "   <transition name='node1toJoin1' to='join1'/>"
+    + "</process-state>"
+    + "<process-state name='node2' async='true'>"
+    + "   <sub-process name='subprocess'/>"
+    + "   <transition name='node2toJoin1' to='join1'/>"
+    + "</process-state>"
+    + "<join name='join1'>"
+    + "   <transition name='joinToEnd' to='end-state-success'/>"
+    + "</join>"
+    + "<end-state name='end-state-success'>"
+    + "   <description>process finished normally</description>"
+    + "</end-state>"
+    + "</process-definition>";
 
   static final int PROCESS_COUNT = 10;
 
   public void testConcurrentJobs() throws Exception {
     long[] processInstanceIds = new long[PROCESS_COUNT];
     for (int i = 0; i < PROCESS_COUNT; i++) {
-      newTransaction();
       ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("superprocess");
       processInstance.getContextInstance().setVariable("test", "true");
       processInstance.signal();
@@ -127,23 +118,23 @@
 
   public static class TestAction implements ActionHandler {
 
-    private final Log log = LogFactory.getLog(getClass());
-
     private static final long serialVersionUID = 1L;
 
     public void execute(ExecutionContext executionContext) throws Exception {
-      String process = executionContext.getProcessDefinition().getName() + ':'
-          + executionContext.getProcessInstance().getId();
-      String node = executionContext.getNode().getName();
-      String token = executionContext.getToken().toString();
-      log.info("BEGIN process=" + process + ",node=" + node + ",token=" + token);
+      Log log = LogFactory.getLog(JBPM983Test.class);
+      String line = executionContext.getProcessInstance()
+        + " | "
+        + executionContext.getNode()
+        + " | "
+        + executionContext.getToken();
+      log.info("BEGIN " + line);
 
       for (int i = 0; i < 5; i++) {
-        log.info("PROGRESS process=" + process + ",node=" + node + ",token=" + token);
+        log.info("PROGRESS " + line);
         Thread.sleep(100);
       }
 
-      log.info("END process=" + process + ",node=" + node + ",token=" + token);
+      log.info("END " + line);
       executionContext.leaveNode();
     }
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/job/executor/JobExecutorDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/job/executor/JobExecutorDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/job/executor/JobExecutorDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -25,92 +25,84 @@
 
   protected void setUp() throws Exception {
     super.setUp();
+    // [JBPM-2115] multiple threads not supported on DB2 < 9.7
+    // multiple threads not supported on HSQL
     String dialect = getHibernateDialect();
-    if (dialect.indexOf("DB2") == -1 // [JBPM-2115] multiple threads not supported on DB2 < 9.7
-        && dialect.indexOf("HSQL") == -1) { // multiple threads will not be supported on HSQL
-      getJbpmConfiguration().getJobExecutor().setNbrOfThreads(4);
+    if (dialect.indexOf("DB2") == -1 && dialect.indexOf("HSQL") == -1) {
+      jbpmConfiguration.getJobExecutor().setNbrOfThreads(4);
     }
   }
 
   protected void tearDown() throws Exception {
-    getJbpmConfiguration().getJobExecutor().setNbrOfThreads(1);
+    jbpmConfiguration.getJobExecutor().setNbrOfThreads(1);
     super.tearDown();
   }
 
   public void testJobExecutor() {
     deployProcessDefinition();
-    try {
-      startProcessInstances();
-      processJobs(timeout);
-      assertEquals(createExpectedResults(), collectedResults);
-    }
-    finally {
-      deleteProcessDefinition();
-    }
+    startProcessInstances();
+    processJobs(timeout);
+    assertEquals(createExpectedResults(), collectedResults);
   }
 
   void deployProcessDefinition() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='bulk messages'>"
-        + "  <start-state>"
-        + "    <transition to='a' />"
-        + "  </start-state>"
-        + "  <node name='a' async='true'>"
-        + "    <action class='" +
-        AutomaticActivity.class.getName() +
-        "' />" +
-        "    <transition to='b' />" +
-        "  </node>" +
-        "  <node name='b' async='true'>" +
-        "    <event type='node-enter'>" +
-        "      <action name='X' async='true' class='" +
-        AsyncAction.class.getName() +
-        "' />" +
-        "    </event>" +
-        "    <action class='" +
-        AutomaticActivity.class.getName() +
-        "' />" +
-        "    <transition to='c' />" +
-        "  </node>" +
-        "  <node name='c' async='true'>" +
-        "    <action class='" +
-        AutomaticActivity.class.getName() +
-        "' />" +
-        "    <transition to='d'>" +
-        "      <action name='Y' async='true' class='" +
-        AsyncAction.class.getName() +
-        "' />" +
-        "    </transition>" +
-        "  </node>" +
-        "  <node name='d' async='true'>" +
-        "    <action class='" +
-        AutomaticActivity.class.getName() +
-        "' />" +
-        "    <transition to='e' />" +
-        "    <event type='node-leave'>" +
-        "      <action name='Z' async='true' class='" +
-        AsyncAction.class.getName() +
-        "' />" +
-        "    </event>" +
-        "  </node>" +
-        "  <node name='e' async='true'>" +
-        "    <action class='" +
-        AutomaticActivity.class.getName() +
-        "' />" +
-        "    <transition to='end' />" +
-        "  </node>" +
-        "  <end-state name='end'/>" +
-        "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-
-    newTransaction();
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <node name='a' async='true'>"
+      + "    <action class='"
+      + AutomaticActivity.class.getName()
+      + "' />"
+      + "    <transition to='b' />"
+      + "  </node>"
+      + "  <node name='b' async='true'>"
+      + "    <event type='node-enter'>"
+      + "      <action name='X' async='true' class='"
+      + AsyncAction.class.getName()
+      + "' />"
+      + "    </event>"
+      + "    <action class='"
+      + AutomaticActivity.class.getName()
+      + "' />"
+      + "    <transition to='c' />"
+      + "  </node>"
+      + "  <node name='c' async='true'>"
+      + "    <action class='"
+      + AutomaticActivity.class.getName()
+      + "' />"
+      + "    <transition to='d'>"
+      + "      <action name='Y' async='true' class='"
+      + AsyncAction.class.getName()
+      + "' />"
+      + "    </transition>"
+      + "  </node>"
+      + "  <node name='d' async='true'>"
+      + "    <action class='"
+      + AutomaticActivity.class.getName()
+      + "' />"
+      + "    <transition to='e' />"
+      + "    <event type='node-leave'>"
+      + "      <action name='Z' async='true' class='"
+      + AsyncAction.class.getName()
+      + "' />"
+      + "    </event>"
+      + "  </node>"
+      + "  <node name='e' async='true'>"
+      + "    <action class='"
+      + AutomaticActivity.class.getName()
+      + "' />"
+      + "    <transition to='end' />"
+      + "  </node>"
+      + "  <end-state name='end'/>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
   }
 
   void startProcessInstances() {
     for (int i = 0; i < nbrOfConcurrentProcessExecutions; i++) {
       ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("bulk messages");
       processInstance.signal();
-
-      newTransaction();
     }
   }
 
@@ -120,7 +112,8 @@
     Set expectedResults = new TreeSet();
 
     NumberFormat formatter = NumberFormat.getIntegerInstance();
-    formatter.setMinimumIntegerDigits(Integer.toString(nbrOfConcurrentProcessExecutions).length());
+    formatter.setMinimumIntegerDigits(Integer.toString(nbrOfConcurrentProcessExecutions)
+      .length());
     StringBuffer text = new StringBuffer();
     FieldPosition position = new FieldPosition(NumberFormat.INTEGER_FIELD);
 
@@ -138,11 +131,6 @@
     return expectedResults;
   }
 
-  void deleteProcessDefinition() {
-    ProcessDefinition processDefinition = graphSession.findLatestProcessDefinition("bulk messages");
-    graphSession.deleteProcessDefinition(processDefinition);
-  }
-
   public static class AutomaticActivity implements ActionHandler {
 
     private static final long serialVersionUID = 1L;

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/exe/AvailableTransitionsDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/exe/AvailableTransitionsDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/exe/AvailableTransitionsDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -13,79 +13,70 @@
 public class AvailableTransitionsDbTest extends AbstractDbTestCase {
 
   public void testSimpleAvailableTransitions() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='conditionalavailability' initial='start'>" +
-      "  <state name='start'>" +
-      "    <transition name='high' to='theone'>" +
-      "      <condition expression='#{a &gt; 0}' />" +
-      "    </transition>" +
-      "    <transition name='medium' to='theone'>" +
-      "      <condition expression='#{a == 0}' />" +
-      "    </transition>" +
-      "    <transition name='low' to='theother'>" +
-      "      <condition expression='#{a &lt;= 0}' />" +
-      "    </transition>" +
-      "    <transition name='alwaysavailable' to='theother'/>" +
-      "  </state>" +
-      "  <state name='theone'/>" +
-      "  <state name='theother'/>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("conditionalavailability");
-      processInstance = saveAndReload(processInstance);
-      
-      Set availableTransitions = processInstance.getRootToken().getAvailableTransitions();
-      assertEquals(1, availableTransitions.size());
-      ContextInstance contextInstance = processInstance.getContextInstance();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='conditionalavailability' initial='start'>"
+      + "  <state name='start'>"
+      + "    <transition name='high' to='theone'>"
+      + "      <condition expression='#{a &gt; 0}' />"
+      + "    </transition>"
+      + "    <transition name='medium' to='theone'>"
+      + "      <condition expression='#{a == 0}' />"
+      + "    </transition>"
+      + "    <transition name='low' to='theother'>"
+      + "      <condition expression='#{a &lt;= 0}' />"
+      + "    </transition>"
+      + "    <transition name='alwaysavailable' to='theother'/>"
+      + "  </state>"
+      + "  <state name='theone'/>"
+      + "  <state name='theother'/>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      contextInstance.setVariable("a", new Integer(-3));
-      processInstance = saveAndReload(processInstance);
-      contextInstance = processInstance.getContextInstance();
-      
-      Set expectedTransitionNames = new HashSet();
-      expectedTransitionNames.add("low");
-      expectedTransitionNames.add("alwaysavailable");
-      
-      availableTransitions = processInstance.getRootToken().getAvailableTransitions();
-      assertEquals(expectedTransitionNames, getTransitionNames(availableTransitions));
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("conditionalavailability");
+    processInstance = saveAndReload(processInstance);
 
-      contextInstance.setVariable("a", new Integer(0));
-      processInstance = saveAndReload(processInstance);
-      contextInstance = processInstance.getContextInstance();
-      
-      expectedTransitionNames = new HashSet();
-      expectedTransitionNames.add("low");
-      expectedTransitionNames.add("medium");
-      expectedTransitionNames.add("alwaysavailable");
-      
-      availableTransitions = processInstance.getRootToken().getAvailableTransitions();
-      assertEquals(expectedTransitionNames, getTransitionNames(availableTransitions));
+    Set availableTransitions = processInstance.getRootToken().getAvailableTransitions();
+    assertEquals(1, availableTransitions.size());
+    ContextInstance contextInstance = processInstance.getContextInstance();
 
-      contextInstance.setVariable("a", new Integer(4));
-      processInstance = saveAndReload(processInstance);
-      contextInstance = processInstance.getContextInstance();
-      
-      expectedTransitionNames = new HashSet();
-      expectedTransitionNames.add("high");
-      expectedTransitionNames.add("alwaysavailable");
-      
-      availableTransitions = processInstance.getRootToken().getAvailableTransitions();
-      assertEquals(expectedTransitionNames, getTransitionNames(availableTransitions));
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    contextInstance.setVariable("a", new Integer(-3));
+    processInstance = saveAndReload(processInstance);
+    contextInstance = processInstance.getContextInstance();
+
+    Set expectedTransitionNames = new HashSet();
+    expectedTransitionNames.add("low");
+    expectedTransitionNames.add("alwaysavailable");
+
+    availableTransitions = processInstance.getRootToken().getAvailableTransitions();
+    assertEquals(expectedTransitionNames, getTransitionNames(availableTransitions));
+
+    contextInstance.setVariable("a", new Integer(0));
+    processInstance = saveAndReload(processInstance);
+    contextInstance = processInstance.getContextInstance();
+
+    expectedTransitionNames = new HashSet();
+    expectedTransitionNames.add("low");
+    expectedTransitionNames.add("medium");
+    expectedTransitionNames.add("alwaysavailable");
+
+    availableTransitions = processInstance.getRootToken().getAvailableTransitions();
+    assertEquals(expectedTransitionNames, getTransitionNames(availableTransitions));
+
+    contextInstance.setVariable("a", new Integer(4));
+    processInstance = saveAndReload(processInstance);
+    contextInstance = processInstance.getContextInstance();
+
+    expectedTransitionNames = new HashSet();
+    expectedTransitionNames.add("high");
+    expectedTransitionNames.add("alwaysavailable");
+
+    availableTransitions = processInstance.getRootToken().getAvailableTransitions();
+    assertEquals(expectedTransitionNames, getTransitionNames(availableTransitions));
   }
 
   public Set getTransitionNames(Set availableTransitions) {
     Set transitionNames = new HashSet();
-    if (availableTransitions!=null) {
-      Iterator iter = availableTransitions.iterator();
-      while (iter.hasNext()) {
+    if (availableTransitions != null) {
+      for (Iterator iter = availableTransitions.iterator(); iter.hasNext();) {
         Transition transition = (Transition) iter.next();
         transitionNames.add(transition.getName());
       }
@@ -94,56 +85,46 @@
   }
 
   public void testSuperStateAvailableTransitions() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='conditionalavailability' initial='start'>" +
-      "  <super-state name='start'>" +
-      "    <state name='go'>" +
-      "      <transition name='inneralwaysavailable' to='../theother' />" +
-      "      <transition name='five' to='../theone'>" +
-      "        <condition expression='#{a == 5}' />" +
-      "      </transition>" +
-      "    </state>" +
-      "    <transition name='high' to='theone'>" +
-      "      <condition expression='#{a &gt; 0}' />" +
-      "    </transition>" +
-      "    <transition name='medium' to='theone'>" +
-      "      <condition expression='#{a == 0}' />" +
-      "    </transition>" +
-      "    <transition name='low' to='theother'>" +
-      "      <condition expression='#{a &lt;= 0}' />" +
-      "    </transition>" +
-      "    <transition name='outeralwaysavailable' to='theother'/>" +
-      "  </super-state>" +
-      "  <state name='theone'/>" +
-      "  <state name='theother'/>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("conditionalavailability");
-      Set availableTransitions = processInstance.getRootToken().getAvailableTransitions();
-      assertEquals(2, availableTransitions.size());
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='conditionalavailability' initial='start'>"
+      + "  <super-state name='start'>"
+      + "    <state name='go'>"
+      + "      <transition name='inneralwaysavailable' to='../theother' />"
+      + "      <transition name='five' to='../theone'>"
+      + "        <condition expression='#{a == 5}' />"
+      + "      </transition>"
+      + "    </state>"
+      + "    <transition name='high' to='theone'>"
+      + "      <condition expression='#{a &gt; 0}' />"
+      + "    </transition>"
+      + "    <transition name='medium' to='theone'>"
+      + "      <condition expression='#{a == 0}' />"
+      + "    </transition>"
+      + "    <transition name='low' to='theother'>"
+      + "      <condition expression='#{a &lt;= 0}' />"
+      + "    </transition>"
+      + "    <transition name='outeralwaysavailable' to='theother'/>"
+      + "  </super-state>"
+      + "  <state name='theone'/>"
+      + "  <state name='theother'/>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      ContextInstance contextInstance = processInstance.getContextInstance();
-      contextInstance.setVariable("a", new Integer(5));
-      processInstance = saveAndReload(processInstance);
-      contextInstance = processInstance.getContextInstance();
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("conditionalavailability");
+    Set availableTransitions = processInstance.getRootToken().getAvailableTransitions();
+    assertEquals(2, availableTransitions.size());
 
-      Set expectedTransitionNames = new HashSet();
-      expectedTransitionNames.add("five");
-      expectedTransitionNames.add("inneralwaysavailable");
-      expectedTransitionNames.add("outeralwaysavailable");
-      expectedTransitionNames.add("high");
-      
-      availableTransitions = processInstance.getRootToken().getAvailableTransitions();
-      assertEquals(expectedTransitionNames, getTransitionNames(availableTransitions));
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    contextInstance.setVariable("a", new Integer(5));
+    processInstance = saveAndReload(processInstance);
+    contextInstance = processInstance.getContextInstance();
 
-  }
+    Set expectedTransitionNames = new HashSet();
+    expectedTransitionNames.add("five");
+    expectedTransitionNames.add("inneralwaysavailable");
+    expectedTransitionNames.add("outeralwaysavailable");
+    expectedTransitionNames.add("high");
 
+    availableTransitions = processInstance.getRootToken().getAvailableTransitions();
+    assertEquals(expectedTransitionNames, getTransitionNames(availableTransitions));
+  }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveClassLoadingDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveClassLoadingDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveClassLoadingDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -40,9 +40,9 @@
 
   String getTestClassesDir() {
     return ProcessArchiveDeploymentDbTest.class.getProtectionDomain()
-        .getCodeSource()
-        .getLocation()
-        .getFile();
+      .getCodeSource()
+      .getLocation()
+      .getFile();
   }
 
   public void testExecuteResourceUsingProcess() throws Exception {
@@ -50,8 +50,10 @@
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     ZipOutputStream zipOutputStream = new ZipOutputStream(baos);
     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, "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();
     byte[] zipBytes = baos.toByteArray();
@@ -66,7 +68,7 @@
     assertTrue(new File(resourceOriginalName).renameTo(new File(resourceTmpName)));
 
     String archiveResourceOriginalName = getTestClassesDir()
-        + "org/jbpm/jpdl/par/archiveresource.txt";
+      + "org/jbpm/jpdl/par/archiveresource.txt";
     String archiveResourceTmpName = archiveResourceOriginalName + ".hiddenFromTestClasspath";
     assertTrue(new File(archiveResourceOriginalName).renameTo(new File(archiveResourceTmpName)));
 
@@ -85,17 +87,10 @@
       // deploy the process archive
       ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
       ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
-      jbpmContext.deployProcessDefinition(processDefinition);
+      deployProcessDefinition(processDefinition);
 
-      newTransaction();
-      try {
-        ProcessInstance processInstance = jbpmContext.newProcessInstance("resourceprocess");
-        processInstance.signal();
-        jbpmContext.save(processInstance);
-      }
-      finally {
-        jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-      }
+      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("resourceprocess");
+      processInstance.signal();
     }
     finally {
       // put the files back into original position
@@ -109,20 +104,25 @@
     // create a process archive
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     ZipOutputStream zipOutputStream = new ZipOutputStream(baos);
-    addEntry(zipOutputStream, "processdefinition.xml", "org/jbpm/jpdl/par/instantiateprocess.xml");
-    addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/InstantiateAction.class", "org/jbpm/jpdl/par/InstantiateAction.class");
-    addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/InstantiateClass.class", "org/jbpm/jpdl/par/InstantiateClass.class");
+    addEntry(zipOutputStream, "processdefinition.xml",
+      "org/jbpm/jpdl/par/instantiateprocess.xml");
+    addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/InstantiateAction.class",
+      "org/jbpm/jpdl/par/InstantiateAction.class");
+    addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/InstantiateClass.class",
+      "org/jbpm/jpdl/par/InstantiateClass.class");
     zipOutputStream.close();
     byte[] zipBytes = baos.toByteArray();
 
     // move the files
     String instantiateActionOriginalName = getTestClassesDir()
-        + "org/jbpm/jpdl/par/InstantiateAction.class";
-    String instantiateActionTmpName = instantiateActionOriginalName + ".hiddenFromTestClasspath";
-    assertTrue(new File(instantiateActionOriginalName).renameTo(new File(instantiateActionTmpName)));
+      + "org/jbpm/jpdl/par/InstantiateAction.class";
+    String instantiateActionTmpName = instantiateActionOriginalName
+      + ".hiddenFromTestClasspath";
+    assertTrue(new File(instantiateActionOriginalName).renameTo(new File(
+      instantiateActionTmpName)));
 
     String instantiateClassOriginalName = getTestClassesDir()
-        + "org/jbpm/jpdl/par/InstantiateClass.class";
+      + "org/jbpm/jpdl/par/InstantiateClass.class";
     String instantiateClassTmpName = instantiateClassOriginalName + ".hiddenFromTestClasspath";
     assertTrue(new File(instantiateClassOriginalName).renameTo(new File(instantiateClassTmpName)));
 
@@ -147,17 +147,10 @@
       // deploy the process archive
       ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
       ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
-      jbpmContext.deployProcessDefinition(processDefinition);
+      deployProcessDefinition(processDefinition);
 
-      newTransaction();
-      try {
-        ProcessInstance processInstance = jbpmContext.newProcessInstance("instantiateprocess");
-        processInstance.signal();
-        jbpmContext.save(processInstance);
-      }
-      finally {
-        jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-      }
+      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("instantiateprocess");
+      processInstance.signal();
     }
     finally {
       // put the files back into original position
@@ -170,16 +163,20 @@
     // create a process archive
     ByteArrayOutputStream baos = new ByteArrayOutputStream();
     ZipOutputStream zipOutputStream = new ZipOutputStream(baos);
-    addEntry(zipOutputStream, "processdefinition.xml", "org/jbpm/jpdl/par/instantiateprocess.xml");
-    addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/InstantiateAction.class", "org/jbpm/jpdl/par/InstantiateAction.class");
+    addEntry(zipOutputStream, "processdefinition.xml",
+      "org/jbpm/jpdl/par/instantiateprocess.xml");
+    addEntry(zipOutputStream, "classes/org/jbpm/jpdl/par/InstantiateAction.class",
+      "org/jbpm/jpdl/par/InstantiateAction.class");
     zipOutputStream.close();
     byte[] zipBytes = baos.toByteArray();
 
     // move the files
     String instantiateActionOriginalName = getTestClassesDir()
-        + "org/jbpm/jpdl/par/InstantiateAction.class";
-    String instantiateActionTmpName = instantiateActionOriginalName + ".hiddenFromTestClasspath";
-    assertTrue(new File(instantiateActionOriginalName).renameTo(new File(instantiateActionTmpName)));
+      + "org/jbpm/jpdl/par/InstantiateAction.class";
+    String instantiateActionTmpName = instantiateActionOriginalName
+      + ".hiddenFromTestClasspath";
+    assertTrue(new File(instantiateActionOriginalName).renameTo(new File(
+      instantiateActionTmpName)));
 
     try {
       ClassLoader testClassLoader = ProcessArchiveClassLoadingDbTest.class.getClassLoader();
@@ -196,17 +193,10 @@
       // deploy the process archive
       ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
       ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
-      jbpmContext.deployProcessDefinition(processDefinition);
+      deployProcessDefinition(processDefinition);
 
-      newTransaction();
-      try {
-        ProcessInstance processInstance = jbpmContext.newProcessInstance("instantiateprocess");
-        processInstance.signal();
-        jbpmContext.save(processInstance);
-      }
-      finally {
-        jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-      }
+      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("instantiateprocess");
+      processInstance.signal();
     }
     finally {
       // put the files back into original position
@@ -214,8 +204,8 @@
     }
   }
 
-  private static void addEntry(ZipOutputStream zipOutputStream, String entryName, String resource)
-      throws IOException {
+  private static void addEntry(ZipOutputStream zipOutputStream, String entryName,
+    String resource) throws IOException {
     InputStream inputStream = ClassLoaderUtil.getStream(resource);
     byte[] bytes = IoUtil.readBytes(inputStream);
     addEntry(zipOutputStream, entryName, bytes);
@@ -223,7 +213,7 @@
   }
 
   private static void addEntry(ZipOutputStream zipOutputStream, String entryName, byte[] content)
-      throws IOException {
+    throws IOException {
     ZipEntry zipEntry = new ZipEntry(entryName);
     zipOutputStream.putNextEntry(zipEntry);
     zipOutputStream.write(content);

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,124 +36,91 @@
 import org.jbpm.util.ClassLoaderUtil;
 import org.jbpm.util.IoUtil;
 
-public class ProcessArchiveDeploymentDbTest extends AbstractDbTestCase
-{
+public class ProcessArchiveDeploymentDbTest extends AbstractDbTestCase {
 
-  String getTestClassesDir()
-  {
-    return ProcessArchiveDeploymentDbTest.class.getProtectionDomain().getCodeSource().getLocation().getFile();
-  }
-
-  public void testDeployProcess() throws Exception
-  {
+  public void testDeployProcess() throws Exception {
     // 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, "processdefinition.xml",
+      "org/jbpm/jpdl/par/deployableprocess.xml");
     zipOutputStream.close();
     byte[] zipBytes = baos.toByteArray();
 
     // deploy the process archive
     ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
     ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
-    jbpmContext.deployProcessDefinition(processDefinition);
-    
-    try
-    {
-      newTransaction();
+    deployProcessDefinition(processDefinition);
 
-      List allProcessDefinitions = graphSession.findAllProcessDefinitionVersions(processDefinition.getName()); 
-      assertEquals(1, allProcessDefinitions.size());
-      
-      processDefinition = (ProcessDefinition)allProcessDefinitions.get(0);
-      assertEquals("the deployable process", processDefinition.getName());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    List allProcessDefinitions = graphSession.findAllProcessDefinitionVersions(processDefinition.getName());
+    assertEquals(1, allProcessDefinitions.size());
+
+    processDefinition = (ProcessDefinition) allProcessDefinitions.get(0);
+    assertEquals("the deployable process", processDefinition.getName());
   }
 
-  public void testDeployProcessWithFile() throws Exception
-  {
+  public void testDeployProcessWithFile() throws Exception {
     // 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");
+    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();
 
     ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
     ProcessDefinition processDefinition = ProcessDefinition.parseParZipInputStream(zipInputStream);
-    jbpmContext.deployProcessDefinition(processDefinition);
-    
-    try
-    {
-      newTransaction();
+    deployProcessDefinition(processDefinition);
 
-      List allProcessDefinitions = graphSession.findAllProcessDefinitionVersions(processDefinition.getName());
-      assertEquals(1, allProcessDefinitions.size());
-      processDefinition = (ProcessDefinition)allProcessDefinitions.get(0);
-      byte[] processBytes = processDefinition.getFileDefinition().getBytes("classes/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.class");
-      byte[] expectedBytes = IoUtil.readBytes(ClassLoaderUtil.getStream("org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.class"));
+    List allProcessDefinitions = graphSession.findAllProcessDefinitionVersions(processDefinition.getName());
+    assertEquals(1, allProcessDefinitions.size());
+    processDefinition = (ProcessDefinition) allProcessDefinitions.get(0);
+    byte[] processBytes = processDefinition.getFileDefinition().getBytes(
+      "classes/org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.class");
+    byte[] expectedBytes = IoUtil.readBytes(ClassLoaderUtil.getStream("org/jbpm/jpdl/par/ProcessArchiveDeploymentDbTest.class"));
 
-      assertTrue(Arrays.equals(expectedBytes, processBytes));
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertTrue(Arrays.equals(expectedBytes, processBytes));
   }
 
-  public void testDeployTwoVersionOfProcess() throws Exception
-  {
+  public void testDeployTwoVersionOfProcess() throws Exception {
     // 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, "processdefinition.xml",
+      "org/jbpm/jpdl/par/deployableprocess.xml");
     zipOutputStream.close();
     byte[] zipBytes = baos.toByteArray();
 
     // deploy the saved process archive
     ZipInputStream zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
     ProcessDefinition processDefinitionOne = ProcessDefinition.parseParZipInputStream(zipInputStream);
-    jbpmContext.deployProcessDefinition(processDefinitionOne);
+    deployProcessDefinition(processDefinitionOne);
 
-    newTransaction();
-
     // deploy the saved process file again
     zipInputStream = new ZipInputStream(new ByteArrayInputStream(zipBytes));
     ProcessDefinition processDefinitionTwo = ProcessDefinition.parseParZipInputStream(zipInputStream);
-    jbpmContext.deployProcessDefinition(processDefinitionTwo);
+    deployProcessDefinition(processDefinitionTwo);
 
     String processDefinitionName = processDefinitionTwo.getName();
     assertEquals(processDefinitionName, processDefinitionOne.getName());
 
-    newTransaction();
-
-    try
-    {
-      assertEquals(2, graphSession.findAllProcessDefinitionVersions(processDefinitionName).size());
-      assertEquals(2, graphSession.findLatestProcessDefinition(processDefinitionName).getVersion());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionOne.getId());
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinitionTwo.getId());
-    }
+    assertEquals(2, graphSession.findAllProcessDefinitionVersions(processDefinitionName).size());
+    assertEquals(2, graphSession.findLatestProcessDefinition(processDefinitionName)
+      .getVersion());
   }
 
-  private static void addEntry(ZipOutputStream zipOutputStream, String entryName, String resource) throws IOException
-  {
+  private static void addEntry(ZipOutputStream zipOutputStream, String entryName,
+    String resource) throws IOException {
     InputStream inputStream = ClassLoaderUtil.getStream(resource);
     byte[] bytes = IoUtil.readBytes(inputStream);
     addEntry(zipOutputStream, entryName, bytes);
     inputStream.close();
   }
 
-  private static void addEntry(ZipOutputStream zipOutputStream, String entryName, byte[] content) throws IOException
-  {
+  private static void addEntry(ZipOutputStream zipOutputStream, String entryName, byte[] content)
+    throws IOException {
     ZipEntry zipEntry = new ZipEntry(entryName);
     zipOutputStream.putNextEntry(zipEntry);
     zipOutputStream.write(content);

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ResourceAction.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ResourceAction.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/par/ResourceAction.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -26,7 +26,7 @@
 import java.io.InputStreamReader;
 import java.net.URL;
 
-import junit.framework.TestCase;
+import junit.framework.Assert;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -40,16 +40,16 @@
   static Log log = LogFactory.getLog(ProcessArchiveClassLoadingDbTest.class);
 
   public void execute(ExecutionContext executionContext) throws Exception {
-    TestCase.assertEquals("org.jbpm.jpdl.par", getClass().getPackage().getName());
+    Assert.assertEquals("org.jbpm.jpdl.par", getClass().getPackage().getName());
 
     URL resource = getClass().getResource("classresource.txt");
     InputStream stream = resource.openStream();
     String classResourceUrl = read(stream);
-    TestCase.assertEquals("the class resource content", classResourceUrl);
+    Assert.assertEquals("the class resource content", classResourceUrl);
 
     stream = getClass().getResourceAsStream("classresource.txt");
     String classResourceStream = read(stream);
-    TestCase.assertEquals("the class resource content", classResourceStream);
+    Assert.assertEquals("the class resource content", classResourceStream);
 
     ClassLoader resourceActionClassLoader = ResourceAction.class.getClassLoader();
     log.info("resource action classloader: " + getClass().getClassLoader());
@@ -58,29 +58,29 @@
     resource = resourceActionClassLoader.getResource("org/jbpm/jpdl/par/classresource.txt");
     stream = resource.openStream();
     String classLoaderResourceUrl = read(stream);
-    TestCase.assertEquals("the class resource content", classLoaderResourceUrl);
+    Assert.assertEquals("the class resource content", classLoaderResourceUrl);
 
     stream = resourceActionClassLoader.getResourceAsStream("org/jbpm/jpdl/par/classresource.txt");
     String classLoaderResourceStream = read(stream);
-    TestCase.assertEquals("the class resource content", classLoaderResourceStream);
+    Assert.assertEquals("the class resource content", classLoaderResourceStream);
 
     resource = getClass().getResource("//archiveresource.txt");
     stream = resource.openStream();
     String archiveResourceUrl = read(stream);
-    TestCase.assertEquals("the archive resource content", archiveResourceUrl);
+    Assert.assertEquals("the archive resource content", archiveResourceUrl);
 
     stream = getClass().getResourceAsStream("//archiveresource.txt");
     String archiveResourceStream = read(stream);
-    TestCase.assertEquals("the archive resource content", archiveResourceStream);
+    Assert.assertEquals("the archive resource content", archiveResourceStream);
 
     resource = resourceActionClassLoader.getResource("//archiveresource.txt");
     stream = resource.openStream();
     String archiveClassLoaderResourceUrl = read(stream);
-    TestCase.assertEquals("the archive resource content", archiveClassLoaderResourceUrl);
+    Assert.assertEquals("the archive resource content", archiveClassLoaderResourceUrl);
 
     stream = resourceActionClassLoader.getResourceAsStream("//archiveresource.txt");
     String archiveClassLoaderResourceStream = read(stream);
-    TestCase.assertEquals("the archive resource content", archiveClassLoaderResourceStream);
+    Assert.assertEquals("the archive resource content", archiveClassLoaderResourceStream);
 
     ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
     log.info("resource action context classloader: " + contextClassLoader);
@@ -88,11 +88,11 @@
     resource = contextClassLoader.getResource("//archiveresource.txt");
     stream = resource.openStream();
     String contextClassLoaderResourceUrl = read(stream);
-    TestCase.assertEquals("the archive resource content", contextClassLoaderResourceUrl);
+    Assert.assertEquals("the archive resource content", contextClassLoaderResourceUrl);
 
     stream = contextClassLoader.getResourceAsStream("//archiveresource.txt");
     String contextClassLoaderResourceStream = read(stream);
-    TestCase.assertEquals("the archive resource content", contextClassLoaderResourceStream);
+    Assert.assertEquals("the archive resource content", contextClassLoaderResourceStream);
 
     try {
       getClass().getResourceAsStream("unexistingresource.txt");

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/patterns/Wfp13MiWithoutSynchronizationTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/patterns/Wfp13MiWithoutSynchronizationTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/patterns/Wfp13MiWithoutSynchronizationTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -41,7 +41,7 @@
   private ProcessDefinition pd = null;
   private ProcessInstance pi = null;
 
-  private static int scenario = 0;
+  static int scenario = 0;
 
   public static class CreateTasks implements ActionHandler {
     private static final long serialVersionUID = 1L;

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/patterns/Wfp18InterleavedParallelRoutingTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/patterns/Wfp18InterleavedParallelRoutingTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/jpdl/patterns/Wfp18InterleavedParallelRoutingTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -35,7 +35,7 @@
  */
 public class Wfp18InterleavedParallelRoutingTest extends AbstractJbpmTestCase {
   
-  private int scenario = -1;
+  int scenario = -1;
   private ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
     "<process-definition>" +
     "  <start-state name='a'>" +
@@ -69,7 +69,7 @@
   private State d = (State) processDefinition.getNode("d");
   private State e = (State) processDefinition.getNode("e");
   
-  private static String[][] scenarioSequences = new String[][] {
+  static String[][] scenarioSequences = new String[][] {
     new String[] {"b", "c", "d"},
     new String[] {"b", "d", "c"},
     new String[] {"c", "b", "d"},

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/logging/exe/LoggingConfigDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/logging/exe/LoggingConfigDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/logging/exe/LoggingConfigDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -2,7 +2,6 @@
 
 import java.util.List;
 
-
 import org.jbpm.JbpmConfiguration;
 import org.jbpm.db.AbstractDbTestCase;
 import org.jbpm.graph.def.ProcessDefinition;
@@ -25,14 +24,13 @@
 
   public void testLoggingconfiguration() {
     ProcessDefinition processDefinition = new ProcessDefinition("logging");
-    jbpmContext.deployProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
+
     ProcessInstance processInstance = jbpmContext.newProcessInstance("logging");
     processInstance.getContextInstance().setVariable("a", "1");
 
     newTransaction();
     List logs = session.createCriteria(ProcessLog.class).list();
     assertEquals(0, logs.size());
-
-    graphSession.deleteProcessDefinition(processDefinition.getId());
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mail/MailTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mail/MailTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mail/MailTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -19,7 +19,7 @@
 
 public class MailTest extends AbstractDbTestCase {
 
-  private static SimpleSmtpServer server;
+  static SimpleSmtpServer server;
 
   private static final String XML_DECL = "<?xml version='1.0'?>";
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mail/TaskMailTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mail/TaskMailTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mail/TaskMailTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -28,79 +28,66 @@
 import com.dumbster.smtp.SimpleSmtpServer;
 import com.dumbster.smtp.SmtpMessage;
 
-public class TaskMailTest extends AbstractJbpmTestCase 
-{
+public class TaskMailTest extends AbstractJbpmTestCase {
   private static final int SMTP_PORT = 23583;
 
-  static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseXmlString(
-    "<jbpm-configuration>" +
-    "  <jbpm-context>" +
-    "    <service name='scheduler' factory='org.jbpm.mail.TaskMailTest$TestSchedulerService' />" +
-    "  </jbpm-context>" +
-    "  <string name='resource.mail.properties' value='org/jbpm/mail/test.mail.properties' />" +
-    "  <bean name='jbpm.mail.address.resolver' class='org.jbpm.mail.MailTest$TestAddressResolver' singleton='true' />" +
-    "</jbpm-configuration>"
-  );
+  static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.parseXmlString("<jbpm-configuration>"
+    + "  <jbpm-context>"
+    + "    <service name='scheduler' factory='org.jbpm.mail.TaskMailTest$TestSchedulerService' />"
+    + "  </jbpm-context>"
+    + "  <string name='resource.mail.properties' value='org/jbpm/mail/test.mail.properties' />"
+    + "  <bean name='jbpm.mail.address.resolver' class='org.jbpm.mail.MailTest$TestAddressResolver' singleton='true' />"
+    + "</jbpm-configuration>");
 
-  private static SimpleSmtpServer server;
+  static SimpleSmtpServer server;
   private JbpmContext jbpmContext;
 
-  public static Test suite()
-  {
-    return new TestSetup(new TestSuite(TaskMailTest.class))
-    {
-      protected void setUp() throws Exception
-      {
+  public static Test suite() {
+    return new TestSetup(new TestSuite(TaskMailTest.class)) {
+      protected void setUp() throws Exception {
         server = MailTest.startSmtpServer(SMTP_PORT);
       }
 
-      protected void tearDown() throws Exception
-      {
+      protected void tearDown() throws Exception {
         server.stop();
       }
     };
   }
-  
-  protected void setUp() throws Exception
-  {
+
+  protected void setUp() throws Exception {
     super.setUp();
     TestSchedulerService testSchedulerService = (TestSchedulerService) jbpmConfiguration.getServiceFactory("scheduler");
     testSchedulerService.reset();
     jbpmContext = jbpmConfiguration.createJbpmContext();
   }
 
-  protected void tearDown() throws Exception
-  {
+  protected void tearDown() throws Exception {
     jbpmContext.close();
     super.tearDown();
   }
 
-  public static class RoundRobinAssigner implements AssignmentHandler
-  {
+  public static class RoundRobinAssigner implements AssignmentHandler {
     private static final long serialVersionUID = 1L;
 
-    public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception
-    {
+    public void assign(Assignable assignable, ExecutionContext executionContext)
+      throws Exception {
       assignable.setActorId("you");
     }
   }
 
-  public void testTaskInstanceNotification() 
-  {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='laundry' notify='yes'>" +
-      "      <assignment class='org.jbpm.mail.TaskMailTest$RoundRobinAssigner' />" +
-      "    </task>" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <state name='b' />" +
-      "</process-definition>"
-    );
+  public void testTaskInstanceNotification() {
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='laundry' notify='yes'>"
+      + "      <assignment class='org.jbpm.mail.TaskMailTest$RoundRobinAssigner' />"
+      + "    </task>"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <state name='b' />"
+      + "</process-definition>");
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
 
@@ -108,143 +95,138 @@
     Iterator emailIter = server.getReceivedEmail();
     SmtpMessage email = (SmtpMessage) emailIter.next();
     emailIter.remove();
-    
+
     assertEquals("you at example.domain", email.getHeaderValue("To"));
     assertEquals("Task 'laundry'", email.getHeaderValue("Subject"));
-    assertEquals(-1, email.getBody().indexOf("#{"));  // just to make sure that all expressions were resolved
-    assertTrue(-1!=email.getBody().indexOf("http://localhost:8080/jbpm/home?taskId=0")); 
+    assertEquals(-1, email.getBody().indexOf("#{")); // just to make sure that
+                                                     // all expressions were
+                                                     // resolved
+    assertTrue(-1 != email.getBody().indexOf("http://localhost:8080/jbpm/home?taskId=0"));
   }
-  
-  public static class TestSchedulerService implements SchedulerService, ServiceFactory
-  {
+
+  public static class TestSchedulerService implements SchedulerService, ServiceFactory {
     private static final long serialVersionUID = 1L;
     List createdTimers = null;
     List cancelledTimers = null;
 
-    public TestSchedulerService()
-    {
+    public TestSchedulerService() {
       reset();
     }
 
-    public void reset()
-    {
+    public void reset() {
       createdTimers = new ArrayList();
       cancelledTimers = new ArrayList();
     }
 
-    public void createTimer(Timer timer)
-    {
+    public void createTimer(Timer timer) {
       createdTimers.add(timer);
     }
 
-    public void deleteTimer(Timer timer)
-    {
+    public void deleteTimer(Timer timer) {
       cancelledTimers.add(timer.getName());
     }
 
-    public void deleteTimersByName(String timerName, Token token)
-    {
+    public void deleteTimersByName(String timerName, Token token) {
       cancelledTimers.add(timerName);
     }
 
-    public void deleteTimersByProcessInstance(ProcessInstance processInstance)
-    {
+    public void deleteTimersByProcessInstance(ProcessInstance processInstance) {
     }
 
-    public Service openService()
-    {
+    public Service openService() {
       return this;
     }
 
-    public void close()
-    {
+    public void close() {
     }
   }
 
-  public void testTaskInstanceReminder() throws Exception 
-  {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='laundry'>" +
-      "      <assignment class='org.jbpm.mail.TaskMailTest$RoundRobinAssigner' />" +
-      "      <reminder duedate='0 seconds' repeat='60 seconds' />" +
-      "    </task>" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <state name='b' />" +
-      "</process-definition>"
-    );
+  public void testTaskInstanceReminder() throws Exception {
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='laundry'>"
+      + "      <assignment class='org.jbpm.mail.TaskMailTest$RoundRobinAssigner' />"
+      + "      <reminder duedate='0 seconds' repeat='60 seconds' />"
+      + "    </task>"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <state name='b' />"
+      + "</process-definition>");
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
 
     assertTrue(server.getReceivedEmailSize() == 0);
 
-    TestSchedulerService testSchedulerService = (TestSchedulerService) jbpmContext.getServices().getService("scheduler");
+    TestSchedulerService testSchedulerService = (TestSchedulerService) jbpmContext.getServices()
+      .getService("scheduler");
     assertEquals(1, testSchedulerService.createdTimers.size());
     Timer createdTimer = (Timer) testSchedulerService.createdTimers.get(0);
     Delegation delegation = createdTimer.getAction().getActionDelegation();
     assertEquals("org.jbpm.mail.Mail", delegation.getClassName());
     assertEquals("<template>task-reminder</template>", delegation.getConfiguration());
-    
+
     createdTimer.execute(jbpmContext);
 
     assertTrue(server.getReceivedEmailSize() == 1);
     Iterator emailIter = server.getReceivedEmail();
     SmtpMessage email = (SmtpMessage) emailIter.next();
     emailIter.remove();
-    
+
     assertEquals("you at example.domain", email.getHeaderValue("To"));
     assertEquals("Task 'laundry' !", email.getHeaderValue("Subject"));
-    assertEquals(-1, email.getBody().indexOf("#{"));  // just to make sure that all expressions were resolved
-    assertTrue(-1!=email.getBody().indexOf("http://localhost:8080/jbpm/home?taskId=0"));
-    
+    assertEquals(-1, email.getBody().indexOf("#{")); // just to make sure that
+                                                     // all expressions were
+                                                     // resolved
+    assertTrue(-1 != email.getBody().indexOf("http://localhost:8080/jbpm/home?taskId=0"));
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance taskInstance = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance taskInstance = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     assertEquals(0, testSchedulerService.cancelledTimers.size());
     taskInstance.end();
     assertEquals(1, testSchedulerService.cancelledTimers.size());
   }
-  
-  public static class GhostAssigner implements AssignmentHandler
-  {
+
+  public static class GhostAssigner implements AssignmentHandler {
     private static final long serialVersionUID = 1L;
 
-    public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception
-    {
+    public void assign(Assignable assignable, ExecutionContext executionContext)
+      throws Exception {
       assignable.setActorId("ghost");
     }
   }
 
   public void testUnexistingUser() throws Exception {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='laundry' notify='true'>" +
-      "      <assignment class='org.jbpm.mail.TaskMailTest$GhostAssigner' />" +
-      "    </task>" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <state name='b' />" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='laundry' notify='true'>"
+      + "      <assignment class='org.jbpm.mail.TaskMailTest$GhostAssigner' />"
+      + "    </task>"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <state name='b' />"
+      + "</process-definition>");
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
 
     assertEquals(0, server.getReceivedEmailSize());
 
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance taskInstance = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-    
-    // ghost will get null as an email address in the org.jbpm.mail.MailTest$TestAddressResolver
+    TaskInstance taskInstance = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+
+    // ghost will get null as an email address in the
+    // org.jbpm.mail.MailTest$TestAddressResolver
     assertEquals("ghost", taskInstance.getActorId());
-    
+
     taskInstance.end();
     assertEquals(0, server.getReceivedEmailSize());
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mock/Jdbc.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mock/Jdbc.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/mock/Jdbc.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -42,7 +42,7 @@
     }
   }
   
-  private static Class[] recordedConnectionInterfaces = new Class[]{Connection.class, Recorded.class};
+  static Class[] recordedConnectionInterfaces = new Class[]{Connection.class, Recorded.class};
   public static class MockDataSource extends jdbcDataSource {
     private static final long serialVersionUID = 1L;
     public MockDataSource() {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/msg/command/AsyncExecutionDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -45,56 +45,50 @@
   }
 
   public void testAsyncExecution() throws Exception {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='async exec'>" +
-        "  <start-state>" +
-        "    <transition to='one' />" +
-        "  </start-state>" +
-        "  <node async='true' name='one'>" +
-        "    <action class='" +
-        RecordNode.class.getName() +
-        "' />" +
-        "    <transition to='two' />" +
-        "  </node>" +
-        "  <node async='exclusive' name='two'>" +
-        "    <action class='" +
-        RecordNode.class.getName() +
-        "' />" +
-        "    <transition to='three' />" +
-        "  </node>" +
-        "  <node async='true' name='three'>" +
-        "    <action class='" +
-        RecordNode.class.getName() +
-        "' />" +
-        "    <transition to='end' />" +
-        "  </node>" +
-        "  <end-state name='end' />" +
-        "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='async exec'>"
+      + "  <start-state>"
+      + "    <transition to='one' />"
+      + "  </start-state>"
+      + "  <node async='true' name='one'>"
+      + "    <action class='"
+      + RecordNode.class.getName()
+      + "' />"
+      + "    <transition to='two' />"
+      + "  </node>"
+      + "  <node async='exclusive' name='two'>"
+      + "    <action class='"
+      + RecordNode.class.getName()
+      + "' />"
+      + "    <transition to='three' />"
+      + "  </node>"
+      + "  <node async='true' name='three'>"
+      + "    <action class='"
+      + RecordNode.class.getName()
+      + "' />"
+      + "    <transition to='end' />"
+      + "  </node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
-      jbpmContext.save(processInstance);
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
+    jbpmContext.save(processInstance);
 
-      assertEquals("one", processInstance.getRootToken().getNode().getName());
-      assertEquals(1, getNbrOfJobsAvailable());
+    assertEquals("one", processInstance.getRootToken().getNode().getName());
+    assertEquals(1, getNbrOfJobsAvailable());
 
-      processJobs(TIMEOUT);
+    processJobs(TIMEOUT);
 
-      processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
-      assertTrue(processInstance.hasEnded());
+    processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
+    assertTrue(processInstance.hasEnded());
 
-      ContextInstance contextInstance = processInstance.getContextInstance();
-      String[] nodes = { "one", "two", "three" };
-      for (int i = 0; i < nodes.length; i++) {
-        Integer value = (Integer) contextInstance.getVariable(nodes[i]);
-        assertEquals(i + 1, value.intValue());
-      }
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    String[] nodes = { "one", "two", "three" };
+    for (int i = 0; i < nodes.length; i++) {
+      Integer value = (Integer) contextInstance.getVariable(nodes[i]);
+      assertEquals(i + 1, value.intValue());
     }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
   }
 
   public static class RecordAction implements ActionHandler {
@@ -107,60 +101,54 @@
 
   public void testAsyncAction() throws Exception {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='async action'>"
-        + "  <event type='process-start'>"
-        + "    <action name='sa' async='true' class='" +
-        RecordAction.class.getName() +
-        "'/>" +
-        "    <action name='se' async='exclusive' class='" +
-        RecordAction.class.getName() +
-        "'/>" +
-        "  </event>" +
-        "  <start-state>" +
-        "    <transition to='one'>" +
-        "      <action name='ta' async='true' class='" +
-        RecordAction.class.getName() +
-        "'/>" +
-        "      <action name='te' async='exclusive' class='" +
-        RecordAction.class.getName() +
-        "'/>" +
-        "    </transition>" +
-        "  </start-state>" +
-        "  <node name='one'>" +
-        "    <event type='node-enter'>" +
-        "      <action name='na' async='true' class='" +
-        RecordAction.class.getName() +
-        "'/>" +
-        "      <action name='ne' async='exclusive' class='" +
-        RecordAction.class.getName() +
-        "'/>" +
-        "    </event>" +
-        "    <transition to='end' />" +
-        "  </node>" +
-        "  <end-state name='end' />" +
-        "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <event type='process-start'>"
+      + "    <action name='sa' async='true' class='"
+      + RecordAction.class.getName()
+      + "'/>"
+      + "    <action name='se' async='exclusive' class='"
+      + RecordAction.class.getName()
+      + "'/>"
+      + "  </event>"
+      + "  <start-state>"
+      + "    <transition to='one'>"
+      + "      <action name='ta' async='true' class='"
+      + RecordAction.class.getName()
+      + "'/>"
+      + "      <action name='te' async='exclusive' class='"
+      + RecordAction.class.getName()
+      + "'/>"
+      + "    </transition>"
+      + "  </start-state>"
+      + "  <node name='one'>"
+      + "    <event type='node-enter'>"
+      + "      <action name='na' async='true' class='"
+      + RecordAction.class.getName()
+      + "'/>"
+      + "      <action name='ne' async='exclusive' class='"
+      + RecordAction.class.getName()
+      + "'/>"
+      + "    </event>"
+      + "    <transition to='end' />"
+      + "  </node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
-      jbpmContext.save(processInstance);
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
+    jbpmContext.save(processInstance);
 
-      assertEquals("end", processInstance.getRootToken().getNode().getName());
-      assertEquals(6, getNbrOfJobsAvailable());
+    assertEquals("end", processInstance.getRootToken().getNode().getName());
+    assertEquals(6, getNbrOfJobsAvailable());
 
-      processJobs(TIMEOUT);
+    processJobs(TIMEOUT);
 
-      processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
+    processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
 
-      ContextInstance contextInstance = processInstance.getContextInstance();
-      String[] actions = { "sa", "se", "ta", "te", "na", "ne" };
-      for (int i = 0; i < actions.length; i++) {
-        assertEquals(Boolean.TRUE, contextInstance.getVariable(actions[i]));
-      }
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    String[] actions = { "sa", "se", "ta", "te", "na", "ne" };
+    for (int i = 0; i < actions.length; i++) {
+      assertEquals(Boolean.TRUE, contextInstance.getVariable(actions[i]));
     }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/perf/SimplePerformanceTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/perf/SimplePerformanceTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/perf/SimplePerformanceTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -28,12 +28,13 @@
 import org.jbpm.graph.exe.ProcessInstance;
 
 /**
- * This test creates a number of process instances. Every instance has a call to an ActionHandler.
+ * This test creates a number of process instances. Every instance has a call to
+ * an ActionHandler.
  * 
  * @see <a href="https://jira.jboss.org/jira/browse/JBPM-2043">JBPM-2043</a>
  * @author mvecera at redhat.com
  * @author pmacik at redhat.com
- * @author aguizar at redhat.com
+ * @author Alejandro Guizar
  * @since 18-Feb-2009
  */
 public class SimplePerformanceTest extends AbstractDbTestCase {
@@ -42,25 +43,21 @@
   private static final int MEASURED_INSTANCES = 1000;
   private static final long TIMEOUT = 2 * 60 * 1000;
 
-  private ProcessDefinition processDefinition;
-
   protected void setUp() throws Exception {
     super.setUp();
 
-    processDefinition = ProcessDefinition.parseXmlString("<process-definition name='perf'>"
-        + "  <start-state name='start'>"
-        + "    <transition to='end'/>"
-        + "  </start-state>"
-        + "  <end-state async='true' name='end'/>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='jbpm2043'>"
+      + "  <start-state name='start'>"
+      + "    <transition to='midway'/>"
+      + "  </start-state>"
+      + "  <node name='midway' async='true'>"
+      + "    <transition to='end'/>"
+      + "  </node>"
+      + "  <end-state name='end'/>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
   }
 
-  protected void tearDown() throws Exception {
-    jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    super.tearDown();
-  }
-
   public void testAsyncCall() {
     long firstTime = System.currentTimeMillis();
     launchProcessInstances(WARMUP_INSTANCES);
@@ -73,17 +70,15 @@
     long duration = System.currentTimeMillis() - secondTime;
     NumberFormat format = NumberFormat.getNumberInstance();
     format.setMaximumFractionDigits(1);
-    System.out.println("==> Processed " +
-        format.format(1000D * MEASURED_INSTANCES / duration) +
-        " instances per second <==");
+    System.out.println("==> Processed "
+      + format.format(1000D * MEASURED_INSTANCES / duration)
+      + " instances per second <==");
   }
 
   private void launchProcessInstances(int count) {
     for (int i = 0; i < count; i++) {
-      newTransaction();
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
+      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("jbpm2043");
       processInstance.signal();
-      jbpmContext.save(processInstance);
     }
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/persistence/db/PersistenceConfigurationDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/persistence/db/PersistenceConfigurationDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/persistence/db/PersistenceConfigurationDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -44,7 +44,7 @@
     
     DbPersistenceServiceFactory dbPersistenceServiceFactory = (DbPersistenceServiceFactory) jbpmConfiguration.getServiceFactory("persistence");
     assertFalse(dbPersistenceServiceFactory.isTransactionEnabled());
-    JbpmContext jbpmContext = (JbpmContext) jbpmConfiguration.createJbpmContext();
+    JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
     try {
       DbPersistenceService dbPersistenceService = (DbPersistenceService) jbpmContext.getServices().getPersistenceService();
       assertFalse(dbPersistenceService.isTransactionEnabled());
@@ -66,7 +66,7 @@
     );
     
     DbPersistenceServiceFactory dbPersistenceServiceFactory = (DbPersistenceServiceFactory) jbpmConfiguration.getServiceFactory("persistence");
-    JbpmContext jbpmContext = (JbpmContext) jbpmConfiguration.createJbpmContext();
+    JbpmContext jbpmContext = jbpmConfiguration.createJbpmContext();
     try {
       DbPersistenceService dbPersistenceService = (DbPersistenceService) jbpmContext.getServices().getPersistenceService();
       assertEquals(0, dbPersistenceService.getSessionFactory().getAllClassMetadata().size());

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scenarios/AsyncTimerAndSubProcessDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -14,7 +14,6 @@
 public class AsyncTimerAndSubProcessDbTest extends AbstractDbTestCase {
 
   public static class TimedDecisionHandler implements DecisionHandler {
-
     private static final long serialVersionUID = 1L;
 
     public String decide(ExecutionContext executionContext) throws Exception {
@@ -24,96 +23,88 @@
 
   public void testTimerInCombinationWithAsyncNode() throws Throwable {
     ProcessDefinition subDefinition = ProcessDefinition.parseXmlString("<process-definition name='sub'>"
-        + "  <start-state name='start'>"
-        + "    <transition to='decision'/>"
-        + "  </start-state>"
-        + "  <decision name='decision'>"
-        + "    <handler class='"
-        + TimedDecisionHandler.class.getName()
-        + "' />"
-        + "    <transition name='default' to='task' />"
-        + "  </decision>"
-        + "  <task-node name='task'>"
-        + "    <task name='do stuff'>"
-        + "      <controller>"
-        + "        <variable name='a' access='read' />"
-        + "      </controller>"
-        + "      <assignment actor-id='victim' />"
-        + "    </task>"
-        + "    <transition to='end'/>"
-        + "  </task-node>"
-        + "  <end-state name='end' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(subDefinition);
+      + "  <start-state name='start'>"
+      + "    <transition to='decision'/>"
+      + "  </start-state>"
+      + "  <decision name='decision'>"
+      + "    <handler class='"
+      + TimedDecisionHandler.class.getName()
+      + "' />"
+      + "    <transition name='default' to='task' />"
+      + "  </decision>"
+      + "  <task-node name='task'>"
+      + "    <task name='do stuff'>"
+      + "      <controller>"
+      + "        <variable name='a' access='read' />"
+      + "      </controller>"
+      + "      <assignment actor-id='victim' />"
+      + "    </task>"
+      + "    <transition to='end'/>"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(subDefinition);
 
-    newTransaction();
     ProcessDefinition superDefinition = ProcessDefinition.parseXmlString("<process-definition name='super'>"
-        + "  <start-state name='start'>"
-        + "    <transition to='decision'/>"
-        + "  </start-state>"
-        + "  <decision name='decision'>"
-        + "    <handler class='"
-        + TimedDecisionHandler.class.getName()
-        + "' />"
-        + "    <transition name='default' to='timed' />"
-        + "  </decision>"
-        + "  <state name='timed'>"
-        + "    <timer name='reminder' "
-        + "           duedate='0 seconds' "
-        + "           transition='timer fires' />"
-        + "    <transition name='timer fires' to='async'/>"
-        + "    <transition name='normal continuation' to='end'/>"
-        + "  </state>"
-        + "  <node name='async' async='true'>"
-        + "    <transition to='subprocess'/>"
-        + "  </node>"
-        + "  <process-state name='subprocess'>"
-        + "    <sub-process name='sub' />"
-        + "    <variable name='a'/>"
-        + "    <variable name='b'/>"
-        + "    <transition to='decision' />"
-        + "  </process-state>"
-        + "  <end-state name='end' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(superDefinition);
+      + "  <start-state name='start'>"
+      + "    <transition to='decision'/>"
+      + "  </start-state>"
+      + "  <decision name='decision'>"
+      + "    <handler class='"
+      + TimedDecisionHandler.class.getName()
+      + "' />"
+      + "    <transition name='default' to='timed' />"
+      + "  </decision>"
+      + "  <state name='timed'>"
+      + "    <timer name='reminder' "
+      + "           duedate='0 seconds' "
+      + "           transition='timer fires' />"
+      + "    <transition name='timer fires' to='async'/>"
+      + "    <transition name='normal continuation' to='end'/>"
+      + "  </state>"
+      + "  <node name='async' async='true'>"
+      + "    <transition to='subprocess'/>"
+      + "  </node>"
+      + "  <process-state name='subprocess'>"
+      + "    <sub-process name='sub' />"
+      + "    <variable name='a'/>"
+      + "    <variable name='b'/>"
+      + "    <transition to='decision' />"
+      + "  </process-state>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(superDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance superInstance = jbpmContext.newProcessInstanceForUpdate("super");
-      ContextInstance superContext = superInstance.getContextInstance();
-      superContext.setVariable("a", "value a");
-      superContext.setVariable("b", "value b");
-      superInstance.signal();
+    ProcessInstance superInstance = jbpmContext.newProcessInstanceForUpdate("super");
+    ContextInstance superContext = superInstance.getContextInstance();
+    superContext.setVariable("a", "value a");
+    superContext.setVariable("b", "value b");
+    superInstance.signal();
 
-      processJobs(60 * 1000);
+    processJobs(60 * 1000);
 
-      superInstance = jbpmContext.loadProcessInstance(superInstance.getId());
-      assertEquals("subprocess", superInstance.getRootToken().getNode().getName());
+    superInstance = jbpmContext.loadProcessInstance(superInstance.getId());
+    assertEquals("subprocess", superInstance.getRootToken().getNode().getName());
 
-      List taskInstances = jbpmContext.getTaskList("victim");
-      assertEquals(1, taskInstances.size());
-      TaskInstance taskInstance = (TaskInstance) taskInstances.get(0);
-      taskInstance.setVariable("a", "value a updated");
-      taskInstance.setVariable("b", "value b updated");
-      taskInstance.end();
+    List taskInstances = jbpmContext.getTaskList("victim");
+    assertEquals(1, taskInstances.size());
+    TaskInstance taskInstance = (TaskInstance) taskInstances.get(0);
+    taskInstance.setVariable("a", "value a updated");
+    taskInstance.setVariable("b", "value b updated");
+    taskInstance.end();
 
-      jbpmContext.save(taskInstance);
-      long taskInstanceId = taskInstance.getId();
-      long tokenId = taskInstance.getToken().getId();
+    jbpmContext.save(taskInstance);
+    long taskInstanceId = taskInstance.getId();
+    long tokenId = taskInstance.getToken().getId();
 
-      newTransaction();
-      taskInstance = jbpmContext.loadTaskInstance(taskInstanceId);
-      assertEquals("value a updated", taskInstance.getVariable("a"));
-      assertEquals("value b updated", taskInstance.getVariable("b"));
+    newTransaction();
+    taskInstance = jbpmContext.loadTaskInstance(taskInstanceId);
+    assertEquals("value a updated", taskInstance.getVariable("a"));
+    assertEquals("value b updated", taskInstance.getVariable("b"));
 
-      Token token = jbpmContext.loadToken(tokenId);
-      ContextInstance subContextInstance = token.getProcessInstance().getContextInstance();
-      assertEquals("value a", subContextInstance.getVariable("a"));
-      assertEquals("value b updated", subContextInstance.getVariable("b"));
-    }
-    finally {
-      graphSession.deleteProcessDefinition(superDefinition.getId());
-      graphSession.deleteProcessDefinition(subDefinition.getId());
-    }
+    Token token = jbpmContext.loadToken(tokenId);
+    ContextInstance subContextInstance = token.getProcessInstance().getContextInstance();
+    assertEquals("value a", subContextInstance.getVariable("a"));
+    assertEquals("value b updated", subContextInstance.getVariable("b"));
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scenarios/TwoSubProcessesInOneTransactionDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scenarios/TwoSubProcessesInOneTransactionDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scenarios/TwoSubProcessesInOneTransactionDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -10,74 +10,53 @@
 public class TwoSubProcessesInOneTransactionDbTest extends AbstractDbTestCase {
 
   public void testTwoSubProcessesInOneTransaction() throws Throwable {
-    ProcessDefinition subProcess = ProcessDefinition.parseXmlString(
-      "<process-definition name='sub'>" +
-      "  <start-state>" +
-      "    <transition to='end' />" +
-      "  </start-state>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(subProcess);
-    
-    ProcessDefinition superProcess = ProcessDefinition.parseXmlString(
-      "<process-definition name='super'>" +
-      "  <start-state>" +
-      "    <transition to='subprocess one' />" +
-      "  </start-state>" +
-      "  <process-state name='subprocess one'>" +
-      "    <sub-process name='sub' />" +
-      "    <transition to='subprocess two'/>" +
-      "  </process-state>" +
-      "  <process-state name='subprocess two'>" +
-      "    <sub-process name='sub' />" +
-      "    <transition to='wait'/>" +
-      "  </process-state>" +
-      "  <state name='wait' />" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(superProcess);
-    try
-    {
-      newTransaction();
-      
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("super");
-      processInstance.signal();
-      jbpmContext.save(processInstance);
-      
-      newTransaction();
-      
-      Query query = session.createQuery(
-        "select pi " +
-        "from org.jbpm.graph.exe.ProcessInstance pi " +
-        "where pi.processDefinition.name = 'super'"
-      );
-      List superInstances = query.list();
-      assertEquals(1, superInstances.size());
-      ProcessInstance superInstance = (ProcessInstance) superInstances.get(0);
-      assertEquals("wait", superInstance.getRootToken().getNode().getName());
+    ProcessDefinition subProcess = ProcessDefinition.parseXmlString("<process-definition name='sub'>"
+      + "  <start-state>"
+      + "    <transition to='end' />"
+      + "  </start-state>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(subProcess);
 
-      query = session.createQuery(
-        "select pi " +
-        "from org.jbpm.graph.exe.ProcessInstance pi " +
-        "where pi.processDefinition.name = 'sub'"
-      );
-      List subInstances = query.list();
-      assertEquals(2, subInstances.size());
-      
-      ProcessInstance subInstance = (ProcessInstance) subInstances.get(0);
-      assertTrue(subInstance.hasEnded());
-      assertEquals(superInstance.getRootToken(), subInstance.getSuperProcessToken());
-      
-      subInstance = (ProcessInstance) subInstances.get(1);
-      assertTrue(subInstance.hasEnded());
-      assertEquals(superInstance.getRootToken(), subInstance.getSuperProcessToken());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(superProcess.getId());
-      jbpmContext.getGraphSession().deleteProcessDefinition(subProcess.getId());
-    }
-    
+    ProcessDefinition superProcess = ProcessDefinition.parseXmlString("<process-definition name='super'>"
+      + "  <start-state>"
+      + "    <transition to='subprocess one' />"
+      + "  </start-state>"
+      + "  <process-state name='subprocess one'>"
+      + "    <sub-process name='sub' />"
+      + "    <transition to='subprocess two'/>"
+      + "  </process-state>"
+      + "  <process-state name='subprocess two'>"
+      + "    <sub-process name='sub' />"
+      + "    <transition to='wait'/>"
+      + "  </process-state>"
+      + "  <state name='wait' />"
+      + "</process-definition>");
+    deployProcessDefinition(superProcess);
+
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("super");
+    processInstance.signal();
+    jbpmContext.save(processInstance);
+
+    newTransaction();
+    Query query = session.createQuery("from org.jbpm.graph.exe.ProcessInstance pi "
+      + "where pi.processDefinition.name = 'super'");
+    List superInstances = query.list();
+    assertEquals(1, superInstances.size());
+    ProcessInstance superInstance = (ProcessInstance) superInstances.get(0);
+    assertEquals("wait", superInstance.getRootToken().getNode().getName());
+
+    query = session.createQuery("from org.jbpm.graph.exe.ProcessInstance pi "
+      + "where pi.processDefinition.name = 'sub'");
+    List subInstances = query.list();
+    assertEquals(2, subInstances.size());
+
+    ProcessInstance subInstance = (ProcessInstance) subInstances.get(0);
+    assertTrue(subInstance.hasEnded());
+    assertEquals(superInstance.getRootToken(), subInstance.getSuperProcessToken());
+
+    subInstance = (ProcessInstance) subInstances.get(1);
+    assertTrue(subInstance.hasEnded());
+    assertEquals(superInstance.getRootToken(), subInstance.getSuperProcessToken());
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/scheduler/exe/TimerDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -327,7 +327,7 @@
       timer.execute(jbpmContext);
 
       newTransaction();
-      timer = (Timer) jobSession.loadTimer(timer.getId());
+      timer = jobSession.loadTimer(timer.getId());
       assertEquals(dueDate.getTime() + 60 * 1000, timer.getDueDate().getTime());
 
       processInstance = jbpmContext.loadProcessInstance(processInstance.getId());

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/seam/JobExecutorCustomizationTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/seam/JobExecutorCustomizationTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/seam/JobExecutorCustomizationTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -20,28 +20,21 @@
     JobExecutor jobExecutor = getJbpmConfiguration().getJobExecutor();
     assertEquals(CustomJobExecutor.class, jobExecutor.getClass());
 
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-        "<process-definition name='custom job exec'>" +
-        "  <start-state name='start'>" +
-        "    <transition to='end'/>" +
-        "  </start-state>" +
-        "  <end-state name='end' async='true' />" +
-        "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='custom job exec'>"
+      + "  <start-state name='start'>"
+      + "    <transition to='end'/>"
+      + "  </start-state>"
+      + "  <end-state name='end' async='true' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("custom job exec");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("custom job exec");
+    processInstance.signal();
 
-      processJobs(60 * 1000);
-      
-      processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
-      assertEquals(Boolean.TRUE, processInstance.getContextInstance().getVariable("custom"));
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    processJobs(60 * 1000);
+
+    processInstance = jbpmContext.loadProcessInstance(processInstance.getId());
+    assertEquals(Boolean.TRUE, processInstance.getContextInstance().getVariable("custom"));
   }
 
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/svc/ServicesTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/svc/ServicesTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/svc/ServicesTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -152,6 +152,7 @@
       public JobSession getJobSession() {return null;}
       public ContextSession getContextSession() {return null;}
       public TaskMgmtSession getTaskMgmtSession() {return null;}
+      public Object getCustomSession(Class sessionClass) {return null;}
       public boolean isRollbackOnly() {return false;}
       public void setRollbackOnly(boolean isRollbackOnly) {}
       public void setRollbackOnly() {}

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/BlockingTaskDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/BlockingTaskDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/BlockingTaskDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -6,50 +6,40 @@
 
 public class BlockingTaskDbTest extends AbstractDbTestCase {
 
-  public void testBlockingTask() 
-  {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='blockingprocess'>" +
-      "  <start-state>" +
-      "    <transition to='approval' />" +
-      "  </start-state>" +
-      "  <task-node name='approval'>" +
-      "    <task name='approve' blocking='true' />" +
-      "    <transition name='approve' to='order'/>" +
-      "    <transition name='reject'  to='cancelled'/>" +
-      "  </task-node>" +
-      "  <state name='order' />" +
-      "  <state name='cancelled' />" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
+  public void testBlockingTask() {
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='blockingprocess'>"
+      + "  <start-state>"
+      + "    <transition to='approval' />"
+      + "  </start-state>"
+      + "  <task-node name='approval'>"
+      + "    <task name='approve' blocking='true' />"
+      + "    <transition name='approve' to='order'/>"
+      + "    <transition name='reject'  to='cancelled'/>"
+      + "  </task-node>"
+      + "  <state name='order' />"
+      + "  <state name='cancelled' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("blockingprocess");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("blockingprocess");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
+    assertEquals("approval", processInstance.getRootToken().getNode().getName());
 
-      assertEquals("approval", processInstance.getRootToken().getNode().getName());
-      TaskInstance taskInstance = (TaskInstance)processInstance.getTaskMgmtInstance().getTaskInstances().iterator().next();
+    TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator()
+      .next();
+    assertTrue(taskInstance.isBlocking());
 
-      assertTrue(taskInstance.isBlocking());
-
-      try
-      {
-        processInstance.signal();
-        fail("expected RuntimeException");
-      }
-      catch (RuntimeException e)
-      {
-        // OK
-      }
+    try {
+      processInstance.signal();
+      fail("expected RuntimeException");
     }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
+    catch (IllegalStateException e) {
+      assertTrue("expected " + e + " to be about blocking tasks", e.getMessage()
+        .indexOf("blocking tasks") != -1);
     }
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/EndTasksDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/EndTasksDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/EndTasksDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -35,30 +35,20 @@
       + "    <transition name='cancel'  to='cancelled'/>"
       + "  </task-node>"
       + "  <state name='process' />"
-      + "  <state name='cancelled' />" + "</process-definition>");
+      + "  <state name='cancelled' />"
+      + "</process-definition>");
 
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
+    deployProcessDefinition(processDefinition);
 
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstance("endtasksprocess");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstance("endtasksprocess");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
-      assertEquals("approval", processInstance.getRootToken()
-          .getNode()
-          .getName());
+    processInstance = saveAndReload(processInstance);
+    assertEquals("approval", processInstance.getRootToken().getNode().getName());
 
-      processInstance = saveAndReload(processInstance);
-      processInstance.signal("cancel");
-      assertEquals("cancelled", processInstance.getRootToken()
-          .getNode()
-          .getName());
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinition.getId());
-    }
+    processInstance = saveAndReload(processInstance);
+    processInstance.signal("cancel");
+    assertEquals("cancelled", processInstance.getRootToken().getNode().getName());
   }
 
   public void testApprove() {
@@ -77,31 +67,20 @@
       + "  <state name='process' />"
       + "  <state name='cancelled' />"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
+    deployProcessDefinition(processDefinition);
 
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("endtasksprocess");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("endtasksprocess");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
-      assertEquals("approval", processInstance.getRootToken()
-          .getNode()
-          .getName());
+    processInstance = saveAndReload(processInstance);
+    assertEquals("approval", processInstance.getRootToken().getNode().getName());
 
-      TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
-          .getTaskInstances()
-          .iterator()
-          .next();
-      taskInstance.end("approve");
-      assertEquals("process", processInstance.getRootToken()
-          .getNode()
-          .getName());
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinition.getId());
-    }
+    TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator()
+      .next();
+    taskInstance.end("approve");
+    assertEquals("process", processInstance.getRootToken().getNode().getName());
   }
 
   public void testReject() {
@@ -120,31 +99,20 @@
       + "  <state name='process' />"
       + "  <state name='cancelled' />"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
+    deployProcessDefinition(processDefinition);
 
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("endtasksprocess");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("endtasksprocess");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
-      assertEquals("approval", processInstance.getRootToken()
-          .getNode()
-          .getName());
+    processInstance = saveAndReload(processInstance);
+    assertEquals("approval", processInstance.getRootToken().getNode().getName());
 
-      TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
-          .getTaskInstances()
-          .iterator()
-          .next();
-      taskInstance.end("reject");
-      assertEquals("cancelled", processInstance.getRootToken()
-          .getNode()
-          .getName());
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinition.getId());
-    }
+    TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator()
+      .next();
+    taskInstance.end("reject");
+    assertEquals("cancelled", processInstance.getRootToken().getNode().getName());
   }
 
   public void testTaskInstancesAfterCancellation() {
@@ -163,31 +131,22 @@
       + "  <state name='process' />"
       + "  <state name='cancelled' />"
       + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
-    newTransaction();
+    deployProcessDefinition(processDefinition);
 
-    try {
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("endtasksprocess");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("endtasksprocess");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
-      processInstance = saveAndReload(processInstance);
-      processInstance.signal("cancel");
+    processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
+    processInstance.signal("cancel");
 
-      Collection taskInstances = processInstance.getTaskMgmtInstance()
-          .getTaskInstances();
-      assertEquals(1, taskInstances.size());
+    Collection taskInstances = processInstance.getTaskMgmtInstance().getTaskInstances();
+    assertEquals(1, taskInstances.size());
 
-      TaskInstance taskInstance = (TaskInstance) taskInstances.iterator()
-          .next();
-      assert taskInstance.hasEnded() : taskInstance;
-      assert !taskInstance.isCancelled() : taskInstance;
-      assert !taskInstance.isBlocking() : taskInstance;
-      assert !taskInstance.isSignalling() : taskInstance;
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(
-          processDefinition.getId());
-    }
+    TaskInstance taskInstance = (TaskInstance) taskInstances.iterator().next();
+    assert taskInstance.hasEnded() : taskInstance;
+    assert !taskInstance.isCancelled() : taskInstance;
+    assert !taskInstance.isBlocking() : taskInstance;
+    assert !taskInstance.isSignalling() : taskInstance;
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/SwimlaneDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/SwimlaneDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/SwimlaneDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -34,733 +34,604 @@
 import org.jbpm.graph.exe.Token;
 import org.jbpm.taskmgmt.def.AssignmentHandler;
 
-public class SwimlaneDbTest extends AbstractDbTestCase 
-{
-  
-  public void testStartStateSwimlaneInitialization() 
-  {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-        "<process-definition name='testStartStateSwimlaneInitialization'>" +
-        "  <swimlane name='initiator' />" +
-        "  <start-state>" +
-        "    <task swimlane='initiator' />" +
-        "    <transition to='a' />" +
-        "  </start-state>" +
-        "  <state name='a' />" +
-        "</process-definition>"
-        );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
-      
-      ProcessInstance processInstance;
-      TaskMgmtInstance taskMgmtInstance;
-      jbpmContext.setActorId("the other guy");
-      try {
-        processInstance = jbpmContext.newProcessInstanceForUpdate("testStartStateSwimlaneInitialization");
-        taskMgmtInstance = processInstance.getTaskMgmtInstance();
-        taskMgmtInstance.createStartTaskInstance();
-        processInstance.signal();
-      } finally {
-        jbpmContext.setActorId(null);
-      }
+public class SwimlaneDbTest extends AbstractDbTestCase {
 
-      newTransaction();
+  public void testStartStateSwimlaneInitialization() {
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testStartStateSwimlaneInitialization'>"
+      + "  <swimlane name='initiator' />"
+      + "  <start-state>"
+      + "    <task swimlane='initiator' />"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <state name='a' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      taskMgmtInstance = (TaskMgmtInstance) session.load(TaskMgmtInstance.class, new Long(taskMgmtInstance.getId()));
-      assertEquals("the other guy", taskMgmtInstance.getSwimlaneInstance("initiator").getActorId());
+    ProcessInstance processInstance;
+    TaskMgmtInstance taskMgmtInstance;
+    jbpmContext.setActorId("the other guy");
+    try {
+      processInstance = jbpmContext.newProcessInstanceForUpdate("testStartStateSwimlaneInitialization");
+      taskMgmtInstance = processInstance.getTaskMgmtInstance();
+      taskMgmtInstance.createStartTaskInstance();
+      processInstance.signal();
     }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
+    finally {
+      jbpmContext.setActorId(null);
     }
+
+    newTransaction();
+    taskMgmtInstance = (TaskMgmtInstance) session.load(TaskMgmtInstance.class, new Long(
+      taskMgmtInstance.getId()));
+    assertEquals("the other guy", taskMgmtInstance.getSwimlaneInstance("initiator")
+      .getActorId());
   }
 
-
-  public static class TestAssignmentHandler implements AssignmentHandler
-  {
+  public static class TestAssignmentHandler implements AssignmentHandler {
     private static final long serialVersionUID = 1L;
 
-    public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception
-    {
+    public void assign(Assignable assignable, ExecutionContext executionContext)
+      throws Exception {
       assignable.setActorId("me");
     }
   }
 
   public void testSwimlaneAssignmentHandler() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlaneAssignmentHandler'>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$TestAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
-      
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlaneAssignmentHandler");
-      processInstance.signal();
-      
-      processInstance = saveAndReload(processInstance);
-      
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
-      assertNotNull(stalker);
-      assertEquals("me", stalker.getActorId());
-      assertEquals("me", changeNappy.getActorId());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlaneAssignmentHandler'>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$TestAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
+
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlaneAssignmentHandler");
+    processInstance.signal();
+
+    processInstance = saveAndReload(processInstance);
+
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
+    assertNotNull(stalker);
+    assertEquals("me", stalker.getActorId());
+    assertEquals("me", changeNappy.getActorId());
   }
 
   public void testSwimlaneActorId() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlaneActorId'>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment actor-id='johndoe' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
-      
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlaneActorId");
-      processInstance.signal();
-      
-      processInstance = saveAndReload(processInstance);
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlaneActorId'>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment actor-id='johndoe' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
-      assertNotNull(stalker);
-      assertEquals("johndoe", stalker.getActorId());
-      assertEquals("johndoe", changeNappy.getActorId());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlaneActorId");
+    processInstance.signal();
+
+    processInstance = saveAndReload(processInstance);
+
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
+    assertNotNull(stalker);
+    assertEquals("johndoe", stalker.getActorId());
+    assertEquals("johndoe", changeNappy.getActorId());
   }
-  
+
   public void testSwimlanePooledActor() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlanePooledActor'>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
-      
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePooledActor");
-      processInstance.signal();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlanePooledActor'>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      processInstance = saveAndReload(processInstance);
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePooledActor");
+    processInstance.signal();
 
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
-      assertNotNull(stalker);
-      assertNull(stalker.getActorId());
-      assertNull(changeNappy.getActorId());
+    processInstance = saveAndReload(processInstance);
 
-      Set retrievedSwimlaneInstancePooledActorIds = new HashSet();
-      Iterator iter = stalker.getPooledActors().iterator();
-      while (iter.hasNext()) {
-        PooledActor pooledActor = (PooledActor) iter.next();
-        retrievedSwimlaneInstancePooledActorIds.add(pooledActor.getActorId());
-      }
-      
-      Set expectedPooledActorIds = new HashSet();
-      expectedPooledActorIds.add("hippies");
-      expectedPooledActorIds.add("hells angles");
-      
-      assertEquals(expectedPooledActorIds, retrievedSwimlaneInstancePooledActorIds);
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
+    assertNotNull(stalker);
+    assertNull(stalker.getActorId());
+    assertNull(changeNappy.getActorId());
 
-      Set retrievedTaskInstancePooledActorIds = new HashSet();
-      iter = changeNappy.getPooledActors().iterator();
-      while (iter.hasNext()) {
-        PooledActor pooledActor = (PooledActor) iter.next();
-        retrievedTaskInstancePooledActorIds.add(pooledActor.getActorId());
-      }
-      
-      assertEquals(expectedPooledActorIds, retrievedTaskInstancePooledActorIds);
+    Set retrievedSwimlaneInstancePooledActorIds = new HashSet();
+    for (Iterator iter = stalker.getPooledActors().iterator(); iter.hasNext();) {
+      PooledActor pooledActor = (PooledActor) iter.next();
+      retrievedSwimlaneInstancePooledActorIds.add(pooledActor.getActorId());
     }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
+
+    Set expectedPooledActorIds = new HashSet();
+    expectedPooledActorIds.add("hippies");
+    expectedPooledActorIds.add("hells angles");
+
+    assertEquals(expectedPooledActorIds, retrievedSwimlaneInstancePooledActorIds);
+
+    Set retrievedTaskInstancePooledActorIds = new HashSet();
+    for (Iterator iter = changeNappy.getPooledActors().iterator(); iter.hasNext();) {
+      PooledActor pooledActor = (PooledActor) iter.next();
+      retrievedTaskInstancePooledActorIds.add(pooledActor.getActorId());
     }
-    
+
+    assertEquals(expectedPooledActorIds, retrievedTaskInstancePooledActorIds);
   }
-  
+
   public void testSwimlanePooledActorThenTaskInstanceAssignment() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlanePooledActorThenTaskInstanceAssignment'>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
-      
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePooledActorThenTaskInstanceAssignment");
-      processInstance.signal();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlanePooledActorThenTaskInstanceAssignment'>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      processInstance = saveAndReload(processInstance);
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePooledActorThenTaskInstanceAssignment");
+    processInstance.signal();
 
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
-      assertNotNull(stalker);
-      assertNull(stalker.getActorId());
-      assertNull(changeNappy.getActorId());
-      
-      changeNappy.setActorId("johndoe");
-      
-      stalker = (SwimlaneInstance) session.load(SwimlaneInstance.class, new Long(stalker.getId()));
-      assertEquals("johndoe", stalker.getActorId());
+    processInstance = saveAndReload(processInstance);
 
-      changeNappy = (TaskInstance) session.load(TaskInstance.class, new Long(changeNappy.getId()));
-      assertEquals("johndoe", changeNappy.getActorId());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
+    assertNotNull(stalker);
+    assertNull(stalker.getActorId());
+    assertNull(changeNappy.getActorId());
+
+    changeNappy.setActorId("johndoe");
+
+    stalker = (SwimlaneInstance) session.load(SwimlaneInstance.class, new Long(stalker.getId()));
+    assertEquals("johndoe", stalker.getActorId());
+
+    changeNappy = (TaskInstance) session.load(TaskInstance.class, new Long(changeNappy.getId()));
+    assertEquals("johndoe", changeNappy.getActorId());
   }
-  
+
   public void testSwimlanePooledActorThenTaskInstanceReassignment() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlanePooledActorThenTaskInstanceReassignment'>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
-      
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePooledActorThenTaskInstanceReassignment");
-      processInstance.signal();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlanePooledActorThenTaskInstanceReassignment'>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      processInstance = saveAndReload(processInstance);
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePooledActorThenTaskInstanceReassignment");
+    processInstance.signal();
 
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
-      assertNotNull(stalker);
-      assertNull(stalker.getActorId());
-      assertNull(changeNappy.getActorId());
-      
-      changeNappy.setActorId("johndoe");
-      changeNappy.setActorId("joesmoe");
+    processInstance = saveAndReload(processInstance);
 
-      processInstance = saveAndReload(processInstance);
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
+    assertNotNull(stalker);
+    assertNull(stalker.getActorId());
+    assertNull(changeNappy.getActorId());
 
-      taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
+    changeNappy.setActorId("johndoe");
+    changeNappy.setActorId("joesmoe");
 
-      assertEquals("joesmoe", stalker.getActorId());
-      assertEquals("joesmoe", changeNappy.getActorId());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    processInstance = saveAndReload(processInstance);
+
+    taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
+
+    assertEquals("joesmoe", stalker.getActorId());
+    assertEquals("joesmoe", changeNappy.getActorId());
   }
-  
+
   public void testSwimlanePooledActorThenSwimlaneInstanceAssignment() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlanePooledActorThenSwimlaneInstanceAssignment'>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
-      
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePooledActorThenSwimlaneInstanceAssignment");
-      processInstance.signal();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlanePooledActorThenSwimlaneInstanceAssignment'>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      processInstance = saveAndReload(processInstance);
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePooledActorThenSwimlaneInstanceAssignment");
+    processInstance.signal();
 
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
-      assertNotNull(stalker);
-      assertNull(stalker.getActorId());
-      assertNull(changeNappy.getActorId());
-      
-      stalker.setActorId("johndoe");
+    processInstance = saveAndReload(processInstance);
 
-      processInstance = saveAndReload(processInstance);
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
+    assertNotNull(stalker);
+    assertNull(stalker.getActorId());
+    assertNull(changeNappy.getActorId());
 
-      taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
+    stalker.setActorId("johndoe");
 
-      assertEquals("johndoe", stalker.getActorId());
-      assertNull(changeNappy.getActorId());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    processInstance = saveAndReload(processInstance);
+
+    taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
+
+    assertEquals("johndoe", stalker.getActorId());
+    assertNull(changeNappy.getActorId());
   }
-  
+
   public void testSwimlaneReassignment() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlaneReassignment'>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='make bottle' swimlane='hero' />'" +
-      "    <transition to='end' />" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlaneReassignment'>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='make bottle' swimlane='hero' />'"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlaneReassignment");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlaneReassignment");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
 
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      changeNappy.setActorId("johndoe");
-      changeNappy.end();
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    changeNappy.setActorId("johndoe");
+    changeNappy.end();
 
-      processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
 
-      taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      assertEquals("johndoe", makeBottle.getActorId());
-      
-      Set retrievedTaskInstancePooledActorIds = new HashSet();
-      Iterator iter = makeBottle.getPooledActors().iterator();
-      while (iter.hasNext()) {
-        PooledActor pooledActor = (PooledActor) iter.next();
-        retrievedTaskInstancePooledActorIds.add(pooledActor.getActorId());
-      }
-      
-      Set expectedPooledActorIds = new HashSet();
-      expectedPooledActorIds.add("hippies");
-      expectedPooledActorIds.add("hells angles");
-      
-      assertEquals(expectedPooledActorIds, retrievedTaskInstancePooledActorIds);
+    taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    assertEquals("johndoe", makeBottle.getActorId());
+
+    Set retrievedTaskInstancePooledActorIds = new HashSet();
+    for (Iterator iter = makeBottle.getPooledActors().iterator(); iter.hasNext();) {
+      PooledActor pooledActor = (PooledActor) iter.next();
+      retrievedTaskInstancePooledActorIds.add(pooledActor.getActorId());
     }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+
+    Set expectedPooledActorIds = new HashSet();
+    expectedPooledActorIds.add("hippies");
+    expectedPooledActorIds.add("hells angles");
+
+    assertEquals(expectedPooledActorIds, retrievedTaskInstancePooledActorIds);
   }
 
   public void testSwimlanePooledActorsUpdate() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlanePooledActorsUpdate'>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='make bottle' swimlane='hero' />'" +
-      "    <transition to='end' />" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlanePooledActorsUpdate'>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='make bottle' swimlane='hero' />'"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePooledActorsUpdate");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePooledActorsUpdate");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
 
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      SwimlaneInstance hero = taskMgmtInstance.getSwimlaneInstance("hero");
-      changeNappy.setActorId("johndoe");
-      hero.setPooledActors(new String[]{"footballers", "hooligans", "stewards"});
-      
-      changeNappy.end();
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    SwimlaneInstance hero = taskMgmtInstance.getSwimlaneInstance("hero");
+    changeNappy.setActorId("johndoe");
+    hero.setPooledActors(new String[] { "footballers", "hooligans", "stewards" });
 
-      processInstance = saveAndReload(processInstance);
+    changeNappy.end();
 
-      Token token = processInstance.getRootToken();
-      taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token).iterator().next();
-      assertEquals("johndoe", makeBottle.getActorId());
-      
-      Set retrievedTaskInstancePooledActorIds = new HashSet();
-      Iterator iter = makeBottle.getPooledActors().iterator();
-      while (iter.hasNext()) {
-        PooledActor pooledActor = (PooledActor) iter.next();
-        retrievedTaskInstancePooledActorIds.add(pooledActor.getActorId());
-      }
-      
-      Set expectedPooledActorIds = new HashSet();
-      expectedPooledActorIds.add("footballers");
-      expectedPooledActorIds.add("hooligans");
-      expectedPooledActorIds.add("stewards");
+    processInstance = saveAndReload(processInstance);
 
-      assertEquals(expectedPooledActorIds, retrievedTaskInstancePooledActorIds);
+    Token token = processInstance.getRootToken();
+    taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token)
+      .iterator()
+      .next();
+    assertEquals("johndoe", makeBottle.getActorId());
+
+    Set retrievedTaskInstancePooledActorIds = new HashSet();
+    for (Iterator iter = makeBottle.getPooledActors().iterator(); iter.hasNext();) {
+      PooledActor pooledActor = (PooledActor) iter.next();
+      retrievedTaskInstancePooledActorIds.add(pooledActor.getActorId());
     }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+
+    Set expectedPooledActorIds = new HashSet();
+    expectedPooledActorIds.add("footballers");
+    expectedPooledActorIds.add("hooligans");
+    expectedPooledActorIds.add("stewards");
+
+    assertEquals(expectedPooledActorIds, retrievedTaskInstancePooledActorIds);
   }
 
-  
   public void testSwimlaneActorReassignment() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlaneActorReassignment'>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$TestAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='make bottle' swimlane='hero' />'" +
-      "    <transition to='end' />" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlaneActorReassignment'>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$TestAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='make bottle' swimlane='hero' />'"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlaneActorReassignment");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlaneActorReassignment");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
 
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      assertEquals("me", changeNappy.getActorId());
-      changeNappy.end();
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    assertEquals("me", changeNappy.getActorId());
+    changeNappy.end();
 
-      processInstance = saveAndReload(processInstance);
-      taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    processInstance = saveAndReload(processInstance);
+    taskMgmtInstance = processInstance.getTaskMgmtInstance();
 
-      TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(processInstance.getRootToken()).iterator().next();
-      assertEquals("me", makeBottle.getActorId());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(
+      processInstance.getRootToken()).iterator().next();
+    assertEquals("me", makeBottle.getActorId());
   }
 
-  
-  public static class MultipleAssignmentHandler implements AssignmentHandler
-  {
+  public static class MultipleAssignmentHandler implements AssignmentHandler {
     private static final long serialVersionUID = 1L;
 
-    public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception
-    {
+    public void assign(Assignable assignable, ExecutionContext executionContext)
+      throws Exception {
       assignable.setPooledActors(new String[] { "me", "you", "them" });
     }
   }
-  
+
   public void testSwimlanePoolInitialization() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlanePoolInitialization'>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlanePoolInitialization'>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePoolInitialization");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePoolInitialization");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
 
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      assertNull(changeNappy.getActorId());
-      
-      Set pooledActors = changeNappy.getPooledActors();
-      assertEquals(3, pooledActors.size());
-      
-      List expectedPooledActorIds = Arrays.asList(new String[]{"me", "you", "them"});
-      Iterator iter = pooledActors.iterator();
-      while (iter.hasNext()) {
-        PooledActor pooledActor = (PooledActor) iter.next();
-        assertTrue(expectedPooledActorIds.contains(pooledActor.getActorId()));
-      }
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    assertNull(changeNappy.getActorId());
+
+    Set pooledActors = changeNappy.getPooledActors();
+    assertEquals(3, pooledActors.size());
+
+    List expectedPooledActorIds = Arrays.asList(new String[] { "me", "you", "them" });
+    for (Iterator iter = pooledActors.iterator(); iter.hasNext();) {
+      PooledActor pooledActor = (PooledActor) iter.next();
+      assertTrue(expectedPooledActorIds.contains(pooledActor.getActorId()));
     }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
   }
 
   public void testSwimlanePoolReassignmentOfNonTakenTask() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlanePoolReassignmentOfNonTakenTask'>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='make bottle' swimlane='hero' />'" +
-      "    <transition to='end' />" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlanePoolReassignmentOfNonTakenTask'>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='make bottle' swimlane='hero' />'"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePoolReassignmentOfNonTakenTask");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePoolReassignmentOfNonTakenTask");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
 
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      SwimlaneInstance swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      
-      assertNull(changeNappy.getActorId());
-      assertEquals(3, changeNappy.getPooledActors().size());
-      assertEquals(changeNappy.getPooledActors(), swimlaneInstance.getPooledActors());
-      
-      changeNappy.end();
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    SwimlaneInstance swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
 
-      processInstance = saveAndReload(processInstance);
+    assertNull(changeNappy.getActorId());
+    assertEquals(3, changeNappy.getPooledActors().size());
+    assertEquals(changeNappy.getPooledActors(), swimlaneInstance.getPooledActors());
 
-      taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
-      
-      TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(processInstance.getRootToken()).iterator().next();
-      assertNull(makeBottle.getActorId());
-      assertEquals(3, makeBottle.getPooledActors().size());
-      assertEquals(makeBottle.getPooledActors(), swimlaneInstance.getPooledActors());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    changeNappy.end();
+
+    processInstance = saveAndReload(processInstance);
+
+    taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
+
+    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(
+      processInstance.getRootToken()).iterator().next();
+    assertNull(makeBottle.getActorId());
+    assertEquals(3, makeBottle.getPooledActors().size());
+    assertEquals(makeBottle.getPooledActors(), swimlaneInstance.getPooledActors());
   }
 
   public void testSwimlanePoolReassignmentOfTakenTask() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testSwimlanePoolReassignmentOfTakenTask'>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='make bottle' swimlane='hero' />'" +
-      "    <transition to='end' />" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='testSwimlanePoolReassignmentOfTakenTask'>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='make bottle' swimlane='hero' />'"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePoolReassignmentOfTakenTask");
-      processInstance.signal();
-      
-      processInstance = saveAndReload(processInstance);
-      
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      SwimlaneInstance swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      changeNappy.setActorId("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to");
-      
-      assertEquals("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to", changeNappy.getActorId());
-      assertEquals(3, changeNappy.getPooledActors().size());
-      assertEquals(changeNappy.getPooledActors(), swimlaneInstance.getPooledActors());
-      
-      changeNappy.end();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testSwimlanePoolReassignmentOfTakenTask");
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
+    processInstance = saveAndReload(processInstance);
 
-      taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
-      TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(processInstance.getRootToken()).iterator().next();
-      assertEquals("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to", makeBottle.getActorId());
-      assertEquals(3, makeBottle.getPooledActors().size());
-      assertEquals(makeBottle.getPooledActors(), swimlaneInstance.getPooledActors());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    SwimlaneInstance swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+    changeNappy.setActorId("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to");
+
+    assertEquals("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to",
+      changeNappy.getActorId());
+    assertEquals(3, changeNappy.getPooledActors().size());
+    assertEquals(changeNappy.getPooledActors(), swimlaneInstance.getPooledActors());
+
+    changeNappy.end();
+
+    processInstance = saveAndReload(processInstance);
+
+    taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
+    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(
+      processInstance.getRootToken()).iterator().next();
+    assertEquals("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to",
+      makeBottle.getActorId());
+    assertEquals(3, makeBottle.getPooledActors().size());
+    assertEquals(makeBottle.getPooledActors(), swimlaneInstance.getPooledActors());
   }
 
-  public static class NullAssignmentHandler implements AssignmentHandler
-  {
+  public static class NullAssignmentHandler implements AssignmentHandler {
     private static final long serialVersionUID = 1L;
 
-    public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception
-    {
+    public void assign(Assignable assignable, ExecutionContext executionContext)
+      throws Exception {
     }
   }
 
   public void testNullActorsForSwimlaneInitialization() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='testNullActorsForSwimlaneInitialization'>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$NullAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='null actors'>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$NullAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("testNullActorsForSwimlaneInitialization");
-      processInstance.signal();
-      
-      processInstance = saveAndReload(processInstance);
-      TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-      SwimlaneInstance swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
-      TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-      
-      assertNull(swimlaneInstance.getActorId());
-      assertEquals(0, swimlaneInstance.getPooledActors().size());
-      assertNull(changeNappy.getActorId());
-      assertEquals(0, changeNappy.getPooledActors().size());
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("null actors");
+    processInstance.signal();
+
+    processInstance = saveAndReload(processInstance);
+    TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
+    SwimlaneInstance swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+
+    assertNull(swimlaneInstance.getActorId());
+    assertEquals(0, swimlaneInstance.getPooledActors().size());
+    assertNull(changeNappy.getActorId());
+    assertEquals(0, changeNappy.getPooledActors().size());
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/SwimlaneTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/SwimlaneTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/SwimlaneTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -37,25 +37,23 @@
 import org.jbpm.taskmgmt.def.AssignmentHandler;
 
 public class SwimlaneTest extends AbstractJbpmTestCase {
-  
-  static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance("org/jbpm/jbpm.test.cfg.xml");
+
+  static JbpmConfiguration jbpmConfiguration = JbpmConfiguration.getInstance();
   static int invocationCount = 0;
-  
+
   protected void setUp() {
     invocationCount = 0;
   }
-  
+
   public void testStartStateSwimlaneInitialization() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='initiator' />" +
-      "  <start-state>" +
-      "    <task swimlane='initiator' />" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <state name='a' />" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='initiator' />"
+      + "  <start-state>"
+      + "    <task swimlane='initiator' />"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <state name='a' />"
+      + "</process-definition>");
 
     ProcessInstance processInstance;
     TaskMgmtInstance taskMgmtInstance;
@@ -66,104 +64,110 @@
       taskMgmtInstance = processInstance.getTaskMgmtInstance();
       taskMgmtInstance.createStartTaskInstance();
       processInstance.signal();
-    } finally {
+    }
+    finally {
       jbpmContext.setActorId(null);
       jbpmContext.close();
     }
-    assertEquals("the other guy", taskMgmtInstance.getSwimlaneInstance("initiator").getActorId());
+    assertEquals("the other guy", taskMgmtInstance.getSwimlaneInstance("initiator")
+      .getActorId());
   }
 
   public static class TestAssignmentHandler implements AssignmentHandler {
     private static final long serialVersionUID = 1L;
-    public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception {
+
+    public void assign(Assignable assignable, ExecutionContext executionContext)
+      throws Exception {
       invocationCount++;
       assignable.setActorId("me");
     }
   }
 
   public void testSwimlaneAssignmentHandler() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$TestAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='beauty sleep' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$TestAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='beauty sleep' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
     assertNotNull(stalker);
     assertEquals(1, invocationCount);
     assertEquals("me", stalker.getActorId());
     assertEquals("me", changeNappy.getActorId());
-    
+
     changeNappy.end();
-    
+
     Token token = processInstance.getRootToken();
-    TaskInstance beautySleep = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token).iterator().next();
+    TaskInstance beautySleep = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token)
+      .iterator()
+      .next();
     assertEquals("me", beautySleep.getActorId());
   }
-  
+
   public void testSwimlaneActorId() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment actor-id='johndoe' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment actor-id='johndoe' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
     assertNotNull(stalker);
     assertEquals("johndoe", stalker.getActorId());
     assertEquals("johndoe", changeNappy.getActorId());
   }
-  
+
   public void testSwimlanePooledActor() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
     assertNotNull(stalker);
     assertNull(stalker.getActorId());
@@ -175,11 +179,11 @@
       PooledActor pooledActor = (PooledActor) iter.next();
       retrievedSwimlaneInstancePooledActorIds.add(pooledActor.getActorId());
     }
-    
+
     Set expectedPooledActorIds = new HashSet();
     expectedPooledActorIds.add("hippies");
     expectedPooledActorIds.add("hells angles");
-    
+
     assertEquals(expectedPooledActorIds, retrievedSwimlaneInstancePooledActorIds);
 
     Set retrievedTaskInstancePooledActorIds = new HashSet();
@@ -188,193 +192,197 @@
       PooledActor pooledActor = (PooledActor) iter.next();
       retrievedTaskInstancePooledActorIds.add(pooledActor.getActorId());
     }
-    
+
     assertEquals(expectedPooledActorIds, retrievedTaskInstancePooledActorIds);
   }
-  
+
   public void testSwimlanePooledActorThenTaskInstanceAssignment() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
     assertNotNull(stalker);
     assertNull(stalker.getActorId());
     assertNull(changeNappy.getActorId());
-    
+
     changeNappy.setActorId("johndoe");
-    
+
     assertEquals("johndoe", stalker.getActorId());
     assertEquals("johndoe", changeNappy.getActorId());
   }
-  
+
   public void testSwimlanePooledActorThenTaskInstanceReassignment() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
     assertNotNull(stalker);
     assertNull(stalker.getActorId());
     assertNull(changeNappy.getActorId());
-    
+
     changeNappy.setActorId("johndoe");
     changeNappy.setActorId("joesmoe");
-    
+
     assertEquals("joesmoe", stalker.getActorId());
     assertEquals("joesmoe", changeNappy.getActorId());
   }
-  
+
   public void testSwimlanePooledActorThenSwimlaneInstanceAssignment() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='stalker'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='stalker' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
-    
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='stalker'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='stalker' />"
+      + "  </task-node>"
+      + "</process-definition>");
+
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("stalker");
     assertNotNull(stalker);
     assertNull(stalker.getActorId());
     assertNull(changeNappy.getActorId());
-    
+
     stalker.setActorId("johndoe");
-    
+
     assertEquals("johndoe", stalker.getActorId());
     assertNull(changeNappy.getActorId());
   }
-  
+
   public void testSwimlaneReassignment() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='make bottle' swimlane='hero' />'" +
-      "    <transition to='end' />" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='make bottle' swimlane='hero' />'"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
 
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     changeNappy.setActorId("johndoe");
     changeNappy.end();
 
-    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     assertEquals("johndoe", makeBottle.getActorId());
-    
+
     Set retrievedTaskInstancePooledActorIds = new HashSet();
     Iterator iter = makeBottle.getPooledActors().iterator();
     while (iter.hasNext()) {
       PooledActor pooledActor = (PooledActor) iter.next();
       retrievedTaskInstancePooledActorIds.add(pooledActor.getActorId());
     }
-    
+
     Set expectedPooledActorIds = new HashSet();
     expectedPooledActorIds.add("hippies");
     expectedPooledActorIds.add("hells angles");
-    
+
     assertEquals(expectedPooledActorIds, retrievedTaskInstancePooledActorIds);
   }
 
   public void testSwimlanePooledActorsUpdate() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment pooled-actors='hippies,hells angles' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='make bottle' swimlane='hero' />'" +
-      "    <transition to='end' />" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment pooled-actors='hippies,hells angles' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='make bottle' swimlane='hero' />'"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
 
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     SwimlaneInstance stalker = taskMgmtInstance.getSwimlaneInstance("hero");
     changeNappy.setActorId("johndoe");
-    stalker.setPooledActors(new String[]{"footballers", "hooligans", "stewards"});
-    
+    stalker.setPooledActors(new String[] { "footballers", "hooligans", "stewards" });
+
     changeNappy.end();
 
     Token token = processInstance.getRootToken();
-    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token).iterator().next();
+    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token)
+      .iterator()
+      .next();
     assertEquals("johndoe", makeBottle.getActorId());
-    
+
     Set retrievedTaskInstancePooledActorIds = new HashSet();
     Iterator iter = makeBottle.getPooledActors().iterator();
     while (iter.hasNext()) {
       PooledActor pooledActor = (PooledActor) iter.next();
       retrievedTaskInstancePooledActorIds.add(pooledActor.getActorId());
     }
-    
+
     Set expectedPooledActorIds = new HashSet();
     expectedPooledActorIds.add("footballers");
     expectedPooledActorIds.add("hooligans");
@@ -383,76 +391,78 @@
     assertEquals(expectedPooledActorIds, retrievedTaskInstancePooledActorIds);
   }
 
-  
   public void testSwimlaneActorReassignment() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$TestAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='make bottle' swimlane='hero' />'" +
-      "    <transition to='end' />" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$TestAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='make bottle' swimlane='hero' />'"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
 
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     assertEquals("me", changeNappy.getActorId());
     assertEquals(1, invocationCount);
     changeNappy.end();
 
-    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(processInstance.getRootToken()).iterator().next();
+    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(
+      processInstance.getRootToken()).iterator().next();
     assertEquals("me", makeBottle.getActorId());
     assertEquals(1, invocationCount);
   }
 
-  
   public static class MultipleAssignmentHandler implements AssignmentHandler {
     private static final long serialVersionUID = 1L;
-    public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception {
+
+    public void assign(Assignable assignable, ExecutionContext executionContext)
+      throws Exception {
       invocationCount++;
-      assignable.setPooledActors(new String[]{"me", "you", "them"});
+      assignable.setPooledActors(new String[] { "me", "you", "them" });
     }
   }
+
   public void testSwimlanePoolInitialization() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "  </task-node>"
+      + "</process-definition>");
 
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     assertNull(changeNappy.getActorId());
-    
+
     Set pooledActors = changeNappy.getPooledActors();
     assertEquals(3, pooledActors.size());
     assertEquals(1, invocationCount);
-    
-    List expectedPooledActorIds = Arrays.asList(new String[]{"me", "you", "them"});
+
+    List expectedPooledActorIds = Arrays.asList(new String[] { "me", "you", "them" });
     Iterator iter = pooledActors.iterator();
     while (iter.hasNext()) {
       PooledActor pooledActor = (PooledActor) iter.next();
@@ -461,115 +471,122 @@
   }
 
   public void testSwimlanePoolReassignmentOfNonTakenTask() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='make bottle' swimlane='hero' />'" +
-      "    <transition to='end' />" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='make bottle' swimlane='hero' />'"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
 
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
     SwimlaneInstance swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-    
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+
     assertNull(changeNappy.getActorId());
     assertEquals(3, changeNappy.getPooledActors().size());
     assertEquals(changeNappy.getPooledActors(), swimlaneInstance.getPooledActors());
-    
+
     changeNappy.end();
 
     assertEquals(1, invocationCount);
 
-    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(processInstance.getRootToken()).iterator().next();
+    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(
+      processInstance.getRootToken()).iterator().next();
     assertNull(makeBottle.getActorId());
     assertEquals(3, makeBottle.getPooledActors().size());
     assertEquals(makeBottle.getPooledActors(), swimlaneInstance.getPooledActors());
   }
 
   public void testSwimlanePoolReassignmentOfTakenTask() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='make bottle' swimlane='hero' />'" +
-      "    <transition to='end' />" +
-      "  </task-node>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$MultipleAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='make bottle' swimlane='hero' />'"
+      + "    <transition to='end' />"
+      + "  </task-node>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
 
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
     SwimlaneInstance swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
     changeNappy.setActorId("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to");
-    
-    assertEquals("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to", changeNappy.getActorId());
+
+    assertEquals("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to",
+      changeNappy.getActorId());
     assertEquals(3, changeNappy.getPooledActors().size());
     assertEquals(changeNappy.getPooledActors(), swimlaneInstance.getPooledActors());
-    
+
     changeNappy.end();
 
     assertEquals(1, invocationCount);
 
-    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(processInstance.getRootToken()).iterator().next();
-    assertEquals("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to", makeBottle.getActorId());
+    TaskInstance makeBottle = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(
+      processInstance.getRootToken()).iterator().next();
+    assertEquals("should-be-one-of-the-actors-in-the-pool-but-doesnt-have-to",
+      makeBottle.getActorId());
     assertEquals(3, makeBottle.getPooledActors().size());
     assertEquals(makeBottle.getPooledActors(), swimlaneInstance.getPooledActors());
   }
 
   public static class NullAssignmentHandler implements AssignmentHandler {
     private static final long serialVersionUID = 1L;
-    public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception {
+
+    public void assign(Assignable assignable, ExecutionContext executionContext)
+      throws Exception {
     }
   }
+
   public void testNullActorsForSwimlaneInitialization() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='hero'>" +
-      "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$NullAssignmentHandler' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='change nappy' swimlane='hero' />'" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='hero'>"
+      + "    <assignment class='org.jbpm.taskmgmt.exe.SwimlaneTest$NullAssignmentHandler' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='change nappy' swimlane='hero' />'"
+      + "  </task-node>"
+      + "</process-definition>");
 
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
     SwimlaneInstance swimlaneInstance = taskMgmtInstance.getSwimlaneInstance("hero");
-    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances().iterator().next();
-    
+    TaskInstance changeNappy = (TaskInstance) taskMgmtInstance.getTaskInstances()
+      .iterator()
+      .next();
+
     assertNull(swimlaneInstance.getActorId());
     assertNull(swimlaneInstance.getPooledActors());
     assertNull(changeNappy.getActorId());
@@ -577,51 +594,55 @@
   }
 
   public void testTwoSwimlanes() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition>" +
-      "  <swimlane name='hooligan'>" +
-      "    <assignment actor-id='johndoe' />" +
-      "  </swimlane>" +
-      "  <swimlane name='policeman'>" +
-      "    <assignment actor-id='joesmoe' />" +
-      "  </swimlane>" +
-      "  <start-state>" +
-      "    <transition to='a' />" +
-      "  </start-state>" +
-      "  <task-node name='a'>" +
-      "    <task name='throw rock' swimlane='hooligan' />" +
-      "    <transition to='b' />" +
-      "  </task-node>" +
-      "  <task-node name='b'>" +
-      "    <task name='hit him with your rithem stick' swimlane='policeman' />" +
-      "    <transition to='c' />" +
-      "  </task-node>" +
-      "  <task-node name='c'>" +
-      "    <task name='get nursed' swimlane='hooligan' />" +
-      "    <transition to='a' />" +
-      "  </task-node>" +
-      "</process-definition>"
-    );
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition>"
+      + "  <swimlane name='hooligan'>"
+      + "    <assignment actor-id='johndoe' />"
+      + "  </swimlane>"
+      + "  <swimlane name='policeman'>"
+      + "    <assignment actor-id='joesmoe' />"
+      + "  </swimlane>"
+      + "  <start-state>"
+      + "    <transition to='a' />"
+      + "  </start-state>"
+      + "  <task-node name='a'>"
+      + "    <task name='throw rock' swimlane='hooligan' />"
+      + "    <transition to='b' />"
+      + "  </task-node>"
+      + "  <task-node name='b'>"
+      + "    <task name='hit him with your rithem stick' swimlane='policeman' />"
+      + "    <transition to='c' />"
+      + "  </task-node>"
+      + "  <task-node name='c'>"
+      + "    <task name='get nursed' swimlane='hooligan' />"
+      + "    <transition to='a' />"
+      + "  </task-node>"
+      + "</process-definition>");
 
     ProcessInstance processInstance = new ProcessInstance(processDefinition);
     Token token = processInstance.getRootToken();
     processInstance.signal();
-    
+
     TaskMgmtInstance taskMgmtInstance = processInstance.getTaskMgmtInstance();
-    TaskInstance throwRock = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token).iterator().next();
+    TaskInstance throwRock = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token)
+      .iterator()
+      .next();
     assertEquals("johndoe", throwRock.getActorId());
-    
+
     throwRock.end();
-    TaskInstance hitWithRithmStick = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token).iterator().next();
+    TaskInstance hitWithRithmStick = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token)
+      .iterator()
+      .next();
     assertEquals("joesmoe", hitWithRithmStick.getActorId());
-    
+
     hitWithRithmStick.end();
-    TaskInstance getNursed = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token).iterator().next();
+    TaskInstance getNursed = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token)
+      .iterator()
+      .next();
     assertEquals("johndoe", getNursed.getActorId());
-    
-    SwimlaneInstance hooligan =  taskMgmtInstance.getSwimlaneInstance("hooligan");
+
+    SwimlaneInstance hooligan = taskMgmtInstance.getSwimlaneInstance("hooligan");
     hooligan.setActorId("janedane");
-    
+
     getNursed.end();
     throwRock = (TaskInstance) taskMgmtInstance.getUnfinishedTasks(token).iterator().next();
     assertEquals("janedane", throwRock.getActorId());

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskAssignmentDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskAssignmentDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskAssignmentDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -35,85 +35,73 @@
 
   public void testPersonalTasklist() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='personal'>"
-        + "  <start-state>"
-        + "    <transition to='work' />"
-        + "  </start-state>"
-        + "  <task-node name='work'>"
-        + "    <task name='feed the chickens'>"
-        + "      <assignment actor-id='john' />"
-        + "    </task>"
-        + "    <task name='walk the dog'>"
-        + "      <assignment actor-id='john' />"
-        + "    </task>"
-        + "    <task name='play with wife'>"
-        + "      <assignment actor-id='john' />"
-        + "    </task>"
-        + "  </task-node>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='work' />"
+      + "  </start-state>"
+      + "  <task-node name='work'>"
+      + "    <task name='feed the chickens'>"
+      + "      <assignment actor-id='john' />"
+      + "    </task>"
+      + "    <task name='walk the dog'>"
+      + "      <assignment actor-id='john' />"
+      + "    </task>"
+      + "    <task name='play with wife'>"
+      + "      <assignment actor-id='john' />"
+      + "    </task>"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
+    jbpmContext.save(processInstance);
+
     newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
-      jbpmContext.save(processInstance);
+    List taskInstances = jbpmContext.getTaskList("john");
+    assertNotNull(taskInstances);
+    assertEquals(3, taskInstances.size());
 
-      newTransaction();
-      List taskInstances = jbpmContext.getTaskList("john");
-      assertNotNull(taskInstances);
-      assertEquals(3, taskInstances.size());
-
-      List taskNames = Arrays.asList(new String[] { "feed the chickens", "walk the dog", "play with wife" });
-      for (Iterator i = taskInstances.iterator(); i.hasNext();) {
-        TaskInstance taskInstance = (TaskInstance) i.next();
-        assert taskNames.contains(taskInstance.getName()) : taskInstance.getName();
-      }
+    List taskNames = Arrays.asList(new String[] { "feed the chickens", "walk the dog",
+      "play with wife" });
+    for (Iterator i = taskInstances.iterator(); i.hasNext();) {
+      TaskInstance taskInstance = (TaskInstance) i.next();
+      assert taskNames.contains(taskInstance.getName()) : taskInstance.getName();
     }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
   }
 
   public static class PoolAssignmentHandler implements AssignmentHandler {
-
     private static final long serialVersionUID = 1L;
 
-    public void assign(Assignable assignable, ExecutionContext executionContext) throws Exception {
+    public void assign(Assignable assignable, ExecutionContext executionContext)
+      throws Exception {
       assignable.setPooledActors(new String[] { "john", "joe", "homer" });
     }
   }
 
   public void testPooledTasklist() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='pool'>"
-        + "  <start-state>"
-        + "    <transition to='work' />"
-        + "  </start-state>"
-        + "  <task-node name='work'>"
-        + "    <task name='feed the chickens'>"
-        + "      <assignment pooled-actors='john' />"
-        + "    </task>"
-        + "  </task-node>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='work' />"
+      + "  </start-state>"
+      + "  <task-node name='work'>"
+      + "    <task name='feed the chickens'>"
+      + "      <assignment pooled-actors='john' />"
+      + "    </task>"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
+    jbpmContext.save(processInstance);
+
     newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
-      jbpmContext.save(processInstance);
+    List taskInstances = taskMgmtSession.findPooledTaskInstances("john");
+    assertNotNull(taskInstances);
+    assertEquals(1, taskInstances.size());
 
-      newTransaction();
-      List taskInstances = taskMgmtSession.findPooledTaskInstances("john");
-      assertNotNull(taskInstances);
-      assertEquals(1, taskInstances.size());
-
-      TaskInstance taskInstance = (TaskInstance) taskInstances.get(0);
-      assertEquals("feed the chickens", taskInstance.getName());
-      assertNull(taskInstance.getActorId());
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    TaskInstance taskInstance = (TaskInstance) taskInstances.get(0);
+    assertEquals("feed the chickens", taskInstance.getName());
+    assertNull(taskInstance.getActorId());
   }
-
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskExecutionTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskExecutionTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskExecutionTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -23,7 +23,6 @@
 
 import java.util.Collection;
 import java.util.Iterator;
-import java.util.List;
 
 import org.jbpm.AbstractJbpmTestCase;
 import org.jbpm.graph.def.ProcessDefinition;
@@ -400,7 +399,7 @@
     processInstance.getContextInstance().setVariable("item", "shoes");
     processInstance.signal();
     Token token = processInstance.getRootToken();
-    Collection taskInstances = (List) processInstance.getTaskMgmtInstance().getUnfinishedTasks(token);
+    Collection taskInstances = processInstance.getTaskMgmtInstance().getUnfinishedTasks(token);
     assertEquals(1, taskInstances.size());
     TaskInstance taskInstance = (TaskInstance) taskInstances.iterator().next();
     assertEquals("This task is about shoes", taskInstance.getDescription());

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskVariableAccessDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskVariableAccessDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskVariableAccessDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -14,112 +14,93 @@
 public class TaskVariableAccessDbTest extends AbstractDbTestCase {
 
   /**
-   * verifies task local variables. 
+   * verifies task local variables.
    */
   public void testVarUpdate() {
-    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString(
-      "<process-definition name='panem et circenses'>" +
-      "  <start-state name='start'>" +
-      "    <transition to='f' />" +
-      "  </start-state>" +
-      "  <fork name='f'>" +
-      "    <transition name='left'  to='panem' />" +
-      "    <transition name='right' to='circenses' />" +
-      "  </fork>" +
-      "  <task-node name='panem'>" +
-      "    <task name='bake bread'>" +
-      "      <controller>" +
-               // empty access means this is a task instance local variable with no counterpart in the process variables.
-      "        <variable name='hero' access='' />" +
-      "      </controller>" +
-      "    </task>" +
-      "    <transition to='j' />" +
-      "  </task-node>" +
-      "  <task-node name='circenses'>" +
-      "    <task name='play monopoly'>" +
-      "      <controller>" +
-               // empty access means this is a task instance local variable with no counterpart in the process variables.
-      "        <variable name='hero' access='' />" +
-      "      </controller>" +
-      "    </task>" +
-      "    <transition to='j' />" +
-      "  </task-node>" +
-      "  <join name='j'>" +
-      "    <transition to='end' />" +
-      "  </join>" +
-      "  <end-state name='end' />" +
-      "</process-definition>"
-    );
-    jbpmContext.deployProcessDefinition(processDefinition);
-    try
-    {
-      newTransaction();
+    ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition"
+      + "  name='panem et circenses'>"
+      + "  <start-state name='start'>"
+      + "    <transition to='f' />"
+      + "  </start-state>"
+      + "  <fork name='f'>"
+      + "    <transition name='left'  to='panem' />"
+      + "    <transition name='right' to='circenses' />"
+      + "  </fork>"
+      + "  <task-node name='panem'>"
+      + "    <task name='bake bread'>"
+      + "      <controller>"
+      + "        <!-- empty access means this is a task-local variable -->"
+      + "        <!-- with no counterpart in the process variables -->"
+      + "        <variable name='hero' access='' />"
+      + "      </controller>"
+      + "    </task>"
+      + "    <transition to='j' />"
+      + "  </task-node>"
+      + "  <task-node name='circenses'>"
+      + "    <task name='play monopoly'>"
+      + "      <controller>"
+      + "        <variable name='hero' access='' />"
+      + "      </controller>"
+      + "    </task>"
+      + "    <transition to='j' />"
+      + "  </task-node>"
+      + "  <join name='j'>"
+      + "    <transition to='end' />"
+      + "  </join>"
+      + "  <end-state name='end' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-      ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("panem et circenses");
-      processInstance.signal();
+    ProcessInstance processInstance = jbpmContext.newProcessInstanceForUpdate("panem et circenses");
+    processInstance.signal();
 
-      newTransaction();
+    newTransaction();
+    TaskInstance breadTaskInstance = findTask("bake bread");
+    breadTaskInstance.setVariable("hero", "asterix");
+    jbpmContext.save(breadTaskInstance);
+    long breadTokenId = breadTaskInstance.getToken().getId();
 
-      TaskInstance breadTaskInstance = findTask("bake bread");
-      breadTaskInstance.setVariable("hero", "asterix");
-      jbpmContext.save(breadTaskInstance);
-      long breadTokenId = breadTaskInstance.getToken().getId();
+    newTransaction();
+    Token breadToken = jbpmContext.loadToken(breadTokenId);
+    ContextInstance contextInstance = breadToken.getProcessInstance().getContextInstance();
+    assertNull(contextInstance.getVariable("hero", breadToken));
 
-      newTransaction();
+    newTransaction();
+    breadTaskInstance = jbpmContext.loadTaskInstance(breadTaskInstance.getId());
+    assertEquals("asterix", breadTaskInstance.getVariable("hero"));
 
-      Token breadToken = jbpmContext.loadToken(breadTokenId);
-      ContextInstance contextInstance = breadToken.getProcessInstance().getContextInstance();
-      assertNull(contextInstance.getVariable("hero", breadToken));
+    newTransaction();
+    TaskInstance monopolyTaskInstance = findTask("play monopoly");
+    monopolyTaskInstance.setVariable("hero", "obelix");
+    jbpmContext.save(monopolyTaskInstance);
+    long monopolyTokenId = monopolyTaskInstance.getToken().getId();
 
-      newTransaction();
+    newTransaction();
+    monopolyTaskInstance = jbpmContext.loadTaskInstance(monopolyTaskInstance.getId());
+    assertEquals("obelix", monopolyTaskInstance.getVariable("hero"));
 
-      breadTaskInstance = jbpmContext.loadTaskInstance(breadTaskInstance.getId());
-      assertEquals("asterix", breadTaskInstance.getVariable("hero"));
+    newTransaction();
+    Token monopolyToken = jbpmContext.loadToken(monopolyTokenId);
+    contextInstance = monopolyToken.getProcessInstance().getContextInstance();
+    assertNull(contextInstance.getVariable("hero", monopolyToken));
 
-      newTransaction();
+    newTransaction();
+    breadTaskInstance = jbpmContext.loadTaskInstanceForUpdate(breadTaskInstance.getId());
+    breadTaskInstance.end();
 
-      TaskInstance monopolyTaskInstance = findTask("play monopoly");
-      monopolyTaskInstance.setVariable("hero", "obelix");
-      jbpmContext.save(monopolyTaskInstance);
-      long monopolyTokenId = monopolyTaskInstance.getToken().getId();
+    newTransaction();
+    monopolyTaskInstance = jbpmContext.loadTaskInstanceForUpdate(monopolyTaskInstance.getId());
+    monopolyTaskInstance.end();
 
-      newTransaction();
-
-      monopolyTaskInstance = jbpmContext.loadTaskInstance(monopolyTaskInstance.getId());
-      assertEquals("obelix", monopolyTaskInstance.getVariable("hero"));
-
-      newTransaction();
-
-      Token monopolyToken = jbpmContext.loadToken(monopolyTokenId);
-      contextInstance = monopolyToken.getProcessInstance().getContextInstance();
-      assertNull(contextInstance.getVariable("hero", monopolyToken));
-      
-      newTransaction();
-      
-      breadTaskInstance = jbpmContext.loadTaskInstanceForUpdate(breadTaskInstance.getId());
-      breadTaskInstance.end();
-
-      newTransaction();
-
-      monopolyTaskInstance = jbpmContext.loadTaskInstanceForUpdate(monopolyTaskInstance.getId());
-      monopolyTaskInstance.end();
-
-      newTransaction();
-
-      breadToken = jbpmContext.loadToken(breadTokenId);
-      monopolyToken = jbpmContext.loadToken(monopolyTokenId);
-      contextInstance = breadToken.getProcessInstance().getContextInstance();
-      assertNull(contextInstance.getVariable("hero", breadToken));
-      assertNull(contextInstance.getVariable("hero", monopolyToken));
-    }
-    finally
-    {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
-    
+    newTransaction();
+    breadToken = jbpmContext.loadToken(breadTokenId);
+    monopolyToken = jbpmContext.loadToken(monopolyTokenId);
+    contextInstance = breadToken.getProcessInstance().getContextInstance();
+    assertNull(contextInstance.getVariable("hero", breadToken));
+    assertNull(contextInstance.getVariable("hero", monopolyToken));
   }
 
-  TaskInstance findTask(String taskName) {
+  private TaskInstance findTask(String taskName) {
     Session session = jbpmContext.getSession();
     Criteria criteria = session.createCriteria(TaskInstance.class);
     criteria.add(Restrictions.eq("name", taskName));

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskVariablesDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskVariablesDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/java/org/jbpm/taskmgmt/exe/TaskVariablesDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -41,356 +41,305 @@
   public void testDefaultVariablePersistence() {
     ProcessDefinition processDefinition = ProcessDefinition.createNewProcessDefinition();
     processDefinition.setName("default variable persistence");
-    jbpmContext.deployProcessDefinition(processDefinition);
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      TaskInstance taskInstance = processInstance.getTaskMgmtInstance()
-          .createTaskInstance(processInstance.getRootToken());
-      taskInstance.setVariable("key", "value");
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    TaskInstance taskInstance = processInstance.getTaskMgmtInstance().createTaskInstance(
+      processInstance.getRootToken());
+    taskInstance.setVariable("key", "value");
 
-      taskInstance = saveAndReload(taskInstance);
-      assertNotNull(taskInstance);
-      assertEquals("value", taskInstance.getVariable("key"));
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    taskInstance = saveAndReload(taskInstance);
+    assertNotNull(taskInstance);
+    assertEquals("value", taskInstance.getVariable("key"));
   }
 
   public void testSetOnTaskInstanceGetOnProcess() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='set on task get on process'>"
-        + "  <start-state>"
-        + "    <transition to='t' />"
-        + "  </start-state>"
-        + "  <task-node name='t'>"
-        + "    <task name='vartask' />"
-        + "  </task-node>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='t' />"
+      + "  </start-state>"
+      + "  <task-node name='t'>"
+      + "    <task name='vartask' />"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
-      ContextInstance contextInstance = processInstance.getContextInstance();
-      TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
-          .getTaskInstances()
-          .iterator()
-          .next();
+    processInstance = saveAndReload(processInstance);
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator()
+      .next();
 
-      Map expectedVariables = new HashMap();
-      assertEquals(expectedVariables, taskInstance.getVariables());
+    Map expectedVariables = new HashMap();
+    assertEquals(expectedVariables, taskInstance.getVariables());
 
-      assertFalse(taskInstance.hasVariable("a"));
-      assertNull(taskInstance.getVariable("a"));
-      assertNull(contextInstance.getVariable("a"));
+    assertFalse(taskInstance.hasVariable("a"));
+    assertNull(taskInstance.getVariable("a"));
+    assertNull(contextInstance.getVariable("a"));
 
-      taskInstance.setVariable("a", "1");
+    taskInstance.setVariable("a", "1");
 
-      taskInstance = saveAndReload(taskInstance);
-      contextInstance = taskInstance.getContextInstance();
+    taskInstance = saveAndReload(taskInstance);
+    contextInstance = taskInstance.getContextInstance();
 
-      expectedVariables.put("a", "1");
-      assertEquals(expectedVariables, taskInstance.getVariables());
+    expectedVariables.put("a", "1");
+    assertEquals(expectedVariables, taskInstance.getVariables());
 
-      assertTrue(taskInstance.hasVariable("a"));
-      assertEquals("1", taskInstance.getVariable("a"));
-      assertEquals("1", contextInstance.getVariable("a"));
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertTrue(taskInstance.hasVariable("a"));
+    assertEquals("1", taskInstance.getVariable("a"));
+    assertEquals("1", contextInstance.getVariable("a"));
   }
 
   public void testSetOnProcessGetOnTaskInstance() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='set on process get on task'>"
-        + "  <start-state>"
-        + "    <transition to='t' />"
-        + "  </start-state>"
-        + "  <task-node name='t'>"
-        + "    <task name='vartask' />"
-        + "  </task-node>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='t' />"
+      + "  </start-state>"
+      + "  <task-node name='t'>"
+      + "    <task name='vartask' />"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
-      ContextInstance contextInstance = processInstance.getContextInstance();
-      contextInstance.setVariable("a", "1");
-      TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
-          .getTaskInstances()
-          .iterator()
-          .next();
+    processInstance = saveAndReload(processInstance);
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    contextInstance.setVariable("a", "1");
+    TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator()
+      .next();
 
-      taskInstance = saveAndReload(taskInstance);
-      Map expectedVariables = new HashMap();
-      expectedVariables.put("a", "1");
-      assertEquals(expectedVariables, taskInstance.getVariables());
+    taskInstance = saveAndReload(taskInstance);
+    Map expectedVariables = new HashMap();
+    expectedVariables.put("a", "1");
+    assertEquals(expectedVariables, taskInstance.getVariables());
 
-      taskInstance = saveAndReload(taskInstance);
-      contextInstance = taskInstance.getContextInstance();
+    taskInstance = saveAndReload(taskInstance);
+    contextInstance = taskInstance.getContextInstance();
 
-      assertTrue(taskInstance.hasVariable("a"));
-      assertEquals("1", taskInstance.getVariable("a"));
-      assertEquals("1", contextInstance.getVariable("a"));
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertTrue(taskInstance.hasVariable("a"));
+    assertEquals("1", taskInstance.getVariable("a"));
+    assertEquals("1", contextInstance.getVariable("a"));
   }
 
   public void testSetLocally() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='set locally'>"
-        + "  <start-state>"
-        + "    <transition to='t' />"
-        + "  </start-state>"
-        + "  <task-node name='t'>"
-        + "    <task name='vartask' />"
-        + "  </task-node>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='t' />"
+      + "  </start-state>"
+      + "  <task-node name='t'>"
+      + "    <task name='vartask' />"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
-      TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
-          .getTaskInstances()
-          .iterator()
-          .next();
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
+    TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator()
+      .next();
 
-      taskInstance = saveAndReload(taskInstance);
-      ContextInstance contextInstance = taskInstance.getContextInstance();
+    taskInstance = saveAndReload(taskInstance);
+    ContextInstance contextInstance = taskInstance.getContextInstance();
 
-      Map expectedVariables = new HashMap();
-      assertEquals(expectedVariables, taskInstance.getVariables());
-      assertFalse(taskInstance.hasVariable("a"));
-      assertNull(taskInstance.getVariable("a"));
-      assertNull(contextInstance.getVariable("a"));
+    Map expectedVariables = new HashMap();
+    assertEquals(expectedVariables, taskInstance.getVariables());
+    assertFalse(taskInstance.hasVariable("a"));
+    assertNull(taskInstance.getVariable("a"));
+    assertNull(contextInstance.getVariable("a"));
 
-      taskInstance.setVariableLocally("a", "1");
+    taskInstance.setVariableLocally("a", "1");
 
-      taskInstance = saveAndReload(taskInstance);
-      contextInstance = taskInstance.getContextInstance();
+    taskInstance = saveAndReload(taskInstance);
+    contextInstance = taskInstance.getContextInstance();
 
-      expectedVariables.put("a", "1");
-      assertEquals(expectedVariables, taskInstance.getVariables());
+    expectedVariables.put("a", "1");
+    assertEquals(expectedVariables, taskInstance.getVariables());
 
-      assertTrue(taskInstance.hasVariable("a"));
-      assertEquals("1", taskInstance.getVariable("a"));
-      assertNull(contextInstance.getVariable("a"));
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertTrue(taskInstance.hasVariable("a"));
+    assertEquals("1", taskInstance.getVariable("a"));
+    assertNull(contextInstance.getVariable("a"));
   }
 
   public void testCopyWithController() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='copy with controller'>"
-        + "  <start-state>"
-        + "    <transition to='t' />"
-        + "  </start-state>"
-        + "  <task-node name='t'>"
-        + "    <task name='vartask'>"
-        + "      <controller>"
-        + "        <variable name='a' />"
-        + "        <variable name='b' />"
-        + "      </controller>"
-        + "    </task>"
-        + "  </task-node>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='t' />"
+      + "  </start-state>"
+      + "  <task-node name='t'>"
+      + "    <task name='vartask'>"
+      + "      <controller>"
+      + "        <variable name='a' />"
+      + "        <variable name='b' />"
+      + "      </controller>"
+      + "    </task>"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      ContextInstance contextInstance = processInstance.getContextInstance();
-      contextInstance.setVariable("a", "1");
-      contextInstance.setVariable("b", "2");
-      contextInstance.setVariable("c", "3");
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    contextInstance.setVariable("a", "1");
+    contextInstance.setVariable("b", "2");
+    contextInstance.setVariable("c", "3");
 
-      processInstance.signal();
-      TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
-          .getTaskInstances()
-          .iterator()
-          .next();
+    processInstance.signal();
+    TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator()
+      .next();
 
-      taskInstance = saveAndReload(taskInstance);
+    taskInstance = saveAndReload(taskInstance);
 
-      Map expectedVariables = new HashMap();
-      expectedVariables.put("a", "1");
-      expectedVariables.put("b", "2");
-      expectedVariables.put("c", "3");
-      assertEquals(expectedVariables, taskInstance.getVariables());
+    Map expectedVariables = new HashMap();
+    expectedVariables.put("a", "1");
+    expectedVariables.put("b", "2");
+    expectedVariables.put("c", "3");
+    assertEquals(expectedVariables, taskInstance.getVariables());
 
-      taskInstance.setVariable("a", "1 modified");
-      taskInstance.setVariable("b", "2 modified");
-      taskInstance.setVariable("c", "3 modified");
+    taskInstance.setVariable("a", "1 modified");
+    taskInstance.setVariable("b", "2 modified");
+    taskInstance.setVariable("c", "3 modified");
 
-      taskInstance = saveAndReload(taskInstance);
+    taskInstance = saveAndReload(taskInstance);
 
-      expectedVariables.clear();
-      expectedVariables.put("a", "1 modified");
-      expectedVariables.put("b", "2 modified");
-      expectedVariables.put("c", "3 modified");
-      assertEquals(expectedVariables, taskInstance.getVariables());
+    expectedVariables.clear();
+    expectedVariables.put("a", "1 modified");
+    expectedVariables.put("b", "2 modified");
+    expectedVariables.put("c", "3 modified");
+    assertEquals(expectedVariables, taskInstance.getVariables());
 
-      taskInstance = saveAndReload(taskInstance);
-      contextInstance = taskInstance.getContextInstance();
+    taskInstance = saveAndReload(taskInstance);
+    contextInstance = taskInstance.getContextInstance();
 
-      expectedVariables.clear();
-      expectedVariables.put("a", "1"); // task instance had local copy for var a
-      expectedVariables.put("b", "2"); // task instance had local copy for var b
-      expectedVariables.put("c", "3 modified");
-      assertEquals(expectedVariables, contextInstance.getVariables());
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    expectedVariables.clear();
+    expectedVariables.put("a", "1"); // task instance had local copy for var a
+    expectedVariables.put("b", "2"); // task instance had local copy for var b
+    expectedVariables.put("c", "3 modified");
+    assertEquals(expectedVariables, contextInstance.getVariables());
   }
 
   public void testOverwriteNullValue() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='overwrite-null-value'>"
-        + "  <start-state>"
-        + "    <transition to='t' />"
-        + "  </start-state>"
-        + "  <task-node name='t'>"
-        + "    <task name='vartask'>"
-        + "      <controller>"
-        + "        <variable name='v' />"
-        + "      </controller>"
-        + "    </task>"
-        + "  </task-node>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='t' />"
+      + "  </start-state>"
+      + "  <task-node name='t'>"
+      + "    <task name='vartask'>"
+      + "      <controller>"
+      + "        <variable name='v' />"
+      + "      </controller>"
+      + "    </task>"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
 
-      processInstance = saveAndReload(processInstance);
-      TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
-          .getTaskInstances()
-          .iterator()
-          .next();
+    processInstance = saveAndReload(processInstance);
+    TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator()
+      .next();
 
-      assertNull(taskInstance.getVariable("v"));
-      taskInstance.setVariable("v", "facelets is great");
+    assertNull(taskInstance.getVariable("v"));
+    taskInstance.setVariable("v", "facelets is great");
 
-      taskInstance = saveAndReload(taskInstance);
-      assertEquals("facelets is great", taskInstance.getVariable("v"));
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    taskInstance = saveAndReload(taskInstance);
+    assertEquals("facelets is great", taskInstance.getVariable("v"));
   }
 
   public void testNewTaskInstanceVariablesWithoutController() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='task variables without controller'>"
-        + "  <start-state>"
-        + "    <transition to='t' />"
-        + "  </start-state>"
-        + "  <task-node name='t'>"
-        + "    <task name='vartask' />"
-        + "    <transition to='u' />"
-        + "  </task-node>"
-        + "  <state name='u' />"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='t' />"
+      + "  </start-state>"
+      + "  <task-node name='t'>"
+      + "    <task name='vartask' />"
+      + "    <transition to='u' />"
+      + "  </task-node>"
+      + "  <state name='u' />"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
-    newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
 
-      TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
-          .getTaskInstances()
-          .iterator()
-          .next();
-      taskInstance.setVariableLocally("a", "value-a");
-      taskInstance.setVariableLocally("b", "value-b");
+    TaskInstance taskInstance = (TaskInstance) processInstance.getTaskMgmtInstance()
+      .getTaskInstances()
+      .iterator()
+      .next();
+    taskInstance.setVariableLocally("a", "value-a");
+    taskInstance.setVariableLocally("b", "value-b");
 
-      taskInstance = saveAndReload(taskInstance);
-      ContextInstance contextInstance = taskInstance.getContextInstance();
+    taskInstance = saveAndReload(taskInstance);
+    ContextInstance contextInstance = taskInstance.getContextInstance();
 
-      assertFalse(contextInstance.hasVariable("a"));
-      assertFalse(contextInstance.hasVariable("b"));
+    assertFalse(contextInstance.hasVariable("a"));
+    assertFalse(contextInstance.hasVariable("b"));
 
-      assertEquals("value-a", taskInstance.getVariable("a"));
-      assertEquals("value-b", taskInstance.getVariable("b"));
+    assertEquals("value-a", taskInstance.getVariable("a"));
+    assertEquals("value-b", taskInstance.getVariable("b"));
 
-      taskInstance.end();
+    taskInstance.end();
 
-      assertEquals("value-a", contextInstance.getVariable("a"));
-      assertEquals("value-b", contextInstance.getVariable("b"));
+    assertEquals("value-a", contextInstance.getVariable("a"));
+    assertEquals("value-b", contextInstance.getVariable("b"));
 
-      taskInstance = saveAndReload(taskInstance);
-      contextInstance = taskInstance.getContextInstance();
+    taskInstance = saveAndReload(taskInstance);
+    contextInstance = taskInstance.getContextInstance();
 
-      assertEquals("value-a", contextInstance.getVariable("a"));
-      assertEquals("value-b", contextInstance.getVariable("b"));
-    }
-    finally {
-      jbpmContext.getGraphSession().deleteProcessDefinition(processDefinition.getId());
-    }
+    assertEquals("value-a", contextInstance.getVariable("a"));
+    assertEquals("value-b", contextInstance.getVariable("b"));
   }
 
   public void testTaskVariableQuery() {
     ProcessDefinition processDefinition = ProcessDefinition.parseXmlString("<process-definition name='task-variable-query'>"
-        + "  <start-state>"
-        + "    <transition to='t' />"
-        + "  </start-state>"
-        + "  <task-node name='t' create-tasks='no'>"
-        + "    <event type='node-enter'>"
-        + "      <action class='"
-        + CreateTasksAction.class.getName()
-        + "'/>"
-        + "    </event>"
-        + "    <task name='vartask'>"
-        + "      <assignment actor-id='me' />"
-        + "    </task>"
-        + "  </task-node>"
-        + "</process-definition>");
-    jbpmContext.deployProcessDefinition(processDefinition);
+      + "  <start-state>"
+      + "    <transition to='t' />"
+      + "  </start-state>"
+      + "  <task-node name='t' create-tasks='no'>"
+      + "    <event type='node-enter'>"
+      + "      <action class='"
+      + CreateTasksAction.class.getName()
+      + "'/>"
+      + "    </event>"
+      + "    <task name='vartask'>"
+      + "      <assignment actor-id='me' />"
+      + "    </task>"
+      + "  </task-node>"
+      + "</process-definition>");
+    deployProcessDefinition(processDefinition);
 
+    ProcessInstance processInstance = new ProcessInstance(processDefinition);
+    processInstance.signal();
+
     newTransaction();
-    try {
-      ProcessInstance processInstance = new ProcessInstance(processDefinition);
-      processInstance.signal();
+    assertEquals(5, jbpmContext.getTaskList("me").size());
 
-      newTransaction();
-      assertEquals(5, jbpmContext.getTaskList("me").size());
-
-      newTransaction();
-      TaskInstance task = getTask("index", 3, "me");
-      assertEquals(3, ((Long) task.getVariable("index")).longValue());
-    }
-    finally {
-      graphSession.deleteProcessDefinition(processDefinition.getId());
-    }
+    newTransaction();
+    TaskInstance task = getTask("index", 3, "me");
+    assertEquals(3, ((Long) task.getVariable("index")).longValue());
   }
 
   private TaskInstance getTask(String variableName, long variableValue, String actorId) {
-    return (TaskInstance) jbpmContext.getSession()
-        .createCriteria(TaskInstance.class)
-        .add(Restrictions.eq("actorId", actorId))
-        .createCriteria("variableInstances")
-        .add(Restrictions.eq("name", variableName))
-        .add(Restrictions.sqlRestriction("{alias}.LONGVALUE_ = ?", new Long(variableValue), Hibernate.LONG))
-        .uniqueResult();
+    return (TaskInstance) jbpmContext.getSession().createCriteria(TaskInstance.class).add(
+      Restrictions.eq("actorId", actorId)).createCriteria("variableInstances").add(
+      Restrictions.eq("name", variableName)).add(
+      Restrictions.sqlRestriction("{alias}.LONGVALUE_ = ?", new Long(variableValue),
+        Hibernate.LONG)).uniqueResult();
   }
 
   public static final class CreateTasksAction implements ActionHandler {
-
     private static final long serialVersionUID = 1L;
 
     public void execute(ExecutionContext executionContext) throws Exception {
@@ -403,6 +352,5 @@
         ti.setVariableLocally("index", new Long(index));
       }
     }
-
   }
 }

Deleted: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm.test.cfg.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm.test.cfg.xml	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm.test.cfg.xml	2010-03-18 20:29:41 UTC (rev 6230)
@@ -1,2 +0,0 @@
-<jbpm-configuration>
-</jbpm-configuration>

Added: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm1135/.gpd.timerprocess.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm1135/.gpd.timerprocess.xml	                        (rev 0)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm1135/.gpd.timerprocess.xml	2010-03-18 20:29:41 UTC (rev 6230)
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<root-container name="jbpm1135" width="880" height="621">
+  <node name="start" x="0" y="0" width="132" height="36">
+    <edge>
+      <label x="5" y="-10"/>
+    </edge>
+  </node>
+  <node name="firstNode" x="0" y="0" width="132" height="36">
+    <edge>
+      <label x="5" y="-10"/>
+    </edge>
+  </node>
+  <node name="secondNode" x="0" y="0" width="132" height="36">
+    <edge>
+      <label x="5" y="-10"/>
+    </edge>
+  </node>
+  <node name="end" x="0" y="0" width="132" height="36"/>
+</root-container>


Property changes on: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm1135/.gpd.timerprocess.xml
___________________________________________________________________
Name: svn:keywords
   + Id Revision
Name: svn:eol-style
   + native

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm1135/timerprocess.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm1135/timerprocess.xml	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm1135/timerprocess.xml	2010-03-18 20:29:41 UTC (rev 6230)
@@ -1,5 +1,5 @@
 <?xml version="1.0" encoding="UTF-8"?>
-<process-definition name="timerProcess" xmlns="urn:jbpm.org:jpdl-3.2"
+<process-definition name="jbpm1135" xmlns="urn:jbpm.org:jpdl-3.2"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="urn:jbpm.org:jpdl-3.2 http://jbpm.org/xsd/jpdl-3.2.xsd">
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm2094/processdefinition.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm2094/processdefinition.xml	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm2094/processdefinition.xml	2010-03-18 20:29:41 UTC (rev 6230)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="bpm_orchestration2">
+<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="jbpm2094">
 
   <start-state name="Start">
     <transition to="Receive Order"/>

Modified: jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm2787/processdefinition.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm2787/processdefinition.xml	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/core/src/test/resources/org/jbpm/jbpm2787/processdefinition.xml	2010-03-18 20:29:41 UTC (rev 6230)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 
-<process-definition xmlns="" name="prequalification">
+<process-definition xmlns="urn:jbpm.org:jpdl-3.2" name="jbpm2787">
 
   <start-state name="StartPrequalification">
     <transition to="InitializeVariables" />

Modified: jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/java/org/jbpm/examples/mail/MailTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/java/org/jbpm/examples/mail/MailTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/examples/src/test/java/org/jbpm/examples/mail/MailTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -36,8 +36,7 @@
 
 public class MailTest extends AbstractJbpmTestCase {
 
-  private static SimpleSmtpServer server;
-
+  static SimpleSmtpServer server;
   private static final String XML_DECL = "<?xml version='1.0'?>";
 
   public static Test suite() {

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Entity.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Entity.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Entity.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,9 +21,10 @@
  */
 package org.jbpm.identity;
 
-import java.io.*;
-import java.security.*;
-import java.util.*;
+import java.io.Serializable;
+import java.security.Permission;
+import java.util.HashSet;
+import java.util.Set;
 
 /**
  * common supertype for users, groups and memberships 
@@ -33,10 +34,10 @@
 
   private static final long serialVersionUID = 1L;
   
-  long id = 0;
-  protected String name = null;
-  /* permissions is a set of java.security.Permission's */
-  protected Set permissions = null;
+  private long id;
+  protected String name;
+  /* permissions is a set of java.security.Permission */
+  protected Set permissions;
   
   // constructors /////////////////////////////////////////////////////////////
   

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Group.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Group.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Group.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,7 +21,9 @@
  */
 package org.jbpm.identity;
 
-import java.util.*;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
 
 /**
  * group of users.  
@@ -45,10 +47,10 @@
 
   private static final long serialVersionUID = 1L;
 
-  protected String type = null;
-  protected Group parent = null;
-  protected Set children = null;
-  protected Set memberships = null;
+  protected String type;
+  protected Group parent;
+  protected Set children;
+  protected Set memberships;
 
   public Group() {
   }
@@ -100,9 +102,6 @@
     return users;
   }
 
-  public long getId() {
-    return id;
-  }
   public Set getMemberships() {
     return memberships;
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Membership.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Membership.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/Membership.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,27 +21,23 @@
  */
 package org.jbpm.identity;
 
-import java.io.*;
-
 /**
- * one association between user and a group.
- * The name of the membership represents the role-name that 
- * the user fullfills in the group.
- * A membership can be a position in an organisation, therefor 
- * permissions can be associated with a membership.
- * The name of the membership can be used as the role name.  Meaning 
- * which role does the user fullfill in the group.
+ * one association between user and a group. The name of the membership
+ * represents the role-name that the user fulfills in the group. A membership
+ * can be a position in an organisation, therefore permissions can be associated
+ * with a membership. The name of the membership can be used as the role name.
+ * Meaning which role does the user play in the group.
  */
-public class Membership extends Entity implements Serializable {
-  
+public class Membership extends Entity {
+
   private static final long serialVersionUID = 1L;
 
-  protected String role = null;
-  protected User user = null;
-  protected Group group = null;
-  
+  protected String role;
+  protected User user;
+  protected Group group;
+
   // constructors /////////////////////////////////////////////////////////////
-  
+
   public Membership() {
   }
 
@@ -62,24 +58,25 @@
   public void setUser(User user) {
     this.user = user;
   }
+
   public void setGroup(Group group) {
     this.group = group;
   }
 
   // getters //////////////////////////////////////////////////////////////////
 
-  public long getId() {
-    return id;
-  }
   public Group getGroup() {
     return group;
   }
+
   public User getUser() {
     return user;
   }
+
   public String getRole() {
     return role;
   }
+
   public void setRole(String role) {
     this.role = role;
   }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/User.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/User.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/User.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,8 +21,11 @@
  */
 package org.jbpm.identity;
 
-import java.security.*;
-import java.util.*;
+import java.security.Principal;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Iterator;
+import java.util.Set;
 
 /**
  * user or a system.
@@ -30,11 +33,11 @@
 public class User extends Entity implements Principal {
 
   private static final long serialVersionUID = 1L;
-  
-  protected String password = null;
-  protected String email = null;
-  protected Set memberships = null;
- 
+
+  protected String password;
+  protected String email;
+  protected Set memberships;
+
   public User() {
   }
 
@@ -43,18 +46,18 @@
   }
 
   public void addMembership(Membership membership) {
-    if (memberships==null) memberships = new HashSet();
+    if (memberships == null) memberships = new HashSet();
     memberships.add(membership);
     membership.setUser(this);
   }
-  
+
   public Set getGroupsForGroupType(String groupType) {
-    Set groups = new HashSet();
-    if(memberships!=null) {
-      Iterator iter = memberships.iterator();
-      while (iter.hasNext()) {
+    Set groups = Collections.EMPTY_SET;
+    if (memberships != null) {
+      for (Iterator iter = memberships.iterator(); iter.hasNext();) {
         Membership membership = (Membership) iter.next();
         if (groupType.equals(membership.getGroup().getType())) {
+          if (groups.isEmpty()) groups = new HashSet();
           groups.add(membership.getGroup());
         }
       }
@@ -63,12 +66,12 @@
   }
 
   public Set getGroupsForMembershipRole(String membershipRole) {
-    Set groups = new HashSet();
-    if(memberships!=null) {
-      Iterator iter = memberships.iterator();
-      while (iter.hasNext()) {
+    Set groups = Collections.EMPTY_SET;
+    if (memberships != null) {
+      for (Iterator iter = memberships.iterator(); iter.hasNext();) {
         Membership membership = (Membership) iter.next();
         if (membershipRole.equals(membership.getRole())) {
+          if (groups.isEmpty()) groups = new HashSet();
           groups.add(membership.getGroup());
         }
       }
@@ -79,16 +82,37 @@
   public void setPassword(String password) {
     this.password = password;
   }
+
   public String getPassword() {
     return password;
   }
+
   public Set getMemberships() {
     return memberships;
   }
+
   public String getEmail() {
     return email;
   }
+
   public void setEmail(String email) {
     this.email = email;
   }
+
+  public boolean equals(Object obj) {
+    if (this == obj) return true;
+    if (!(obj instanceof User)) return false;
+
+    User other = (User) obj;
+    return name != null ? name.equals(other.getName()) : false;
+  }
+
+  public int hashCode() {
+    return name != null ? name.hashCode() : System.identityHashCode(this);
+  }
+
+  public String toString() {
+    return "User(" + name + ")";
+  }
+
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/hibernate/IdentitySession.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/hibernate/IdentitySession.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/main/java/org/jbpm/identity/hibernate/IdentitySession.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -23,8 +23,6 @@
 
 import java.util.List;
 
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
 import org.hibernate.HibernateException;
 import org.hibernate.Session;
 import org.hibernate.Transaction;
@@ -39,12 +37,11 @@
 import org.jbpm.identity.User;
 import org.jbpm.identity.assignment.ExpressionSession;
 import org.jbpm.identity.security.IdentityService;
+import org.jbpm.persistence.JbpmPersistenceException;
 
 public class IdentitySession implements IdentityService, ExpressionSession {
 
-  private static final Log log = LogFactory.getLog(IdentitySession.class);
-
-  final Session session;
+  private final Session session;
   private Transaction transaction;
 
   public IdentitySession(Session session) {
@@ -53,7 +50,7 @@
 
   public IdentitySession() {
     JbpmContext jbpmContext = JbpmContext.getCurrentJbpmContext();
-    if (jbpmContext == null) throw new RuntimeException("no active jbpm context");
+    if (jbpmContext == null) throw new JbpmException("no active jbpm context");
 
     session = jbpmContext.getSession();
     if (session == null) throw new JbpmException("no active hibernate session");
@@ -63,10 +60,10 @@
 
   public Object verify(String userName, String pwd) {
     return session.createCriteria(User.class)
-        .setProjection(Projections.property("id"))
-        .add(Restrictions.eq("name", userName))
-        .add(Restrictions.eq("password", pwd))
-        .uniqueResult();
+      .setProjection(Projections.property("id"))
+      .add(Restrictions.eq("name", userName))
+      .add(Restrictions.eq("password", pwd))
+      .uniqueResult();
   }
 
   public User getUserById(Object userId) {
@@ -75,89 +72,84 @@
 
   // transaction convenience methods //////////////////////////////////////////
 
-  /** @deprecated */
   public Session getSession() {
     return session;
   }
 
-  /** @deprecated */
+  /** @deprecated call {@link #getSession()}.getTransaction() instead */
   public Transaction getTransaction() {
     return transaction;
   }
 
-  /** @deprecated */
+  /** @deprecated call {@link #getSession()}.beginTransaction() instead */
   public void beginTransaction() {
     try {
       transaction = session.beginTransaction();
     }
     catch (HibernateException e) {
-      log.error(e);
-      throw new RuntimeException("couldn't begin a transaction", e);
+      throw new JbpmPersistenceException("could not begin transaction", e);
     }
   }
 
-  /** @deprecated */
+  /** @deprecated call {@link #getSession()}.getTransaction().commit() instead */
   public void commitTransaction() {
     if (transaction == null) {
-      throw new RuntimeException("can't commit : no transaction started");
+      throw new JbpmException("cannot commit: no transaction started");
     }
     try {
       session.flush();
       transaction.commit();
     }
     catch (HibernateException e) {
-      log.error(e);
-      throw new RuntimeException("couldn't commit transaction", e);
+      throw new JbpmPersistenceException("could not commit transaction", e);
     }
     transaction = null;
   }
 
-  /** @deprecated */
+  /** @deprecated call {@link #getSession()}.getTransaction().rollback() instead */
   public void rollbackTransaction() {
     if (transaction == null) {
-      throw new RuntimeException("can't rollback : no transaction started");
+      throw new JbpmException("cannot rollback: no transaction started");
     }
     try {
       transaction.rollback();
     }
     catch (HibernateException e) {
-      log.error(e);
-      throw new RuntimeException("couldn't rollback transaction", e);
+      throw new JbpmPersistenceException("could not rollback transaction", e);
     }
     transaction = null;
   }
 
-  /** @deprecated */
+  /** @deprecated call {@link #getSession()}.getTransaction().commit() instead */
   public void commitTransactionAndClose() {
     commitTransaction();
     close();
   }
 
-  /** @deprecated */
+  /** @deprecated call {@link #getSession()}.getTransaction().rollback() instead */
   public void rollbackTransactionAndClose() {
     rollbackTransaction();
     close();
   }
 
-  /** @deprecated */
+  /** @deprecated call {@link #getSession()}.close() instead */
   public void close() {
     try {
       session.close();
     }
     catch (HibernateException e) {
-      log.error(e);
-      throw new RuntimeException("couldn't close the hibernate connection", e);
+      throw new JbpmPersistenceException("could not close hibernate session", e);
     }
   }
 
   // identity methods /////////////////////////////////////////////////////////
 
-  /** @deprecated use {@link #saveEntity(Entity)} instead */
+  /** @deprecated call {@link #saveEntity(Entity)} instead */
   public void saveUser(User user) {
     session.save(user);
   }
 
-  /** @deprecated use {@link #saveEntity(Entity)} instead */
+  /** @deprecated call {@link #saveEntity(Entity)} instead */
   public void saveGroup(Group group) {
     session.save(group);
   }
@@ -166,7 +158,7 @@
     session.save(entity);
   }
 
-  /** @deprecated use {@link #saveEntity(Entity)} instead */
+  /** @deprecated call {@link #saveEntity(Entity)} instead */
   public void saveMembership(Membership membership) {
     session.save(membership);
   }
@@ -179,12 +171,12 @@
     return (Group) session.load(Group.class, new Long(groupId));
   }
 
-  /** @deprecated use {@link #deleteEntity(Entity)} instead */
+  /** @deprecated call {@link #deleteEntity(Entity)} instead */
   public void deleteGroup(Group group) {
     session.delete(group);
   }
 
-  /** @deprecated use {@link #deleteEntity(Entity)} instead */
+  /** @deprecated call {@link #deleteEntity(Entity)} instead */
   public void deleteUser(User user) {
     session.delete(user);
   }
@@ -194,15 +186,17 @@
   }
 
   public User getUserByName(String userName) {
-    List users = session.createCriteria(User.class).add(Restrictions.eq("name", userName)).list();
-    return users.isEmpty() ? null : (User) users.get(0);
+    return (User) session.createCriteria(User.class)
+      .add(Restrictions.eq("name", userName))
+      .setMaxResults(1)
+      .uniqueResult();
   }
 
   public Group getGroupByName(String groupName) {
-    List groups = session.createCriteria(Group.class)
-        .add(Restrictions.eq("name", groupName))
-        .list();
-    return groups.isEmpty() ? null : (Group) groups.get(0);
+    return (Group) session.createCriteria(Group.class)
+      .add(Restrictions.eq("name", groupName))
+      .setMaxResults(1)
+      .uniqueResult();
   }
 
   public List getUsers() {
@@ -211,20 +205,20 @@
 
   public List getGroupNamesByUserAndGroupType(String userName, String groupType) {
     return session.createCriteria(Membership.class)
-        .createAlias("group", "g")
-        .createAlias("user", "u")
-        .add(Restrictions.eq("u.name", userName))
-        .add(Restrictions.eq("g.type", groupType))
-        .setProjection(Projections.property("g.name"))
-        .list();
+      .createAlias("group", "g")
+      .createAlias("user", "u")
+      .add(Restrictions.eq("u.name", userName))
+      .add(Restrictions.eq("g.type", groupType))
+      .setProjection(Projections.property("g.name"))
+      .list();
   }
 
   public User getUserByGroupAndRole(String groupName, String role) {
     return (User) session.createCriteria(Membership.class)
-        .createAlias("group", "g")
-        .add(Restrictions.eq("role", role))
-        .add(Restrictions.eq("g.name", groupName))
-        .setProjection(Projections.property("user"))
-        .uniqueResult();
+      .createAlias("group", "g")
+      .add(Restrictions.eq("role", role))
+      .add(Restrictions.eq("g.name", groupName))
+      .setProjection(Projections.property("user"))
+      .uniqueResult();
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/IdentityDbTestCase.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/IdentityDbTestCase.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/IdentityDbTestCase.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,83 +21,34 @@
  */
 package org.jbpm.identity;
 
-import org.hibernate.Session;
-import org.jbpm.JbpmContext;
 import org.jbpm.db.AbstractDbTestCase;
 import org.jbpm.identity.hibernate.IdentitySession;
 
-public abstract class IdentityDbTestCase extends AbstractDbTestCase
-{
+public abstract class IdentityDbTestCase extends AbstractDbTestCase {
+
   protected IdentitySession identitySession;
 
-  protected void tearDown() throws Exception
-  {
-    super.tearDown();
-    if (hasLeftOverRecords())
-    {
-      // We exit because subsequent tests start in an undefined state
-      System.exit(1);
-    }
+  protected void initializeMembers() {
+    super.initializeMembers();
+    identitySession = (IdentitySession) jbpmContext.getServices()
+      .getPersistenceService()
+      .getCustomSession(IdentitySession.class);
   }
 
-  private boolean hasLeftOverRecords()
-  {
-    boolean foundLeftOvers = false;
-    JbpmContext jbpmContext = getJbpmConfiguration().createJbpmContext();
-    Session session = jbpmContext.getSession();
-    try
-    {
-      if (session.createQuery("from " + Group.class.getName()).list().size() > 0)
-      {
-        System.err.println("FIXME: left over Group after: " + getShortName());
-        foundLeftOvers = true;
-      }
-      if (session.createQuery("from " + User.class.getName()).list().size() > 0)
-      {
-        System.err.println("FIXME: left over User after: " + getShortName());
-        foundLeftOvers = true;
-      }
-    }
-    catch (Exception ex)
-    {
-      System.err.println("FIXME: cannot query left overs: " + ex);
-    }
-    finally
-    {
-      jbpmContext.close();
-    }
-    return foundLeftOvers;
+  protected void resetMembers() {
+    super.resetMembers();
+    identitySession = null;
   }
-  
-  protected void initializeMembers()
-  {
-    super.initializeMembers();
-    identitySession = new IdentitySession(session);
-  }
 
-  protected User saveAndReload(User user)
-  {
+  protected User saveAndReload(User user) {
     identitySession.saveEntity(user);
     newTransaction();
     return identitySession.loadUser(user.getId());
   }
 
-  protected Group saveAndReload(Group group)
-  {
+  protected Group saveAndReload(Group group) {
     identitySession.saveEntity(group);
     newTransaction();
     return identitySession.loadGroup(group.getId());
   }
-  
-  protected void deleteGroup(long groupId)
-  {
-    Group group = identitySession.loadGroup(groupId);
-    identitySession.deleteEntity(group);
-  }
-  
-  protected void deleteUser(long userId)
-  {
-    User user = identitySession.loadUser(userId);
-    identitySession.deleteEntity(user);
-  }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/MembershipTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/MembershipTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/MembershipTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,9 +21,10 @@
  */
 package org.jbpm.identity;
 
-import java.util.*;
+import java.util.Iterator;
+import java.util.Set;
 
-import junit.framework.*;
+import junit.framework.TestCase;
 
 public class MembershipTest extends TestCase {
 

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/assignment/ExpressionAssignmentHandlerTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/assignment/ExpressionAssignmentHandlerTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/assignment/ExpressionAssignmentHandlerTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -21,8 +21,12 @@
  */
 package org.jbpm.identity.assignment;
 
+import java.util.Iterator;
 import java.util.Set;
 
+import org.jbpm.context.def.ContextDefinition;
+import org.jbpm.context.exe.ContextInstance;
+import org.jbpm.context.log.VariableLog;
 import org.jbpm.graph.def.ProcessDefinition;
 import org.jbpm.graph.exe.ExecutionContext;
 import org.jbpm.graph.exe.ProcessInstance;
@@ -30,7 +34,10 @@
 import org.jbpm.identity.IdentityDbTestCase;
 import org.jbpm.identity.Membership;
 import org.jbpm.identity.User;
+import org.jbpm.logging.exe.LoggingInstance;
+import org.jbpm.logging.log.ProcessLog;
 import org.jbpm.taskmgmt.def.Swimlane;
+import org.jbpm.taskmgmt.def.TaskMgmtDefinition;
 import org.jbpm.taskmgmt.exe.PooledActor;
 import org.jbpm.taskmgmt.exe.SwimlaneInstance;
 import org.jbpm.taskmgmt.exe.TaskInstance;
@@ -42,25 +49,24 @@
   ProcessInstance processInstance;
   ExecutionContext executionContext;
 
-  ProcessDefinition processDefinition;
   Membership membershipJohn, membershipBill;
   Group hellsangels;
   User john, bill;
 
   public void setUp() throws Exception {
     super.setUp();
+
     expressionAssignmentHandler = new ExpressionAssignmentHandler();
     setUpProcessInstance();
     setUpUserData();
-    newTransaction();
     jbpmContext.setActorId("bill");
   }
 
   protected void tearDown() throws Exception {
-    deleteUser(john.getId());
-    deleteUser(bill.getId());
-    deleteGroup(hellsangels.getId());
-    graphSession.deleteProcessDefinition(processDefinition.getId());
+    identitySession.deleteEntity(hellsangels);
+    identitySession.deleteEntity(john);
+    identitySession.deleteEntity(bill);
+
     super.tearDown();
   }
 
@@ -79,14 +85,15 @@
   }
 
   private void setUpProcessInstance() {
-    processDefinition = ProcessDefinition.parseXmlString("<process-definition/>");
-    graphSession.saveProcessDefinition(processDefinition);
-    processInstance = new ProcessInstance(processDefinition);
-    jbpmContext.save(processInstance);
-  }
+    TaskMgmtDefinition taskMgmtDefinition = new TaskMgmtDefinition();
+    taskMgmtDefinition.addSwimlane(new Swimlane("boss"));
 
-  protected void newTransaction() {
-    super.newTransaction();
+    ProcessDefinition processDefinition = new ProcessDefinition("exp");
+    processDefinition.addDefinition(taskMgmtDefinition);
+    processDefinition.addDefinition(new ContextDefinition());
+    deployProcessDefinition(processDefinition);
+
+    processInstance = jbpmContext.newProcessInstanceForUpdate("exp");
     executionContext = new ExecutionContext(processInstance.getRootToken());
   }
 
@@ -97,10 +104,11 @@
   }
 
   public void testFirstTermSwimlane() {
+    SwimlaneInstance swimlaneInstance = processInstance.getTaskMgmtInstance()
+      .createSwimlaneInstance("boss");
+    swimlaneInstance.setActorId("john");
+
     expressionAssignmentHandler.expression = "swimlane(boss)";
-    SwimlaneInstance swimlaneInstance = new SwimlaneInstance(new Swimlane("boss"));
-    swimlaneInstance.setActorId("john");
-    processInstance.getTaskMgmtInstance().addSwimlaneInstance(swimlaneInstance);
     expressionAssignmentHandler.assign(assignable, executionContext);
     assertEquals("john", assignable.getActorId());
   }
@@ -117,30 +125,47 @@
   }
 
   public void testFirstTermVariableString() {
+    processInstance.getContextInstance().setVariable("actoridstringvariable", "john");
+
     expressionAssignmentHandler.expression = "variable(actoridstringvariable)";
-    processInstance.getContextInstance().setVariable("actoridstringvariable", "john");
     expressionAssignmentHandler.assign(assignable, executionContext);
     assertEquals("john", assignable.getActorId());
   }
 
   public void testFirstTermVariableUser() {
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    contextInstance.setVariable("uservariable", john);
+
     expressionAssignmentHandler.expression = "variable(uservariable)";
-    User john = identitySession.getUserByName("john");
-    processInstance.getContextInstance().setVariable("uservariable", john);
     expressionAssignmentHandler.assign(assignable, executionContext);
     assertEquals("john", assignable.getActorId());
+
+    contextInstance.deleteVariable("uservariable");
+    deleteLogs(processInstance.getLoggingInstance(), VariableLog.class);
   }
 
   public void testFirstTermVariableGroup() {
+    ContextInstance contextInstance = processInstance.getContextInstance();
+    contextInstance.setVariable("groupvariable", hellsangels);
+
     expressionAssignmentHandler.expression = "variable(groupvariable)";
-    Group hellsangels = identitySession.getGroupByName("hellsangels");
-    processInstance.getContextInstance().setVariable("groupvariable", hellsangels);
     expressionAssignmentHandler.assign(assignable, executionContext);
+
     Set pooledActors = assignable.getPooledActors();
     PooledActor pooledActor = (PooledActor) pooledActors.iterator().next();
     assertEquals("hellsangels", pooledActor.getActorId());
+
+    contextInstance.deleteVariable("groupvariable");
+    deleteLogs(processInstance.getLoggingInstance(), VariableLog.class);
   }
 
+  private static void deleteLogs(LoggingInstance loggingInstance, Class logClass) {
+    for (Iterator i = loggingInstance.getLogs().iterator(); i.hasNext();) {
+      ProcessLog processLog = (ProcessLog) i.next();
+      if (logClass.isInstance(processLog)) i.remove();
+    }
+  }
+
   public void testFirstTermVariableUnexisting() {
     expressionAssignmentHandler.expression = "variable(unexistingvariablename)";
     try {
@@ -172,6 +197,7 @@
   public void testFirstTermGroup() {
     expressionAssignmentHandler.expression = "group(hellsangels)";
     expressionAssignmentHandler.assign(assignable, executionContext);
+
     Set pooledActors = assignable.getPooledActors();
     PooledActor pooledActor = (PooledActor) pooledActors.iterator().next();
     assertEquals("hellsangels", pooledActor.getActorId());
@@ -202,6 +228,7 @@
   public void testNextTermGroup() {
     expressionAssignmentHandler.expression = "user(john) --> group(hierarchy)";
     expressionAssignmentHandler.assign(assignable, executionContext);
+
     Set pooledActors = assignable.getPooledActors();
     PooledActor pooledActor = (PooledActor) pooledActors.iterator().next();
     assertEquals("hellsangels", pooledActor.getActorId());

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/hibernate/GroupDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/hibernate/GroupDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/hibernate/GroupDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -32,19 +32,17 @@
 import org.jbpm.identity.Membership;
 import org.jbpm.identity.User;
 
-public class GroupDbTest extends IdentityDbTestCase
-{
-  public void testGroup()
-  {
-    Group group = new Group("people with read hair");
+public class GroupDbTest extends IdentityDbTestCase {
+
+  public void testGroup() {
+    Group group = new Group("people with red hair");
     group = saveAndReload(group);
-    assertEquals("people with read hair", group.getName());
-    
-    deleteGroup(group.getId());
+    assertEquals("people with red hair", group.getName());
+
+    identitySession.deleteEntity(group);
   }
 
-  public void testGroupMemberships()
-  {
+  public void testGroupMemberships() {
     Group chicagoBulls = new Group("chicago bulls");
     User tyson = new User("tyson");
     User eddy = new User("eddy");
@@ -58,16 +56,20 @@
 
     chicagoBulls = saveAndReload(chicagoBulls);
     assertEquals(4, chicagoBulls.getUsers().size());
-    
-    deleteGroup(chicagoBulls.getId());
-    deleteUser(tyson.getId());
-    deleteUser(eddy.getId());
-    deleteUser(antonio.getId());
-    deleteUser(chris.getId());
+
+    tyson = identitySession.loadUser(tyson.getId());
+    eddy = identitySession.loadUser(eddy.getId());
+    antonio = identitySession.loadUser(antonio.getId());
+    chris = identitySession.loadUser(chris.getId());
+
+    identitySession.deleteEntity(chicagoBulls);
+    identitySession.deleteEntity(tyson);
+    identitySession.deleteEntity(eddy);
+    identitySession.deleteEntity(antonio);
+    identitySession.deleteEntity(chris);
   }
 
-  public void testGroupPermissions()
-  {
+  public void testGroupPermissions() {
     Group chicagoBulls = new Group("chicago bulls");
     chicagoBulls.addPermission(new SocketPermission("basket", "connect"));
     chicagoBulls.addPermission(new FilePermission("ticket", "write"));
@@ -75,12 +77,11 @@
     chicagoBulls = saveAndReload(chicagoBulls);
 
     assertEquals(2, chicagoBulls.getPermissions().size());
-    
-    deleteGroup(chicagoBulls.getId());
+
+    identitySession.deleteEntity(chicagoBulls);
   }
 
-  public void testGroups()
-  {
+  public void testGroups() {
     Group clowns = new Group("clowns");
     identitySession.saveEntity(clowns);
 
@@ -88,12 +89,11 @@
 
     clowns = identitySession.loadGroup(clowns.getId());
     assertEquals("clowns", clowns.getName());
-    
-    deleteGroup(clowns.getId());
+
+    identitySession.deleteEntity(clowns);
   }
 
-  public void testGroupChildren()
-  {
+  public void testGroupChildren() {
     Group clowns = new Group("clowns");
     clowns.addChild(new Group("cowboys"));
     clowns.addChild(new Group("indians"));
@@ -109,10 +109,10 @@
 
     Set childNames = new HashSet();
     Iterator iter = children.iterator();
-    Group child = (Group)iter.next();
+    Group child = (Group) iter.next();
     assertEquals("clowns", child.getParent().getName());
     childNames.add(child.getName());
-    child = (Group)iter.next();
+    child = (Group) iter.next();
     assertEquals("clowns", child.getParent().getName());
     childNames.add(child.getName());
 
@@ -122,6 +122,6 @@
 
     assertEquals(expectedChildNames, childNames);
 
-    deleteGroup(clowns.getId());
+    identitySession.deleteEntity(clowns);
   }
 }

Modified: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/hibernate/UserDbTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/hibernate/UserDbTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/java/org/jbpm/identity/hibernate/UserDbTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -38,7 +38,7 @@
     user = saveAndReload(user);
     assertEquals("johndoe", user.getName());
 
-    deleteUser(user.getId());
+    identitySession.deleteEntity(user);
   }
 
   public void testUserMemberships() {
@@ -51,15 +51,24 @@
     john = saveAndReload(john);
 
     Set groups = john.getGroupsForGroupType("hierarchy");
-
     assertEquals(2, groups.size());
-    assertEquals(2, groups.size());
-    assertTrue(containsGroup(groups, "qa team"));
-    assertTrue(containsGroup(groups, "marketing team"));
 
-    deleteGroup(marketingTeam.getId());
-    deleteGroup(qaTeam.getId());
-    deleteUser(john.getId());
+    Iterator groupIterator = groups.iterator();
+    Group group = (Group) groupIterator.next();
+    if ("qa team".equals(group.getName())) {
+      qaTeam = group;
+      marketingTeam = (Group) groupIterator.next();
+      assertEquals("marketing team", marketingTeam.getName());
+    }
+    else {
+      qaTeam = (Group) groupIterator.next();
+      marketingTeam = group;
+      assertEquals("qa team", qaTeam.getName());
+    }
+
+    identitySession.deleteEntity(john);
+    identitySession.deleteEntity(qaTeam);
+    identitySession.deleteEntity(marketingTeam);
   }
 
   public void testUserPermissions() {
@@ -68,12 +77,10 @@
     user.addPermission(new AllPermission("all", "everything"));
 
     user = saveAndReload(user);
-
     Set permissions = user.getPermissions();
-    assertNotNull(permissions);
     assertEquals(2, permissions.size());
 
-    deleteUser(user.getId());
+    identitySession.deleteEntity(user);
   }
 
   public void testVerifyWrongUser() {
@@ -83,22 +90,9 @@
   public void testVerifyValidPwd() {
     User user = new User("johndoe");
     user.setPassword("johnspwd");
+
     user = saveAndReload(user);
-    try {
-      assertEquals(new Long(user.getId()), identitySession.verify("johndoe", "johnspwd"));
-    }
-    finally {
-      deleteUser(user.getId());
-    }
+    assertEquals(new Long(user.getId()), identitySession.verify("johndoe", "johnspwd"));
+    identitySession.deleteEntity(user);
   }
-
-  private boolean containsGroup(Set groups, String groupName) {
-    for (Iterator i = groups.iterator(); i.hasNext();) {
-      Group group = (Group) i.next();
-      if (groupName.equals(group.getName())) {
-        return true;
-      }
-    }
-    return false;
-  }
 }

Deleted: jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/resources/ehcache.xml
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/resources/ehcache.xml	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/identity/src/test/resources/ehcache.xml	2010-03-18 20:29:41 UTC (rev 6230)
@@ -1,48 +0,0 @@
-<ehcache>
-    <!-- Sets the path to the directory where cache .data files are created.
-
-         If the path is a Java System Property it is replaced by
-         its value in the running VM.
-
-         The following properties are translated:
-         user.home - User's home directory
-         user.dir - User's current working directory
-         java.io.tmpdir - Default temp file path 
-    <diskStore path="java.io.tmpdir"/> -->
-
-    <!--Default Cache configuration. These will applied to caches programmatically created through
-        the CacheManager.
-
-        The following attributes are required:
-
-        maxElementsInMemory            - Sets the maximum number of objects that will be created in memory
-        eternal                        - Sets whether elements are eternal. If eternal,  timeouts are ignored and the
-                                         element is never expired.
-        overflowToDisk                 - Sets whether elements can overflow to disk when the in-memory cache
-                                         has reached the maxInMemory limit.
-
-        The following attributes are optional:
-        timeToIdleSeconds              - Sets the time to idle for an element before it expires.
-                                         i.e. The maximum amount of time between accesses before an element expires
-                                         Is only used if the element is not eternal.
-                                         Optional attribute. A value of 0 means that an Element can idle for infinity.
-                                         The default value is 0.
-        timeToLiveSeconds              - Sets the time to live for an element before it expires.
-                                         i.e. The maximum time between creation time and when an element expires.
-                                         Is only used if the element is not eternal.
-                                         Optional attribute. A value of 0 means that and Element can live for infinity.
-                                         The default value is 0.
-        diskPersistent                 - Whether the disk store persists between restarts of the Virtual Machine.
-                                         The default value is false.
-        diskExpiryThreadIntervalSeconds- The number of seconds between runs of the disk expiry thread. The default value
-                                         is 120 seconds.
-        -->
-
-    <defaultCache
-        maxElementsInMemory="100000"
-        eternal="true"
-        overflowToDisk="false"
-        diskPersistent="false"
-        />
-
-</ehcache>
\ No newline at end of file

Modified: jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/main/java/org/jbpm/sim/exe/JbpmSimulationExperimentRunner.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/main/java/org/jbpm/sim/exe/JbpmSimulationExperimentRunner.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/main/java/org/jbpm/sim/exe/JbpmSimulationExperimentRunner.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -52,17 +52,17 @@
    */  
   public void run(final String experimentConfigurationXml) {
     if (async) {
-      new Thread() {
+      new Thread(new Runnable() {
         public void run() {
           doTheJob(experimentConfigurationXml);
         }
-      }.start();
+      }).start();
     }
     else
       doTheJob(experimentConfigurationXml);
   }
   
-  private void doTheJob(String experimentConfigurationXmlPath) {
+  void doTheJob(String experimentConfigurationXmlPath) {
     ExperimentReader reader = new ExperimentReader(   
         new InputSource(this.getClass().getResourceAsStream(experimentConfigurationXmlPath)));
     JbpmSimulationExperiment experiment = reader.readExperiment();

Modified: jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/main/java/org/jbpm/sim/report/jasper/AbstractBaseJasperReport.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/main/java/org/jbpm/sim/report/jasper/AbstractBaseJasperReport.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/main/java/org/jbpm/sim/report/jasper/AbstractBaseJasperReport.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -14,6 +14,8 @@
 import javax.print.attribute.standard.MediaSizeName;
 import javax.print.attribute.standard.PrinterName;
 
+import org.jbpm.JbpmException;
+
 import net.sf.jasperreports.engine.JRException;
 import net.sf.jasperreports.engine.JRExporterParameter;
 import net.sf.jasperreports.engine.JasperExportManager;
@@ -28,19 +30,16 @@
 import net.sf.jasperreports.view.JasperViewer;
 
 /**
- * Helper class to instantiate, fill, show and print the
- * basic JasperReports report shipping with the simulation
- * framework.
+ * Helper class to instantiate, fill, show and print the basic JasperReports
+ * report shipping with the simulation framework.
  * 
- * Code basically copied from the jasper commands in the 
- * jbop framework (a development from camunda, 
- * unfortunately closed source).
+ * Code basically copied from the jasper commands in the jbop framework (a
+ * development from camunda, unfortunately closed source).
  * 
  * @author bernd.ruecker at camunda.com
  */
-public abstract class AbstractBaseJasperReport {  
+public abstract class AbstractBaseJasperReport {
 
-  
   private boolean initialized = false;
 
   private JasperReport mainReport;
@@ -57,12 +56,12 @@
   }
 
   public void printOnDefaultPrinter(boolean withPrintDialog) {
-    try {                   
+    try {
       JasperPrint jp = getJasperPrint();
-      JasperPrintManager.printPages(jp, 0, jp.getPages().size()-1, withPrintDialog);
+      JasperPrintManager.printPages(jp, 0, jp.getPages().size() - 1, withPrintDialog);
     }
     catch (JRException ex) {
-      throw new RuntimeException("report can not be filled! Please check nested exception for details.", ex);
+      throw new JbpmException("could not print report", ex);
     }
   }
 
@@ -72,7 +71,7 @@
 
     PrintServiceAttributeSet printServiceAttributeSet = new HashPrintServiceAttributeSet();
     printServiceAttributeSet.add(new PrinterName(printerName, null));
-    //printServiceAttributeSet.add(new PrinterName("HP LaserJet 4P", null));
+    // printServiceAttributeSet.add(new PrinterName("HP LaserJet 4P", null));
 
     JRPrintServiceExporter exporter = new JRPrintServiceExporter();
 
@@ -82,12 +81,12 @@
     exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PAGE_DIALOG, Boolean.FALSE);
     exporter.setParameter(JRPrintServiceExporterParameter.DISPLAY_PRINT_DIALOG, Boolean.FALSE);
 
-    try {                   
+    try {
       exporter.exportReport();
     }
     catch (JRException ex) {
-      throw new RuntimeException("report can not be filled and printed! Please check nested exception for details.", ex);
-    }               
+      throw new JbpmException("could not print report", ex);
+    }
   }
 
   public OutputStream getAsPDF() {
@@ -97,7 +96,7 @@
       return result;
     }
     catch (JRException ex) {
-      throw new RuntimeException("report can not be filled! Please check nested exception for details.", ex);
+      throw new JbpmException("could not export report to pdf", ex);
     }
   }
 
@@ -106,26 +105,29 @@
       return;
     }
     try {
-      InputStream resourceAsStream = this.getClass().getResourceAsStream(getReportPath());
-      if (resourceAsStream==null)
-        throw new RuntimeException("Report '" + getReportPath() + "' couldn't be loaded from classpath");
-      mainReport = (JasperReport) JRLoader.loadObject(resourceAsStream);
+      String resource = getReportPath();
+      InputStream reportStream = getClass().getResourceAsStream(resource);
+      if (reportStream == null) {
+        throw new JbpmException("report resource not found: " + resource);
+      }
+      mainReport = (JasperReport) JRLoader.loadObject(reportStream);
 
       Map subreports = getSubreportPaths();
       if (subreports != null) {
-        Iterator iter = subreports.keySet().iterator();
-        while (iter.hasNext()) {
-          String name = (String)iter.next();
-          resourceAsStream = this.getClass().getResourceAsStream( (String)subreports.get(name) );
-          if (resourceAsStream==null)
-            throw new RuntimeException("Subreport '" + subreports.get(name) + "' couldn't be loaded from classpath");
-          subReports.put(name, (JasperReport) JRLoader.loadObject(resourceAsStream));
+        for (Iterator iter = subreports.keySet().iterator(); iter.hasNext();) {
+          String subreport = (String) iter.next();
+          resource = (String) subreports.get(subreport);
+          reportStream = getClass().getResourceAsStream(resource);
+          if (reportStream == null) {
+            throw new JbpmException("report resource not found: " + subreports.get(subreport));
+          }
+          subReports.put(subreport, JRLoader.loadObject(reportStream));
         }
       }
       initialized = true;
     }
     catch (JRException ex) {
-      throw new RuntimeException("reports can not be loaded! Check nested exception for details.", ex);
+      throw new JbpmException("could not load report", ex);
     }
   }
 
@@ -134,22 +136,20 @@
       initReports();
       try {
         Map params = getReportParameters();
-        if (params == null)
-          params = new HashMap();
+        if (params == null) params = new HashMap();
 
         params.putAll(subReports);
 
-        jasperPrint = JasperFillManager.fillReport(mainReport, params, new JRBeanArrayDataSource(getContent()));
+        jasperPrint = JasperFillManager.fillReport(mainReport, params, new JRBeanArrayDataSource(
+          getContent()));
       }
       catch (JRException ex) {
-        throw new RuntimeException(
-            "report can not be filled! Please check nested exception for details.", ex);
+        throw new JbpmException("could not fill report", ex);
       }
     }
     return jasperPrint;
   }
 
-  
   public abstract String getReportPath();
 
   /**

Modified: jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/test/java/org/jbpm/sim/VariableSourceAndFilterTest.java
===================================================================
--- jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/test/java/org/jbpm/sim/VariableSourceAndFilterTest.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ jbpm3/branches/jbpm-3.2-soa/modules/simulation/src/test/java/org/jbpm/sim/VariableSourceAndFilterTest.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -49,8 +49,8 @@
       + "  <output path='target' />" // currently just used as parameter for DESMO-J      
       + "</experiment>";
 
-  private static boolean dataSourceIsCalled = false;
-  private static boolean dataFilterIsCalled = false;
+  static boolean dataSourceIsCalled = false;
+  static boolean dataFilterIsCalled = false;
 
   public static class TestProcessVariableSource implements ProcessDataSource {
 
@@ -120,7 +120,7 @@
       + "  <output path='target' />" // currently just used as parameter for DESMO-J      
       + "</experiment>";
 
-  private static int calledCount = 0;
+  static int calledCount = 0;
 
   public static class TestProcessVariableSourceExhausting implements ProcessDataSource {
 

Modified: projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/CancelActionListener.java
===================================================================
--- projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/CancelActionListener.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/CancelActionListener.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -1,6 +1,5 @@
 package org.jbpm.jsf.core.action;
 
-import java.util.Collection;
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.graph.exe.Token;
 import org.jbpm.jsf.JbpmActionListener;
@@ -43,14 +42,16 @@
             } else if (value instanceof Token) {
                 final Token token = ((Token) value);
                 token.end();
-                for (TaskInstance task : (Collection<TaskInstance>) token.getProcessInstance().getTaskMgmtInstance().getUnfinishedTasks(token)) {
+                for (Object element : token.getProcessInstance().getTaskMgmtInstance().getUnfinishedTasks(token)) {
+                    TaskInstance task = (TaskInstance) element;
                     task.cancel();
                 }
                 context.addSuccessMessage("Token ended");
             } else if (value instanceof ProcessInstance) {
                 final ProcessInstance processInstance = ((ProcessInstance) value);
                 processInstance.end();
-                for (TaskInstance task : (Collection<TaskInstance>) processInstance.getTaskMgmtInstance().getUnfinishedTasks(processInstance.getRootToken())) {
+                for (Object element : processInstance.getTaskMgmtInstance().getUnfinishedTasks(processInstance.getRootToken())) {
+                    TaskInstance task = (TaskInstance) element;
                     task.setSignalling(false);
                     task.cancel();
                 }

Modified: projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/GetDiagramInfoActionListener.java
===================================================================
--- projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/GetDiagramInfoActionListener.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/GetDiagramInfoActionListener.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -65,7 +65,7 @@
             final int nodeNodeListLength = nodeNodeList.getLength();
             for (int i = 0; i < nodeNodeListLength; i ++) {
                 final Node nodeNode = nodeNodeList.item(i);
-                if (nodeNode instanceof Node && nodeNode.getParentNode() == processDiagramElement) {
+                if (nodeNode.getParentNode() == processDiagramElement) {
                     final Element nodeElement = (Element) nodeNode;
                     final String nodeName = nodeElement.getAttribute("name");
                     final String nodeXString = nodeElement.getAttribute("x");

Modified: projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/ListTasksForProcessInstanceActionListener.java
===================================================================
--- projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/ListTasksForProcessInstanceActionListener.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/ListTasksForProcessInstanceActionListener.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -1,12 +1,10 @@
 package org.jbpm.jsf.core.action;
 
-import java.util.ArrayList;
+import java.util.Collection;
 import java.util.Collections;
-import java.util.List;
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.jsf.JbpmActionListener;
 import org.jbpm.jsf.JbpmJsfContext;
-import org.jbpm.taskmgmt.exe.TaskInstance;
 
 import javax.el.ELContext;
 import javax.el.ValueExpression;
@@ -31,9 +29,9 @@
             final FacesContext facesContext = FacesContext.getCurrentInstance();
             final ELContext elContext = facesContext.getELContext();
             final ProcessInstance processInstance = (ProcessInstance) processInstanceExpression.getValue(elContext);
-            final List<TaskInstance> taskList =
-                Collections.unmodifiableList(new ArrayList<TaskInstance>(processInstance.getTaskMgmtInstance().getTaskInstances()));
-            targetExpression.setValue(elContext, taskList);
+            Collection<?> taskInstances = processInstance.getTaskMgmtInstance().getTaskInstances();
+            taskInstances = Collections.unmodifiableCollection(taskInstances);
+            targetExpression.setValue(elContext, taskInstances);
             context.selectOutcome("success");
         } catch (Exception ex) {
             context.setError("Error loading task list", ex);

Modified: projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/StartProcessActionListener.java
===================================================================
--- projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/StartProcessActionListener.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/core/action/StartProcessActionListener.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -4,7 +4,6 @@
 import org.jbpm.graph.exe.ProcessInstance;
 import org.jbpm.jsf.JbpmActionListener;
 import org.jbpm.jsf.JbpmJsfContext;
-import org.jbpm.taskmgmt.exe.TaskInstance;
 import org.jbpm.taskmgmt.exe.TaskMgmtInstance;
 
 import javax.el.ELContext;
@@ -51,7 +50,8 @@
             context.addSuccessMessage("Started process");
 
             final TaskMgmtInstance taskMgmtInstance = instance.getTaskMgmtInstance();
-            final TaskInstance startTaskInstance = taskMgmtInstance.createStartTaskInstance();
+            // final TaskInstance startTaskInstance =
+            taskMgmtInstance.createStartTaskInstance();
 
             /* next piece causes NPE.
              * and i don't think it is needed to signal a new process automatically.  that can 

Modified: projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/identity/action/CreateGroupActionListener.java
===================================================================
--- projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/identity/action/CreateGroupActionListener.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/identity/action/CreateGroupActionListener.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -63,7 +63,7 @@
                 }
                 group.setType(typeValue.toString());
             }
-            identitySession.saveGroup(group);
+            identitySession.saveEntity(group);
             if (targetExpression != null) {
                 targetExpression.setValue(elContext, group);
             }

Modified: projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/identity/action/CreateUserActionListener.java
===================================================================
--- projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/identity/action/CreateUserActionListener.java	2010-03-18 12:06:08 UTC (rev 6229)
+++ projects/jsf-console/branches/jsf-console-3.2-soa/jbpm4jsf/src/main/java/org/jbpm/jsf/identity/action/CreateUserActionListener.java	2010-03-18 20:29:41 UTC (rev 6230)
@@ -71,7 +71,7 @@
                 }
                 user.setEmail(emailValue.toString());
             }
-            identitySession.saveUser(user);
+            identitySession.saveEntity(user);
             if (targetExpression != null) {
                 targetExpression.setValue(elContext, user);
             }



More information about the jbpm-commits mailing list