[jbpm-commits] JBoss JBPM SVN: r4866 - in jbpm4/trunk/modules: api/src/main/java/org/jbpm/api/activity and 25 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu May 21 03:42:27 EDT 2009


Author: tom.baeyens at jboss.com
Date: 2009-05-21 03:42:27 -0400 (Thu, 21 May 2009)
New Revision: 4866

Removed:
   jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/notification/
   jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/task/notification/
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/TaskAssign.java
Modified:
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/ExecutionService.java
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/activity/ExternalActivityBehaviour.java
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/client/ClientExecution.java
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/OpenExecution.java
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/OpenTask.java
   jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/TaskHandler.java
   jbpm4/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/internal/custom/WaitState.java
   jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/mail/template/TemplateMailTest.java
   jbpm4/trunk/modules/examples/src/test/resources/jbpm.mail.templates.examples.xml
   jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/mail/template/process.jpdl.xml
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/GroupActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailBinding.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StateActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/SignalCmd.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/VariablesCmd.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AttachmentTemplate.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailSessionImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/IdentitySessionImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/Signal.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ExecutionServiceImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/LifeCycleState.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/XmlUtil.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java
   jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/activities/WaitState.java
   jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/executionmode/embedded/WaitState.java
   jbpm4/trunk/modules/test-load/src/test/java/org/jbpm/test/load/async/ExclusiveMessagesTest.java
   jbpm4/trunk/modules/test-load/src/test/java/org/jbpm/test/load/async/WaitState.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/AutomaticDecisionTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/BasicExecutionFlowTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/EventTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExceptionHandlerTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExecutionStateTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExternalDecisionTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/FunctionalActivityTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/LoopingTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeStateTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeVariableDeclarationTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeVariableTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/SubProcessTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/VariableTest.java
   jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/WaitState.java
Log:
JBPM-2254 rolling back r4865.  build broken and not discussed api change.

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/ExecutionService.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/ExecutionService.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/ExecutionService.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -70,14 +70,14 @@
    * @param variables are the initial values of the process variables that
    *   will be set before the execution starts (read: before the initial
    *   activity is executed). */
-  ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, ?> variables);
+  ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, Object> variables);
 
   /** starts a new process instance in the latest version of the given processDefinitionName.
    * @param processDefinitionKey is the key of the process definition for which the latest version will be taken.
    * @param variables are the initial values of the process variables that will be set before the execution starts.
    * @param processInstanceKey is a user provided reference for the new execution that must be unique over all
    *    process versions with the same name. */
-  ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, ?> variables, String processInstanceKey);
+  ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, Object> variables, String processInstanceKey);
 
   /** the path of execution that is uniquely defined by the execution id. */
   Execution findExecutionById(String executionId);
@@ -92,10 +92,10 @@
   ProcessInstance signalExecutionById(String executionId, String signalName);
 
   /** provides a named external trigger to an execution with parameters. */
-  ProcessInstance signalExecutionById(String executionId, String signalName, Map<String, ?> parameters);
+  ProcessInstance signalExecutionById(String executionId, String signalName, Map<String, Object> parameters);
 
   /** provides a external trigger to an execution with parameters. */
-  ProcessInstance signalExecutionById(String executionId, Map<String, ?> parameters);
+  ProcessInstance signalExecutionById(String executionId, Map<String, Object> parameters);
 
 
   /** search for process instances with criteria */
@@ -105,7 +105,7 @@
   void setVariable(String executionId, String name, Object value);
 
   /** creates or overwrites the variable values on the referenced execution */
-  void setVariables(String executionId, Map<String, ?> variables);
+  void setVariables(String executionId, Map<String, Object> variables);
 
   /** retrieves a variable */
   Object getVariable(String executionId, String variableName);

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/activity/ExternalActivityBehaviour.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/activity/ExternalActivityBehaviour.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/activity/ExternalActivityBehaviour.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -64,5 +64,5 @@
    *   considered non recoverable.  After an Exception, the execution should not be 
    *   used any more and if this is during a transaction, the transaction should be 
    *   rolled back. */
-  void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) throws Exception;
+  void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception;
 }

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/client/ClientExecution.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/client/ClientExecution.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/client/ClientExecution.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -94,7 +94,7 @@
    * 
    * @see #signal() See the unnamed signal for more information
    */
-  void signal(Map<String, ?> parameters);
+  void signal(Map<String, Object> parameters);
 
   /** feeds a named {@link #signal() external trigger} into the execution with parameters.
    *
@@ -111,7 +111,7 @@
    * 
    * @see #signal() See the unnamed signal for more information
    */
-  void signal(String signalName, Map<String, ?> parameters);
+  void signal(String signalName, Map<String, Object> parameters);
 
   /** feeds a external trigger into the given execution.
    * 
@@ -154,7 +154,7 @@
    * 
    * @see #signal() See the unnamed signal for more information
    */
-  void signal(Map<String, ?> parameters, Execution execution);
+  void signal(Map<String, Object> parameters, Execution execution);
 
   /** feeds a named {@link #signal() external trigger} into a given execution with parameters.
    *
@@ -171,7 +171,7 @@
    * 
    * @see #signal() See the unnamed signal for more information
    */
-  void signal(String signalName, Map<String, ?> parameters, Execution execution);
+  void signal(String signalName, Map<String, Object> parameters, Execution execution);
 
   
   /** suspends this execution and all it's child executions.  Human tasks 

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/OpenExecution.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/OpenExecution.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/model/OpenExecution.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -21,6 +21,7 @@
  */
 package org.jbpm.api.model;
 
+import java.util.Collection;
 import java.util.Map;
 import java.util.Set;
 
@@ -28,6 +29,7 @@
 import org.jbpm.api.JbpmException;
 import org.jbpm.api.job.Timer;
 
+
 /** execution that opens up access to the related 
  * objects in the execution and process definition 
  * model.
@@ -76,7 +78,7 @@
    * variables will <b>not</b> be removed. 
    * @throws JbpmException is variables is not null and if null is present 
    * as a key in the provided variables map. */
-  void setVariables(Map<String, ?> variables);
+  void setVariables(Map<String, Object> variables);
 
   /** indicates presenve of the given key. 
    * No exception will be thrown if key is null. 

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/OpenTask.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/OpenTask.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/OpenTask.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -37,9 +37,6 @@
   /** fires a history event that marks the start of this task. */
   void historyTaskStart();
 
-  /** fires a history event that marks the assignment of this task. */
-  void historyTaskAssign(String userId);
-
   /** fires a history event that marks the completion of this task. */
   void historyTaskComplete(String outcome);
   

Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/TaskHandler.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/TaskHandler.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/task/TaskHandler.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -21,6 +21,7 @@
  */
 package org.jbpm.api.task;
 
+
 /** for advanced task customization.
  * 
  * The default implementation can be found in {@link DefaultTaskHandler}.
@@ -29,7 +30,7 @@
  */
 public class TaskHandler {
 
-  /** called after the task is created according 
+  /** is called after the task is created according 
    * to the task definition.  This method allows to 
    * create subtasks.
    * @return indicates if the process execution should wait. */
@@ -38,7 +39,7 @@
     return true;
   }
   
-  /** called when the related execution gets a 
+  /** is called when the related execution gets a 
    * signal.  this method must either 
    * {@link OpenTask#setSignalling(boolean) remove signalling} from this task
    * or {@link OpenTask#cancel(String) cancel} it. */
@@ -46,17 +47,12 @@
     task.setSignalling(false);
   }
   
-  /** called when the given task is assigned to an actor. */
-  public void taskAssign(OpenTask task, String userId) {
-    task.historyTaskAssign(userId);
-  }
-
-  /** called when the given task is cancelled. */ 
+  /** is called when this task is cancelled. */ 
   public void taskCancel(OpenTask task, String reason) {
     task.historyTaskCancel(reason);
   }
   
-  /** called when the given task completes.  The default behaviour 
+  /** is called when this task completes.  The default behaviour 
    * will send a signal to the execution if this task is still signalling. */
   public void taskComplete(OpenTask task, String outcome) {
     task.historyTaskComplete(outcome);

Modified: jbpm4/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/internal/custom/WaitState.java
===================================================================
--- jbpm4/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/internal/custom/WaitState.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/enterprise/src/test/java/org/jbpm/enterprise/internal/custom/WaitState.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -39,7 +39,7 @@
     execution.waitForSignal();
   }
 
-  public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters)
+  public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters)
       throws Exception {
     if (parameters != null) {
       execution.setVariables(parameters);

Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/mail/template/TemplateMailTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/mail/template/TemplateMailTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/mail/template/TemplateMailTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -98,7 +98,7 @@
       // start process instance
       executionService.startProcessInstanceByKey("TemplateMail", variables);
 
-      // examine produced messages
+      // examine produced message
       List<WiserMessage> wisMessages = wiser.getMessages();
       // winston, bb, innerparty(obrien), thinkpol(charr, obrien)
       assertEquals(5, wisMessages.size());

Modified: jbpm4/trunk/modules/examples/src/test/resources/jbpm.mail.templates.examples.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/jbpm.mail.templates.examples.xml	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/examples/src/test/resources/jbpm.mail.templates.examples.xml	2009-05-21 07:42:27 UTC (rev 4866)
@@ -4,29 +4,7 @@
 
   <process-engine-context>
 
-    <mail-template name='task-notification'>
-      <to users="${task.assignee}"/>
-      <subject>${task.name}</subject>
-      <text><![CDATA[Hi ${task.assignee},
-Task "${task.name}" has been assigned to you.
-${task.description}
-
-Sent by JBoss jBPM
-]]></text>
-    </mail-template>
-  
-    <mail-template name='task-reminder'>
-      <to users="${task.assignee}"/>
-      <subject>${task.name}</subject>
-      <text><![CDATA[Hey ${task.assignee},
-Do not forget about task "${task.name}".
-${task.description}
-
-Sent by JBoss jBPM
-]]></text>
-    </mail-template>
-
-    <mail-template name="rectify-template">
+    <mail-template name="rectify template">
       <to addresses="${addressee}" />
       <cc users="bb" groups="innerparty" />
       <bcc groups="thinkpol" />

Modified: jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/mail/template/process.jpdl.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/mail/template/process.jpdl.xml	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/mail/template/process.jpdl.xml	2009-05-21 07:42:27 UTC (rev 4866)
@@ -6,7 +6,7 @@
     <transition to="send rectify note" />
   </start>
 
-  <mail name="send rectify note" template="rectify-template">
+  <mail name="send rectify note" template="rectify template">
     <transition to="end" />
   </mail>
 

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/GroupActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/GroupActivity.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/GroupActivity.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -83,7 +83,7 @@
     return startActivities;
   }
 
-  public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) throws Exception {
+  public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {
     Transition transition = null;
     Activity activity = execution.getActivity();
     List<Transition> outgoingTransitions = activity.getOutgoingTransitions();

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailBinding.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailBinding.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailBinding.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -23,7 +23,14 @@
 
 import org.w3c.dom.Element;
 
-import org.jbpm.jpdl.internal.xml.JpdlParser;
+import org.jbpm.api.env.Environment;
+import org.jbpm.pvm.internal.email.impl.MailProducerImpl;
+import org.jbpm.pvm.internal.email.impl.MailTemplate;
+import org.jbpm.pvm.internal.email.impl.MailTemplateRegistry;
+import org.jbpm.pvm.internal.email.spi.MailProducer;
+import org.jbpm.pvm.internal.util.XmlUtil;
+import org.jbpm.pvm.internal.wire.binding.MailTemplateBinding;
+import org.jbpm.pvm.internal.wire.binding.ObjectBinding;
 import org.jbpm.pvm.internal.xml.Parse;
 import org.jbpm.pvm.internal.xml.Parser;
 
@@ -32,13 +39,48 @@
  */
 public class MailBinding extends JpdlBinding {
 
+  private static final ObjectBinding objectBinding = new ObjectBinding();
+  private static final MailTemplateBinding templateBinding = new MailTemplateBinding();
+
   public MailBinding() {
     super("mail");
   }
 
   public Object parse(Element element, Parse parse, Parser parser) {
     MailActivity activity = new MailActivity();
-    activity.setMailProducer(JpdlParser.parseMailProducer(element, parse, null));
+    activity.setMailProducer(parseProducer(element, parse, parser));
     return activity;
   }
+
+  protected MailProducer parseProducer(Element element, Parse parse, Parser parser) {
+    // check whether the element is a generic object descriptor
+    if (ObjectBinding.isObjectDescriptor(element)) {
+      return (MailProducer) objectBinding.parse(element, parse, parser);
+    }
+
+    // parse the default producer
+    MailProducerImpl mailProducer = new MailProducerImpl();
+    mailProducer.setTemplate(parseTemplate(element, parse, parser));
+    return mailProducer;
+  }
+
+  protected MailTemplate parseTemplate(Element element, Parse parse, Parser parser) {
+    MailTemplate template;
+
+    // look for template reference
+    String templateName = XmlUtil.attribute(element, "template");
+    if (templateName != null) {
+      // load template from configuration
+      MailTemplateRegistry templateRegistry = Environment.getFromCurrent(MailTemplateRegistry.class);
+      template = templateRegistry.getTemplate(templateName);
+      if (template == null) {
+        parse.addProblem("mail template not found: " + templateName, element);
+      }
+    }
+    else {
+      // parse inline template
+      template = templateBinding.parseMailTemplate(element, parse, parser);
+    }
+    return template;
+  }
 }

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StateActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StateActivity.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/StateActivity.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -40,7 +40,7 @@
     execution.waitForSignal();
   }
 
-  public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+  public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
     Activity activity = execution.getActivity();
     
     if (parameters!=null) {

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/SubProcessActivity.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -87,7 +87,7 @@
     execution.waitForSignal();
   }
 
-  public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+  public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
     JpdlExecution jpdlExecution = execution.getExtension(JpdlExecution.class);
 
     ExecutionImpl subProcessInstance = jpdlExecution.getSubProcessInstance();

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/TaskActivity.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -61,7 +61,7 @@
     }
   }
   
-  public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+  public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
     Activity activity = execution.getActivity();
     
     if (parameters!=null) {

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/xml/JpdlParser.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -38,10 +38,6 @@
 import org.jbpm.internal.log.Log;
 import org.jbpm.jpdl.internal.activity.JpdlBinding;
 import org.jbpm.jpdl.internal.model.JpdlProcessDefinition;
-import org.jbpm.pvm.internal.email.impl.MailProducerImpl;
-import org.jbpm.pvm.internal.email.impl.MailTemplate;
-import org.jbpm.pvm.internal.email.impl.MailTemplateRegistry;
-import org.jbpm.pvm.internal.email.spi.MailProducer;
 import org.jbpm.pvm.internal.model.ActivityCoordinatesImpl;
 import org.jbpm.pvm.internal.model.ActivityImpl;
 import org.jbpm.pvm.internal.model.CompositeElementImpl;
@@ -62,10 +58,6 @@
 import org.jbpm.pvm.internal.util.ReflectUtil;
 import org.jbpm.pvm.internal.util.XmlUtil;
 import org.jbpm.pvm.internal.wire.Descriptor;
-import org.jbpm.pvm.internal.wire.WireContext;
-import org.jbpm.pvm.internal.wire.WireDefinition;
-import org.jbpm.pvm.internal.wire.binding.MailTemplateBinding;
-import org.jbpm.pvm.internal.wire.binding.ObjectBinding;
 import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
 import org.jbpm.pvm.internal.wire.operation.Operation;
 import org.jbpm.pvm.internal.wire.xml.WireParser;
@@ -469,13 +461,6 @@
   
     JpdlParser.parseAssignmentAttributes(element, taskDefinition, parse);
     
-    // parse notification mail producer
-    Element notificationElement = XmlUtil.element(element, "notification");
-    if (notificationElement != null) {
-      MailProducer mailProducer = parseMailProducer(notificationElement, parse, "task-notification");
-      taskDefinition.setNotificationMailProducer(mailProducer);
-    }
-
     return taskDefinition;
   }
 
@@ -567,49 +552,4 @@
     return variableOutDefinitionSet;
   }
 
-  public static MailProducer parseMailProducer(Element element, Parse parse,
-      String defaultTemplateName) {
-    // check whether the element is a generic object descriptor
-    if (ObjectBinding.isObjectDescriptor(element)) {
-      // TODO test custom mail producer
-      ObjectDescriptor objectDescriptor = parseObjectDescriptor(element, parse);
-      WireDefinition wireDefinition = parse.findObject(WireDefinition.class);
-      return (MailProducer) objectDescriptor.construct(new WireContext(wireDefinition));
-    }
-
-    // parse the default producer
-    MailProducerImpl mailProducer = new MailProducerImpl();
-    mailProducer.setTemplate(parseMailTemplate(element, parse, defaultTemplateName));
-    return mailProducer;
-  }
-
-  private static MailTemplate parseMailTemplate(Element element, Parse parse,
-      String defaultTemplateName) {
-    if (element.hasAttribute("template")) {
-      // fetch template from configuration
-      return findTemplate(element, parse, element.getAttribute("template"));
-    }
-    if (!XmlUtil.isTextOnly(element)) {
-      // parse inline template
-      return MailTemplateBinding.parseMailTemplate(element, parse);
-    }
-    if (defaultTemplateName != null) {
-      // fetch default template
-      return findTemplate(element, parse, defaultTemplateName);
-    }
-    parse.addProblem("mail template must be referenced in the 'template' attribute "
-        + "or specified inline", element);
-    return null;
-  }
-
-  private static MailTemplate findTemplate(Element element, Parse parse, String templateName) {
-    MailTemplateRegistry templateRegistry = Environment.getFromCurrent(MailTemplateRegistry.class);
-    if (templateRegistry != null) {
-      MailTemplate template = templateRegistry.getTemplate(templateName);
-      if (template != null) return template;
-    }
-    parse.addProblem("mail template not found: " + templateName, element);
-    return null;
-  }
-  
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/SignalCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/SignalCmd.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/SignalCmd.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -38,9 +38,9 @@
 
   protected String executionId;
   protected String signalName;
-  protected Map<String, ?> parameters;
+  protected Map<String, Object> parameters;
 
-  public SignalCmd(String executionId, String signalName, Map<String, ?> parameters) {
+  public SignalCmd(String executionId, String signalName, Map<String, Object> parameters) {
     if (executionId==null) {
       throw new JbpmException("executionId is null");
     }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/StartProcessInstanceInLatestCmd.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -25,12 +25,14 @@
 
 import org.hibernate.Session;
 import org.jbpm.api.JbpmException;
+import org.jbpm.api.ProcessDefinitionQuery;
 import org.jbpm.api.ProcessInstance;
 import org.jbpm.api.client.ClientProcessDefinition;
 import org.jbpm.api.client.ClientProcessInstance;
 import org.jbpm.api.env.Environment;
 import org.jbpm.api.session.RepositorySession;
 
+
 /**
  * @author Tom Baeyens
  */
@@ -41,13 +43,13 @@
   protected String processDefinitionKey;
   protected String executionKey;
 
-  public StartProcessInstanceInLatestCmd(String processDefinitionKey, Map<String, ?> variables, String executionKey) {
+  public StartProcessInstanceInLatestCmd(String processDefinitionKey, Map<String, Object> variables, String executionKey) {
     if (processDefinitionKey==null) {
       throw new JbpmException("processDefinitionKey is null");
     }
     this.processDefinitionKey = processDefinitionKey;
+    this.variables = variables;
     this.executionKey = executionKey;
-    setVariables(variables);
   }
   
   public ProcessInstance execute(Environment environment) throws Exception {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/VariablesCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/VariablesCmd.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/cmd/VariablesCmd.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -36,32 +36,28 @@
 
   private static final long serialVersionUID = 1L;
 
-  protected Map<String, ?> variables;
-  private Map<String, Object> internalMap;
+  protected Map<String, Object> variables;
 
   public void addVariable(String key, Object variable) {
-    if (internalMap == null) {
-      if (variables != null) {
-        throw new JbpmException("variables were set externally");
-      }
-      variables = internalMap = new HashMap<String, Object>();
+    if (variables==null) {
+      variables = new HashMap<String, Object>();
     }
-    internalMap.put(key, variable);
+    variables.put(key, variable);
   }
 
-  public Map<String, ?> getVariables() {
+  public Map<String, Object> getVariables() {
     return variables;
   }
 
-  public void setVariables(Map<String, ?> variables) {
+  public void setVariables(Map<String, Object> variables) {
     this.variables = variables;
   }
-
+  
   protected ClientExecution getExecution(Environment environment, String executionId) {
     PvmDbSession dbSession = environment.get(PvmDbSession.class);
     ClientExecution execution = dbSession.findExecutionById(executionId);
-    if (execution == null) {
-      throw new JbpmException("execution " + executionId + " doesn't exist");
+    if (execution==null) {
+      throw new JbpmException("execution "+executionId+" doesn't exist");
     }
     return execution;
   }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AttachmentTemplate.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AttachmentTemplate.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AttachmentTemplate.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -21,6 +21,8 @@
  */
 package org.jbpm.pvm.internal.email.impl;
 
+import java.net.URL;
+
 /**
  * @author Alejandro Guizar
  */

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -83,16 +83,9 @@
     return new MimeMessage((Session) null);
   }
 
-  /**
-   * Fills the <code>from</code> attribute of the given email. The sender addresses are an optional
-   * element in the mail template. If absent, each mail server supplies the current user's email
-   * address.
-   * 
-   * @see {@link InternetAddress#getLocalAddress(Session)}
-   */
   protected void fillFrom(Execution execution, Message email) {
     AddressTemplate fromTemplate = template.getFrom();
-    // "from" attribute is optional
+    // from field is optional; if absent, each mail server will supply its "local address"
     if (fromTemplate == null) return;
 
     // resolve and parse addresses
@@ -136,10 +129,7 @@
   }
 
   private String[] tokenizeActors(String recipients, Execution execution) {
-    String[] actors = evaluateExpression(recipients, execution).split("[,|\\s]+");
-    if (actors.length == 0)
-      throw new JbpmException("recipient list is empty: " + recipients);
-    return actors;
+    return evaluateExpression(recipients, execution).split("[,|\\s]+");
   }
 
   /** construct recipient addresses from user entities */
@@ -229,20 +219,16 @@
   }
 
   protected void fillSubject(Execution execution, Message email) {
-    String subject = template.getSubject();
-    if (subject != null) {
-      subject = evaluateExpression(subject, execution);
-      try {
-        email.setSubject(subject);
-      }
-      catch (MessagingException e) {
-        throw new JbpmException("failed to set subject to " + subject, e);
-      }
+    String subject = evaluateExpression(template.getSubject(), execution);
+    try {
+      email.setSubject(subject);
     }
+    catch (MessagingException e) {
+      throw new JbpmException("failed to set subject to " + subject, e);
+    }
   }
 
   protected void fillContent(Execution execution, Message email) {
-    String text = template.getText();
     String html = template.getHtml();
     List<AttachmentTemplate> attachmentTemplates = template.getAttachmentTemplates();
 
@@ -251,9 +237,9 @@
       Multipart multipart = new MimeMultipart("related");
 
       // text
-      if (text != null) {
+      if (template.getText() != null) {
         BodyPart textPart = new MimeBodyPart();
-        text = evaluateExpression(text, execution);
+        String text = evaluateExpression(template.getText(), execution);
         try {
           textPart.setText(text);
           multipart.addBodyPart(textPart);
@@ -288,9 +274,9 @@
         throw new JbpmException("failed to set multipart content: " + multipart, e);
       }
     }
-    else if (text != null) {
+    else {
       // unipart
-      text = evaluateExpression(text, execution);
+      String text = evaluateExpression(template.getText(), execution);
       try {
         email.setText(text);
       }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailSessionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailSessionImpl.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailSessionImpl.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -10,6 +10,7 @@
 import javax.mail.Transport;
 import javax.mail.Message.RecipientType;
 import javax.mail.internet.InternetAddress;
+import javax.mail.internet.MimeMessage;
 
 import org.jbpm.api.JbpmException;
 import org.jbpm.pvm.internal.email.spi.MailSession;

Deleted: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/TaskAssign.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/TaskAssign.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/history/events/TaskAssign.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -1,44 +0,0 @@
-/*
- * JBoss, Home of Professional Open Source
- * Copyright 2005, JBoss Inc., and individual contributors as indicated
- * by the @authors tag. See the copyright.txt in the distribution for a
- * full listing of individual contributors.
- *
- * This is free software; you can redistribute it and/or modify it
- * under the terms of the GNU Lesser General Public License as
- * published by the Free Software Foundation; either version 2.1 of
- * the License, or (at your option) any later version.
- *
- * This software is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this software; if not, write to the Free
- * Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
- * 02110-1301 USA, or see the FSF site: http://www.fsf.org.
- */
-package org.jbpm.pvm.internal.history.events;
-
-import org.jbpm.pvm.internal.history.HistoryEvent;
-
-/**
- * @author Alejandro Guizar
- */
-public class TaskAssign extends HistoryEvent {
-
-  private static final long serialVersionUID = 1L;
-
-  protected String userId;
-
-  public TaskAssign(String userId) {
-    this.userId = userId;
-  }
-
-  @Override
-  public void process() {
-    // TODO
-  }
-
-}

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/IdentitySessionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/IdentitySessionImpl.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/IdentitySessionImpl.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -21,10 +21,9 @@
  */
 package org.jbpm.pvm.internal.identity.impl;
 
-import java.util.Arrays;
 import java.util.List;
 
-import org.hibernate.Criteria;
+import org.hibernate.Query;
 import org.hibernate.Session;
 import org.hibernate.criterion.Projections;
 import org.hibernate.criterion.Restrictions;
@@ -40,8 +39,7 @@
 
   protected Session session;
 
-  public String createUser(String userName, String givenName, String familyName,
-      String businessEmail) {
+  public String createUser(String userName, String givenName, String familyName, String businessEmail) {
     UserImpl user = new UserImpl(userName, givenName, familyName);
     user.setBusinessEmail(businessEmail);
     session.save(user);
@@ -56,11 +54,7 @@
   }
 
   public List<User> findUsersById(String... userIds) {
-    List users = session.createCriteria(UserImpl.class).add(Restrictions.in("id", userIds)).list();
-    if (userIds.length != users.size()) {
-      throw new JbpmException("not all users were found: " + Arrays.toString(userIds));
-    }
-    return users;
+    return session.createCriteria(UserImpl.class).add(Restrictions.in("id", userIds)).list();
   }
 
   public List<User> findUsers() {
@@ -72,9 +66,12 @@
     User user = findUserById(userId);
 
     // cascade the deletion to the memberships 
-    List<MembershipImpl> memberships = session.createCriteria(MembershipImpl.class)
-        .add(Restrictions.eq("user", user))
-        .list();
+    Query query = session.createQuery("from "
+        + MembershipImpl.class.getName()
+        + " as m "
+        + "where m.user is :user");
+    query.setEntity("user", user);
+    List<MembershipImpl> memberships = query.list();
 
     // delete the related memberships 
     for (MembershipImpl membership : memberships) {
@@ -111,33 +108,43 @@
   }
 
   public GroupImpl findGroupById(String groupId) {
-    return (GroupImpl) session.createCriteria(GroupImpl.class)
-        .add(Restrictions.eq("id", groupId))
-        .uniqueResult();
+    GroupImpl group = (GroupImpl) session.createQuery("select group "
+        + "from "
+        + GroupImpl.class.getName()
+        + " as group "
+        + "where group.id = '"
+        + groupId
+        + "'").uniqueResult();
+    return group;
   }
 
   public List<Group> findGroupsByUserAndGroupType(String userId, String groupType) {
-    return session.createCriteria(MembershipImpl.class)
-        .createAlias("user", "u")
-        .createAlias("group", "g")
-        .add(Restrictions.eq("u.id", userId))
-        .add(Restrictions.eq("g.type", groupType))
-        .setProjection(Projections.property("group"))
-        .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
-        .list();
+    Query query = session.createQuery("select distinct membership.group "
+        + "from "
+        + MembershipImpl.class.getName()
+        + " as membership "
+        + "where membership.user.id = '"
+        + userId
+        + "'"
+        + "  and membership.group.type = '"
+        + groupType
+        + "'");
+    return query.list();
   }
 
   public List<Group> findGroupsByUser(String userId) {
-    return session.createCriteria(MembershipImpl.class)
-        .createAlias("user", "u")
-        .add(Restrictions.eq("u.id", userId))
-        .setProjection(Projections.property("group"))
-        .setResultTransformer(Criteria.DISTINCT_ROOT_ENTITY)
-        .list();
+    Query query = session.createQuery("select distinct membership.group "
+        + "from "
+        + MembershipImpl.class.getName()
+        + " as membership "
+        + "where membership.user.id = '"
+        + userId
+        + "'");
+    return query.list();
   }
 
   public List<Group> findGroups() {
-    return session.createCriteria(GroupImpl.class).list();
+    return session.createQuery("from " + GroupImpl.class.getName()).list();
   }
 
   public void deleteGroup(String groupId) {
@@ -145,9 +152,12 @@
     GroupImpl group = findGroupById(groupId);
 
     // cascade the deletion to the memberships 
-    List<MembershipImpl> memberships = session.createCriteria(MembershipImpl.class)
-        .add(Restrictions.eq("group", group))
-        .list();
+    Query query = session.createQuery("from "
+        + MembershipImpl.class.getName()
+        + " as m "
+        + "where m.group is :group");
+    query.setEntity("group", group);
+    List<MembershipImpl> memberships = query.list();
 
     // delete the related memberships 
     for (MembershipImpl membership : memberships) {
@@ -163,7 +173,7 @@
     if (user == null) {
       throw new JbpmException("user " + userId + " doesn't exist");
     }
-    Group group = findGroupById(groupId);
+    GroupImpl group = findGroupById(groupId);
     if (group == null) {
       throw new JbpmException("group " + groupId + " doesn't exist");
     }
@@ -177,13 +187,7 @@
   }
 
   public void deleteMembership(String userId, String groupId, String role) {
-    MembershipImpl membership = (MembershipImpl) session.createCriteria(MembershipImpl.class)
-        .createAlias("user", "u")
-        .createAlias("group", "g")
-        .add(Restrictions.eq("u.id", userId))
-        .add(Restrictions.eq("g.id", groupId))
-        .uniqueResult();
-    session.delete(membership);
+    throw new UnsupportedOperationException("please implement me");
   }
 
   public void setSession(Session session) {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ExecutionImpl.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -363,18 +363,18 @@
   // execution method : signal ////////////////////////////////////////////////
 
   public void signal() {
-    signal(null, (Map<String,?>)null);
+    signal(null, (Map)null);
   }
 
   public void signal(String signal) {
-    signal(signal, (Map<String,?>)null);
+    signal(signal, (Map)null);
   }
   
-  public void signal(Map<String, ?> parameters) {
+  public void signal(Map<String, Object> parameters) {
     signal(null, parameters);
   }
 
-  public void signal(String signal, Map<String, ?> parameters) {
+  public void signal(String signal, Map<String, Object> parameters) {
     checkActive();
     propagation = Propagation.EXPLICIT;
     if (getActivity()!=null) {
@@ -387,18 +387,18 @@
   }
   
   public void signal(Execution execution) {
-    ((ExecutionImpl)execution).signal(null, (Map<String,?>)null);
+    ((ExecutionImpl)execution).signal(null, (Map)null);
   }
 
   public void signal(String signalName, Execution execution) {
-    ((ExecutionImpl)execution).signal(signalName, (Map<String,?>)null);
+    ((ExecutionImpl)execution).signal(signalName, (Map)null);
   }
 
-  public void signal(Map<String, ?> parameters, Execution execution) {
+  public void signal(Map<String, Object> parameters, Execution execution) {
     ((ExecutionImpl)execution).signal(null, parameters);
   }
 
-  public void signal(String signalName, Map<String, ?> parameters, Execution execution) {
+  public void signal(String signalName, Map<String, Object> parameters, Execution execution) {
     ((ExecutionImpl)execution).signal(signalName, parameters);
   }
 

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/ScopeInstanceImpl.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -33,10 +33,13 @@
 
 import org.jbpm.api.Execution;
 import org.jbpm.api.JbpmException;
+import org.jbpm.api.client.ClientExecution;
+import org.jbpm.api.client.ClientProcessDefinition;
 import org.jbpm.api.env.Environment;
 import org.jbpm.api.job.Timer;
 import org.jbpm.api.session.TimerSession;
 import org.jbpm.internal.log.Log;
+import org.jbpm.pvm.internal.hibernate.HibernatePvmDbSession;
 import org.jbpm.pvm.internal.job.TimerImpl;
 import org.jbpm.pvm.internal.type.Converter;
 import org.jbpm.pvm.internal.type.Type;
@@ -165,15 +168,18 @@
     }
   }
   
-  public void setVariables(Map<String, ?> variables) {
+  public void setVariables(Map<String, Object> variables) {
     if (variables!=null) {
-      for (Map.Entry<String, ?> entry : variables.entrySet()) {
-        setVariable(entry.getKey(), entry.getValue());
-      }
+      for (String key: variables.keySet()) {
+        Object value = variables.get(key);
+        setVariable(key, value);
+       }
     }
   }
   
   public Object getVariable(String key) {
+    Object value = null;
+
     Variable variable = getVariableObject(key);
     if (variable!=null) {
       return variable.getValue();

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/Signal.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/Signal.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/model/op/Signal.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -39,10 +39,10 @@
   private static final Log log = Log.getLog(Signal.class.getName());
 
   String signalName;
-  Map<String, ?> parameters;
+  Map<String, Object> parameters;
   ActivityImpl activity;
 
-  public Signal(String signalName, Map<String, ?> parameters, ActivityImpl activity) {
+  public Signal(String signalName, Map<String, Object> parameters, ActivityImpl activity) {
     this.signalName = signalName;
     this.parameters = parameters;
     this.activity = activity;

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ExecutionServiceImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ExecutionServiceImpl.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/ExecutionServiceImpl.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -22,6 +22,7 @@
 package org.jbpm.pvm.internal.svc;
 
 import java.util.HashSet;
+import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
@@ -32,6 +33,7 @@
 import org.jbpm.pvm.internal.cmd.DeleteProcessInstance;
 import org.jbpm.pvm.internal.cmd.EndProcessInstance;
 import org.jbpm.pvm.internal.cmd.FindExecutionCmd;
+import org.jbpm.pvm.internal.cmd.FindExecutionsCmd;
 import org.jbpm.pvm.internal.cmd.GetVariableNamesCmd;
 import org.jbpm.pvm.internal.cmd.GetVariablesCmd;
 import org.jbpm.pvm.internal.cmd.SetVariablesCmd;
@@ -40,6 +42,7 @@
 import org.jbpm.pvm.internal.cmd.StartProcessInstanceInLatestCmd;
 import org.jbpm.pvm.internal.query.ProcessInstanceQueryImpl;
 
+
 /**
  * @author Tom Baeyens
  */
@@ -65,7 +68,7 @@
     return commandService.execute(new StartProcessInstanceInLatestCmd(processDefinitionKey, null, null));
   }
   
-  public ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, ?> variables){
+  public ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, Object> variables){
     return commandService.execute(new StartProcessInstanceInLatestCmd(processDefinitionKey, variables, null));
   }
   
@@ -73,7 +76,7 @@
     return commandService.execute(new StartProcessInstanceInLatestCmd(processDefinitionKey, null, executionKey));
   }
 
-  public ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, ?> variables, String executionKey){
+  public ProcessInstance startProcessInstanceByKey(String processDefinitionKey, Map<String, Object> variables, String executionKey){
     return commandService.execute(new StartProcessInstanceInLatestCmd(processDefinitionKey, variables, executionKey));
   }
 
@@ -87,11 +90,11 @@
     return commandService.execute(new SignalCmd(executionId, signalName, null));
   }
 
-  public ProcessInstance signalExecutionById(String executionId, String signalName, Map<String, ?> parameters) {
+  public ProcessInstance signalExecutionById(String executionId, String signalName, Map<String, Object> parameters) {
     return commandService.execute(new SignalCmd(executionId, signalName, parameters));
   }
 
-  public ProcessInstance signalExecutionById(String executionId, Map<String, ?> parameters) {
+  public ProcessInstance signalExecutionById(String executionId, Map<String, Object> parameters) {
     return commandService.execute(new SignalCmd(executionId, null, parameters));
   }
 
@@ -138,7 +141,7 @@
     commandService.execute(cmd);
   }
 
-  public void setVariables(String executionId, Map<String, ?> variables) {
+  public void setVariables(String executionId, Map<String, Object> variables) {
     SetVariablesCmd cmd = new SetVariablesCmd(executionId);
     cmd.setVariables(variables);
     commandService.execute(cmd);

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/LifeCycleState.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/LifeCycleState.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/LifeCycleState.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -38,7 +38,7 @@
   }
 
   public void signal(ActivityExecution execution, String signalName,
-      Map<String, ?> parameters) throws Exception {
+      Map<String, Object> parameters) throws Exception {
     execution.take(signalName);
   }
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskDefinitionImpl.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -24,7 +24,6 @@
 import java.io.Serializable;
 import java.util.List;
 
-import org.jbpm.pvm.internal.email.spi.MailProducer;
 import org.jbpm.pvm.internal.util.Priority;
 import org.jbpm.pvm.internal.wire.Descriptor;
 
@@ -42,8 +41,6 @@
   protected SwimlaneDefinitionImpl swimlaneDefinition;
   protected Descriptor taskHandlerDescriptor;
 
-  protected transient MailProducer notificationMailProducer;
-
   public int getPriority() {
     return priority;
   }
@@ -80,10 +77,4 @@
   public void setTaskHandlerDescriptor(Descriptor taskHandlerDescriptor) {
     this.taskHandlerDescriptor = taskHandlerDescriptor;
   }
-  public MailProducer getNotificationMailProducer() {
-    return notificationMailProducer;
-  }
-  public void setNotificationMailProducer(MailProducer notificationMailProducer) {
-    this.notificationMailProducer = notificationMailProducer;
-  }
 }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/task/TaskImpl.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -23,15 +23,12 @@
 
 import java.io.Serializable;
 import java.util.ArrayList;
-import java.util.Collection;
 import java.util.Collections;
 import java.util.Date;
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
-import javax.mail.Message;
-
 import org.jbpm.api.Execution;
 import org.jbpm.api.JbpmException;
 import org.jbpm.api.env.Environment;
@@ -43,9 +40,6 @@
 import org.jbpm.api.task.Swimlane;
 import org.jbpm.api.task.Task;
 import org.jbpm.api.task.TaskHandler;
-import org.jbpm.pvm.internal.email.spi.MailProducer;
-import org.jbpm.pvm.internal.email.spi.MailSession;
-import org.jbpm.pvm.internal.history.events.TaskAssign;
 import org.jbpm.pvm.internal.history.events.TaskCancel;
 import org.jbpm.pvm.internal.history.events.TaskComplete;
 import org.jbpm.pvm.internal.history.events.TaskStart;
@@ -58,15 +52,16 @@
 import org.jbpm.pvm.internal.wire.WireContext;
 
 /**
- * is one task instance that can be assigned to an actor (read: put in someone's task list) and that
- * can trigger the continuation of execution of the token upon completion.
+ * is one task instance that can be assigned to an actor (read: put in 
+ * someones task list) and that can trigger the continuation of execution 
+ * of the token upon completion.
  */
 public class TaskImpl extends ScopeInstanceImpl implements Serializable, OpenTask, Assignable {
 
   private static final long serialVersionUID = 1L;
-
+  
   // private static Log log = Log.getLog(TaskImpl.class.getName());
-
+  
   private static final TaskHandler DEFAULT_TASK_HANDLER = new TaskHandler();
 
   protected String name;
@@ -90,66 +85,48 @@
 
   protected String taskDefinitionName;
   protected TaskDefinitionImpl taskDefinition;
-
+  
   protected ExecutionImpl execution;
   protected ExecutionImpl processInstance;
   protected SwimlaneImpl swimlane;
-
+  
   protected TaskImpl superTask;
   protected Set<TaskImpl> subTasks;
-
+  
   protected Long executionDbid;
   protected Long superTaskDbid;
 
   public TaskImpl() {
   }
-
+  
   // parent for variable lookup /////////////////////////////////////////////// 
 
   public ScopeInstanceImpl getParentVariableScope() {
     return execution;
   }
-
+  
   // assignment ///////////////////////////////////////////////////////////////
-
+  
   public void take(String userId) {
-    if (assignee != null) {
-      throw new JbpmException("task already taken by " + this.assignee);
+    if (assignee!=null) {
+      throw new JbpmException("task already taken by "+this.assignee);
     }
     setAssignee(userId, true);
   }
-
+  
   public void setAssignee(String userId) {
-    setAssignee(userId, false);
+    this.assignee = userId;
   }
 
   public void setAssignee(String userId, boolean propagateToSwimlane) {
     this.assignee = userId;
-    notifyAssignee();
     if (propagateToSwimlane) {
       propagateAssigneeToSwimlane();
     }
   }
 
-  protected void notifyAssignee() {
-    if (taskDefinition == null) return;
-
-    MailProducer mailProducer = taskDefinition.getNotificationMailProducer();
-    if (mailProducer == null) return;
-
-    // TODO how to insert predefined variables cleanly?
-    execution.setVariable("task", this);
-    try {
-      Collection<Message> messages = mailProducer.produce(execution);
-      Environment.getFromCurrent(MailSession.class).send(messages);
-    }
-    finally {
-      execution.removeVariable("task");
-    }
-  }
-
   protected void propagateAssigneeToSwimlane() {
-    if (swimlane != null) {
+    if (swimlane!=null) {
       swimlane.setAssignee(assignee);
     }
   }
@@ -158,7 +135,7 @@
 
   // TODO: Why does it return the impl. not the interface?
   public Set<ParticipationImpl> getParticipations() {
-    if (participations == null) {
+    if (participations ==null) {
       return Collections.emptySet();
     }
     return participations;
@@ -166,18 +143,17 @@
 
   public Set<ParticipationImpl> getAllParticipants() {
     Set<ParticipationImpl> allRoles = null;
-    if (participations != null) {
+    if (participations !=null) {
       allRoles = new HashSet<ParticipationImpl>(participations);
-    }
-    else {
+    } else {
       allRoles = new HashSet<ParticipationImpl>();
     }
-    if (swimlane != null) {
-      allRoles.addAll((Set) swimlane.getParticipations());
+    if (swimlane!=null) {
+      allRoles.addAll((Set)swimlane.getParticipations());
     }
     return allRoles;
   }
-
+  
   public void addCandidateGroup(String groupId) {
     addParticipation(null, groupId, Participation.CANDIDATE);
   }
@@ -189,10 +165,10 @@
   public Participation addParticipation(String userId, String groupId, String type) {
     return addParticipant(new ParticipationImpl(userId, groupId, type));
   }
-
+  
   private Participation addParticipant(ParticipationImpl participation) {
     participation.setTask(this);
-    if (participations == null) {
+    if (participations ==null) {
       participations = new HashSet<ParticipationImpl>();
     }
     participations.add(participation);
@@ -200,14 +176,16 @@
   }
 
   public void removeParticipant(ParticipationImpl participation) {
-    if (participation == null) {
+    if (participation==null) {
       throw new JbpmException("participant is null");
     }
-    if ((participations != null) && (participations.remove(participation))) {
+    if ( (participations !=null)
+         && (participations.remove(participation))
+       ) {
       participation.setTask(null);
     }
   }
-
+  
   // completion ///////////////////////////////////////////////////////////////
 
   public void complete() {
@@ -216,7 +194,7 @@
 
   public void complete(String outcome) {
     getTaskHandler().taskComplete(this, outcome);
-    if (superTask != null) {
+    if (superTask!=null) {
       superTask.subTaskComplete(this, outcome);
     }
   }
@@ -228,21 +206,23 @@
   public void cancel(String reason) {
     getTaskHandler().taskCancel(this, reason);
   }
-
+  
   // state ////////////////////////////////////////////////////////////////////
-
+  
   public boolean isCompleted() {
     if (Task.STATE_COMPLETED.equals(state)) {
       return true;
     }
-    if ((Task.STATE_OPEN.equals(state)) || (Task.STATE_SUSPENDED.equals(state))) {
+    if ( (Task.STATE_OPEN.equals(state))
+         || (Task.STATE_SUSPENDED.equals(state))
+       ) {
       return false;
     }
     return true;
   }
 
   // variables ////////////////////////////////////////////////////////////////
-
+  
   public void setVariable(String key, Object value) {
     super.setVariable(key, value);
     getTaskHandler().taskVariableUpdate(this, key, value);
@@ -251,14 +231,14 @@
   // comments /////////////////////////////////////////////////////////////////
 
   public List<Comment> getComments() {
-    if (comments == null) {
+    if (comments==null) {
       return Collections.emptyList();
     }
     return (List) comments;
   }
 
   public Comment createComment(String commentText) {
-    if (comments == null) {
+    if (comments==null) {
       comments = new ArrayList<CommentImpl>();
     }
     CommentImpl comment = new CommentImpl(commentText);
@@ -267,18 +247,18 @@
   }
 
   public void removeComment(Comment comment) {
-    if (comment == null) {
+    if (comment==null) {
       throw new JbpmException("comment is null");
     }
-    if (comments != null) {
+    if (comments!=null) {
       comments.remove(comment);
     }
   }
-
+  
   // subtasks /////////////////////////////////////////////////////////////////
-
+  
   public Set<Task> getSubTasks() {
-    if (subTasks == null) {
+    if (subTasks==null) {
       return Collections.emptySet();
     }
     return (Set) subTasks;
@@ -287,7 +267,7 @@
   public TaskImpl createSubTask() {
     TaskDbSession taskDbSession = Environment.getFromCurrent(TaskDbSession.class);
     TaskImpl subTask = (TaskImpl) taskDbSession.createTask();
-    if (subTasks == null) {
+    if (subTasks==null) {
       subTasks = new HashSet<TaskImpl>();
     }
     addSubTask(subTask);
@@ -301,9 +281,9 @@
     subtask.setName(name);
     return subtask;
   }
-
+  
   public TaskImpl addSubTask(TaskImpl subtask) {
-    if (subTasks == null) {
+    if (subTasks==null) {
       subTasks = new HashSet<TaskImpl>();
     }
     subtask.setSuperTask(this);
@@ -312,242 +292,211 @@
   }
 
   public void removeSubTask(Task subtask) {
-    if (subtask == null) {
+    if (subtask==null) {
       throw new JbpmException("subtask is null");
     }
-    if ((subTasks != null) && (subTasks.remove(subtask))) {
-      ((TaskImpl) subtask).setSuperTask(null);
+    if ( (subTasks!=null)
+         && (subTasks.remove(subtask))
+       ) {
+      ((TaskImpl)subtask).setSuperTask(null);
     }
   }
-
+  
   // equals ///////////////////////////////////////////////////////////////////
   // hack to support comparing hibernate proxies against the real objects
   // since this always falls back to ==, we don't need to overwrite the hashcode
   public boolean equals(Object o) {
     return EqualsUtil.equals(this, o);
   }
-
+  
   public String toString() {
-    return "Task(" + name + ")";
+    return "Task("+name+")";
   }
 
   public String getLifeCycleResource() {
     // the default lifecycle can be overridden in subclasses
     return "jbpm.task.lifecycle.xml";
   }
-
+  
   // modified getters and setters /////////////////////////////////////////////
   public void setProgress(Integer progress) {
-    if ((progress < 0) || (progress > 100)) {
-      throw new JbpmException(
-          "task progress is a percentage (integer) and must be expressed between 0 and 100");
+    if ( (progress<0)
+         || (progress>100)
+       ) {
+      throw new JbpmException("task progress is a percentage (integer) and must be expressed between 0 and 100");
     }
     this.progress = progress;
   }
 
   public boolean isPersisted() {
-    return dbid != 0;
+    return dbid!=0;
   }
 
   public void cancelExecution(String signal) {
-    if (execution != null) {
+    if (execution!=null){
       execution.end("cancel");
     }
   }
 
-  public void historyTaskStart() {
-    if (execution != null) {
-      execution.fireHistoryEvent(new TaskStart(this));
-    }
-  }
-
-  public void historyTaskAssign(String userId) {
-    if (execution != null) {
-      execution.fireHistoryEvent(new TaskAssign(userId));
-    }
-  }
-
   public void historyTaskCancel(String reason) {
-    if (execution != null) {
+    if (execution!=null){
       execution.fireHistoryEvent(new TaskCancel(reason));
     }
   }
 
   public void historyTaskComplete(String outcome) {
-    if (execution != null) {
+    if (execution!=null){
       execution.fireHistoryEvent(new TaskComplete(outcome));
     }
   }
 
+  public void historyTaskStart() {
+    if (execution!=null){
+      execution.fireHistoryEvent(new TaskStart(this));
+    }
+  }
+
   public void signalExecution(String signalName) {
-    if (execution != null) {
+    if (execution!=null){
       execution.signal(signalName);
     }
   }
 
   public TaskHandler getTaskHandler() {
-    if ((getTaskDefinition() == null) || (taskDefinition.getTaskHandlerDescriptor() == null)) {
+    if ( (getTaskDefinition()==null)
+         || (taskDefinition.getTaskHandlerDescriptor()==null)
+       ) {
       return DEFAULT_TASK_HANDLER;
     }
-
+    
     TaskHandler taskHandler = (TaskHandler) WireContext.create(taskDefinition.getTaskHandlerDescriptor());
     return taskHandler;
   }
-
+  
   // special getters and setters //////////////////////////////////////////////
-
+  
   public TaskDefinitionImpl getTaskDefinition() {
-    if ((taskDefinition == null) && (taskDefinitionName != null) && (execution != null)) {
+    if ( (taskDefinition==null)
+         && (taskDefinitionName!=null)
+         && (execution!=null)
+       ) {
       ProcessDefinitionImpl processDefinition = execution.getProcessDefinition();
       taskDefinition = processDefinition.getTaskDefinition(taskDefinitionName);
     }
-
+         
     return taskDefinition;
   }
-
+  
   public void setTaskDefinition(TaskDefinitionImpl taskDefinition) {
     this.taskDefinition = taskDefinition;
     this.taskDefinitionName = taskDefinition.getName();
   }
 
+  
   // getters and setters //////////////////////////////////////////////////////
-
+  
   public long getDbid() {
     return dbid;
   }
-
   public String getName() {
     return name;
   }
-
   public void setName(String name) {
     this.name = name;
   }
-
   public String getDescription() {
     return description;
   }
-
   public void setDescription(String description) {
     this.description = description;
   }
-
   public int getPriority() {
     return priority;
   }
-
   public void setPriority(int priority) {
     this.priority = priority;
   }
-
   public void setComments(List<CommentImpl> comments) {
     this.comments = comments;
   }
-
   public Date getCreate() {
     return create;
   }
-
   public void setCreate(Date create) {
     this.create = create;
   }
-
   public Date getDueDate() {
     return dueDate;
   }
-
   public void setDueDate(Date dueDate) {
     this.dueDate = dueDate;
   }
-
   public ExecutionImpl getExecution() {
     return execution;
   }
-
   public void setExecution(Execution execution) {
     this.execution = (ExecutionImpl) execution;
   }
-
   public String getState() {
     return state;
   }
-
   public String getAssignee() {
     return assignee;
   }
-
   public Swimlane getSwimlane() {
     return swimlane;
   }
-
   public void setSwimlane(SwimlaneImpl swimlane) {
     this.swimlane = swimlane;
   }
-
   public TaskImpl getSuperTask() {
     return superTask;
   }
-
   public void setSuperTask(TaskImpl superTask) {
     this.superTask = superTask;
   }
-
   public Integer getProgress() {
     return progress;
   }
-
   public Long getExecutionDbid() {
     return executionDbid;
   }
-
   public void setExecutionDbid(Long executionDbid) {
     this.executionDbid = executionDbid;
   }
-
   public Long getSuperTaskDbid() {
     return superTaskDbid;
   }
-
   public void setSuperTaskDbid(Long parentTaskDbid) {
     this.superTaskDbid = parentTaskDbid;
   }
-
   public void setParticipations(Set<ParticipationImpl> participations) {
     this.participations = participations;
   }
-
   public void setState(String state) {
     this.state = state;
   }
-
   public void setExecution(ExecutionImpl execution) {
     this.execution = execution;
   }
-
   public void setSubTasks(Set<TaskImpl> subTasks) {
     this.subTasks = subTasks;
   }
-
   public ExecutionImpl getProcessInstance() {
     return processInstance;
   }
-
   public void setProcessInstance(ExecutionImpl processInstance) {
     this.processInstance = processInstance;
   }
-
   public boolean isSignalling() {
     return isSignalling;
   }
-
   public void setSignalling(boolean isSignalling) {
     this.isSignalling = isSignalling;
   }
-
   public String getForm() {
     return form;
   }
-
   public void setForm(String form) {
     this.form = form;
   }

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/XmlUtil.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/XmlUtil.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/util/XmlUtil.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -247,11 +247,14 @@
   }
 
   public static boolean isTextOnly(Element element) {
-    for (Node child = element.getFirstChild(); child != null; child = child.getNextSibling()) {
-      if (child.getNodeType() == Node.ELEMENT_NODE)
-        return false;
+    boolean isTextOnly = true;
+    NodeList activityList = element.getChildNodes();
+    for (int i = 0; ((i < activityList.getLength()) && (isTextOnly)); i++) {
+      if (Element.class.isAssignableFrom(activityList.item(i).getClass())) {
+        isTextOnly = false;
+      }
     }
-    return true;
+    return isTextOnly;
   }
 
   public static List<Attr> attributes(Element element) {

Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailTemplateBinding.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -47,7 +47,7 @@
   public Object parse(Element element, Parse parse, Parser parser) {
     // MailTemplateRegistry is added to the WireDescriptor with a ProvidedObjectDescriptor
     // The MailTemplateRegistry descriptor is lazy initialized by this binding 
-    // mail-template will add a MailTemplate to the MailTemplateRegistry 
+    // mail-templates will add a MailTemplate to the MailTemplateRegistry 
     ProvidedObjectDescriptor templateRegistryDescriptor;
     MailTemplateRegistry templateRegistry;
 
@@ -57,6 +57,7 @@
     if (templateRegistryDescriptorName != null) {
       templateRegistryDescriptor = (ProvidedObjectDescriptor) wireDefinition.getDescriptor(templateRegistryDescriptorName);
       templateRegistry = (MailTemplateRegistry) templateRegistryDescriptor.getProvidedObject();
+      templateRegistryDescriptor = null; // setting it to null so that the wire parser doesn't add it to the wiredefinition again 
     }
     else {
       templateRegistry = new MailTemplateRegistry();
@@ -64,21 +65,21 @@
     }
 
     // create the mail template and add it to the registry
-    MailTemplate mailTemplate = parseMailTemplate(element, parse);
+    MailTemplate mailTemplate = parseMailTemplate(element, parse, parser);
     String templateName = XmlUtil.attribute(element, "name", true, parse);
     templateRegistry.addTemplate(templateName, mailTemplate);
 
     return templateRegistryDescriptor;
   }
 
-  public static MailTemplate parseMailTemplate(Element element, Parse parse) {
+  public MailTemplate parseMailTemplate(Element element, Parse parse, Parser parser) {
     MailTemplate mailTemplate = new MailTemplate();
     mailTemplate.setLanguage(XmlUtil.attribute(element, "language"));
 
-    mailTemplate.setFrom(parseRecipientTemplate(element, "from", parse));
-    mailTemplate.setTo(parseRecipientTemplate(element, "to", parse));
-    mailTemplate.setCc(parseRecipientTemplate(element, "cc", parse));
-    mailTemplate.setBcc(parseRecipientTemplate(element, "bcc", parse));
+    mailTemplate.setFrom(parseRecipientTemplate(element, "from", parse, parser));
+    mailTemplate.setTo(parseRecipientTemplate(element, "to", parse, parser));
+    mailTemplate.setCc(parseRecipientTemplate(element, "cc", parse, parser));
+    mailTemplate.setBcc(parseRecipientTemplate(element, "bcc", parse, parser));
 
     Element subjectElement = XmlUtil.element(element, "subject");
     if (subjectElement != null) {
@@ -116,22 +117,15 @@
     return mailTemplate;
   }
 
-  private static AddressTemplate parseRecipientTemplate(Element element, String tagName, Parse parse) {
+  protected AddressTemplate parseRecipientTemplate(Element element, String tagName, Parse parse,
+      Parser parser) {
     Element recipientElement = XmlUtil.element(element, tagName);
     if (recipientElement == null) return null;
 
-    String addresses = XmlUtil.attribute(recipientElement, "addresses");
-    String users = XmlUtil.attribute(recipientElement, "users");
-    String groups = XmlUtil.attribute(recipientElement, "groups");
-
-    if (addresses == null && users == null && groups == null) {
-      parse.addProblem(tagName + " does not specify any recipient", element);
-    }
-
     AddressTemplate addressTemplate = new AddressTemplate();
-    addressTemplate.setAddresses(addresses);
-    addressTemplate.setUsers(users);
-    addressTemplate.setGroups(groups);
+    addressTemplate.setAddresses(XmlUtil.attribute(recipientElement, "addresses"));
+    addressTemplate.setUsers(XmlUtil.attribute(recipientElement, "users"));
+    addressTemplate.setGroups(XmlUtil.attribute(recipientElement, "groups"));
     return addressTemplate;
   }
 }

Modified: jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/activities/WaitState.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/activities/WaitState.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/activities/WaitState.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -39,7 +39,7 @@
 
   public void signal(ActivityExecution execution, 
                      String signalName, 
-                     Map<String, ?> parameters) {
+                     Map<String, Object> parameters) {
     execution.setVariables(parameters);
     execution.take(signalName);
   }

Modified: jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/executionmode/embedded/WaitState.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/executionmode/embedded/WaitState.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/pvm/src/test/java/org/jbpm/pvm/executionmode/embedded/WaitState.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -40,7 +40,7 @@
     execution.waitForSignal();
   }
 
-  public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) throws Exception {
+  public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {
     execution.take(signalName);
   }
 }
\ No newline at end of file

Modified: jbpm4/trunk/modules/test-load/src/test/java/org/jbpm/test/load/async/ExclusiveMessagesTest.java
===================================================================
--- jbpm4/trunk/modules/test-load/src/test/java/org/jbpm/test/load/async/ExclusiveMessagesTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-load/src/test/java/org/jbpm/test/load/async/ExclusiveMessagesTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -92,7 +92,7 @@
     public void execute(ActivityExecution execution) throws Exception {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) throws Exception {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {
       execution.take(signalName);
     }
   }

Modified: jbpm4/trunk/modules/test-load/src/test/java/org/jbpm/test/load/async/WaitState.java
===================================================================
--- jbpm4/trunk/modules/test-load/src/test/java/org/jbpm/test/load/async/WaitState.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-load/src/test/java/org/jbpm/test/load/async/WaitState.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -40,7 +40,7 @@
     ContinuationTest.recorder.record(execution.getId(), "execute("+execution.getActivity().getName()+")");
   }
 
-  public void signal(ActivityExecution execution, String signal, Map<String, ?> parameters) throws Exception {
+  public void signal(ActivityExecution execution, String signal, Map<String, Object> parameters) throws Exception {
     throw new UnsupportedOperationException();
   }
 }
\ No newline at end of file

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/AutomaticDecisionTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/AutomaticDecisionTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/AutomaticDecisionTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -60,7 +60,7 @@
     public void execute(ActivityExecution execution) {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
       execution.take(signalName);
     }
   }

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/BasicExecutionFlowTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/BasicExecutionFlowTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/BasicExecutionFlowTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -64,7 +64,7 @@
       events.add("execute["+execution.getActivityName()+"]");
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) throws Exception {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {
       events.add("signal["+execution.getActivityName()+"]");
       execution.take(signalName);
     }

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/EventTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/EventTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/EventTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -170,7 +170,7 @@
     public void execute(ActivityExecution execution) throws Exception {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signal, Map<String, ?> parameters) throws Exception {
+    public void signal(ActivityExecution execution, String signal, Map<String, Object> parameters) throws Exception {
       Activity activity = execution.getActivity();
       if ( (signal!=null)
            && (activity!=null)

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExceptionHandlerTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExceptionHandlerTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExceptionHandlerTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -44,7 +44,7 @@
     public void execute(ActivityExecution execution) {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters){
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters){
     }
   }
 

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExecutionStateTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExecutionStateTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExecutionStateTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -70,7 +70,7 @@
       assertEquals(Execution.STATE_ACTIVE_ROOT, execution.getState());
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
       assertEquals(Execution.STATE_ACTIVE_ROOT, execution.getState());
       execution.take(signalName);
     }

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExternalDecisionTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExternalDecisionTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ExternalDecisionTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -42,7 +42,7 @@
     public void execute(ActivityExecution execution) throws Exception {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) throws Exception {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {
       execution.take(signalName);
     }
   }
@@ -52,7 +52,7 @@
     public void execute(ActivityExecution execution) {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
       execution.take(signalName);
     }
   }

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/FunctionalActivityTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/FunctionalActivityTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/FunctionalActivityTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -141,7 +141,7 @@
       Activity nestedActivity = execution.getActivity().getActivities().get(0);
       execution.execute(nestedActivity);
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
     }
   }
 

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/LoopingTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/LoopingTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/LoopingTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -45,7 +45,7 @@
         }
       }
     }
-    public void signal(ActivityExecution execution, String signal, Map<String, ?> parameters) throws Exception {
+    public void signal(ActivityExecution execution, String signal, Map<String, Object> parameters) throws Exception {
       throw new UnsupportedOperationException();
     }
     
@@ -77,7 +77,7 @@
     public void execute(ActivityExecution execution) {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters){
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters){
     }
   }
 

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeStateTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeStateTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeStateTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -51,7 +51,7 @@
       assertEquals(Execution.STATE_ACTIVE_ROOT, execution.getState());
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) throws Exception {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {
       assertEquals(Execution.STATE_ACTIVE_ROOT, execution.getState());
       execution.take(signalName);
     }

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeVariableDeclarationTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeVariableDeclarationTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeVariableDeclarationTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -45,7 +45,7 @@
     public void execute(ActivityExecution execution) {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
       execution.take(signalName);
     }
   }
@@ -56,7 +56,7 @@
       Activity child = execution.getActivity().getActivities().get(0);
       execution.execute(child);
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
     }
   }
   

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeVariableTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeVariableTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/ScopeVariableTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -23,6 +23,7 @@
 
 import java.util.Map;
 
+import org.jbpm.api.JbpmException;
 import org.jbpm.api.activity.ActivityExecution;
 import org.jbpm.api.activity.ExternalActivityBehaviour;
 import org.jbpm.api.client.ClientExecution;
@@ -49,7 +50,7 @@
     public void execute(ActivityExecution execution) {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
       execution.take(signalName);
     }
   }

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/SubProcessTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/SubProcessTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/SubProcessTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -51,7 +51,7 @@
         execution.waitForSignal();
       }
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) throws Exception {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) throws Exception {
     }
   }
   
@@ -66,12 +66,11 @@
     public void execute(ActivityExecution execution) {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters){
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters){
     }
   }
 
   public static class EndState implements ActivityBehaviour {
-    private static final long serialVersionUID = 1L;
     public void execute(ActivityExecution execution) throws Exception {
       execution.end();
     }

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/VariableTest.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/VariableTest.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/VariableTest.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -44,7 +44,7 @@
     public void execute(ActivityExecution execution) {
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters){
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters){
     }
   }
 
@@ -195,7 +195,7 @@
       execution.setVariable("message", "Killroy was here");
       execution.waitForSignal();
     }
-    public void signal(ActivityExecution execution, String signalName, Map<String, ?> parameters) {
+    public void signal(ActivityExecution execution, String signalName, Map<String, Object> parameters) {
     }
   }
 

Modified: jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/WaitState.java
===================================================================
--- jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/WaitState.java	2009-05-21 06:16:03 UTC (rev 4865)
+++ jbpm4/trunk/modules/test-pojo/src/main/java/org/jbpm/test/activities/WaitState.java	2009-05-21 07:42:27 UTC (rev 4866)
@@ -39,6 +39,6 @@
 
   public void signal(ActivityExecution execution, 
                      String signalName, 
-                     Map<String, ?> parameters) {
+                     Map<String, Object> parameters) {
   }
 }




More information about the jbpm-commits mailing list