[jbpm-commits] JBoss JBPM SVN: r6722 - in jbpm4/trunk/modules: pvm/src/main/java/org/jbpm/pvm/internal/email/impl and 1 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Oct 1 12:41:06 EDT 2010


Author: rebody
Date: 2010-10-01 12:41:04 -0400 (Fri, 01 Oct 2010)
New Revision: 6722

Modified:
   jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailListener.java
   jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java
   jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/NotificationTest.java
Log:
JBPM-2940 throw meaningful exception when there is no valid assignee for notification.

Modified: jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailListener.java
===================================================================
--- jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailListener.java	2010-10-01 09:26:04 UTC (rev 6721)
+++ jbpm4/trunk/modules/jpdl/src/main/java/org/jbpm/jpdl/internal/activity/MailListener.java	2010-10-01 16:41:04 UTC (rev 6722)
@@ -49,6 +49,9 @@
     EnvironmentImpl environment = EnvironmentImpl.getCurrent();
     DbSession dbSession = environment.get(DbSession.class);
     TaskImpl task = dbSession.findTaskByExecution(execution);
+    if (task.getAssignee() == null) {
+      return;
+    }
 
     // make task available to mail templates through task context
     TaskContext taskContext = new TaskContext(task);

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	2010-10-01 09:26:04 UTC (rev 6721)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java	2010-10-01 16:41:04 UTC (rev 6722)
@@ -145,7 +145,11 @@
   }
 
   private String[] tokenizeActors(String recipients, Execution execution) {
-    String[] actors = evaluateExpression(recipients).split("[,;\\s]+");
+    String value = evaluateExpression(recipients);
+    if (value == null) {
+      throw new JbpmException("cannot find recipients [" + recipients + "] from execution [" + execution + "]");
+    }
+    String[] actors = value.split("[,;\\s]+");
     if (actors.length == 0) throw new JbpmException("recipient list is empty: " + recipients);
     return actors;
   }

Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/NotificationTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/NotificationTest.java	2010-10-01 09:26:04 UTC (rev 6721)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/task/NotificationTest.java	2010-10-01 16:41:04 UTC (rev 6722)
@@ -4,22 +4,36 @@
 import java.util.*;
 import javax.mail.Message;
 
+import junit.framework.Test;
+
 import org.jbpm.api.*;
 import org.jbpm.api.job.*;
 import org.jbpm.api.task.*;
 import org.jbpm.pvm.internal.email.spi.*;
 import org.jbpm.test.*;
+import org.jbpm.test.mail.MailTestSetup;
 
+import org.subethamail.wiser.Wiser;
+import org.subethamail.wiser.WiserMessage;
+
 /**
  * @author Huisheng Xu
  */
 public class NotificationTest extends JbpmTestCase {
+
+    private static Wiser wiser = new Wiser();
+
+    public static Test suite() {
+        return new MailTestSetup(NotificationTest.class, wiser);
+    }
+
     protected void setUp() throws Exception {
         super.setUp();
         identityService.createUser("johnsmith", "johnsmith", "johnsmith");
     }
 
     protected void tearDown() throws Exception {
+        wiser.getMessages().clear();
         identityService.deleteUser("johnsmith");
         super.tearDown();
     }
@@ -72,7 +86,7 @@
 
     public void testSupportExpr() {
         deployJpdlXmlString(
-            "<process name='NotificationTaskTest' xmlns='http://jbpm.org/4.3/jpdl'>"
+            "<process name='NotificationTaskTest'>"
             + "  <start name='start1' g='93,78,48,48'>"
             + "    <transition name='to Test Task' to='Test Task' g='1,-20'/>"
             + "  </start>"
@@ -91,6 +105,31 @@
         String processInstanceId = processInstance.getId();
     }
 
+    public void testNullAssigneeNotification() {
+        deployJpdlXmlString(
+            "<process name='NullAssigneeNotification'>"
+            + "  <start name='start1' g='93,78,48,48'>"
+            + "    <transition name='to Test Task' to='Test Task' g='1,-20'/>"
+            + "  </start>"
+            + "  <end name='end1' g='315,236,48,48'/>"
+            + "  <task name='Test Task' g='178,159,92,52' assignee='johnsmith'>"
+            + "    <notification/>"
+            + "    <transition name='to end1' to='end1' g='-6,-22'/>"
+            + "  </task>"
+            + "</process>");
+
+        ProcessInstance processInstance = executionService
+            .startProcessInstanceByKey("NullAssigneeNotification");
+        String processInstanceId = processInstance.getId();
+
+        Task task = taskService.createTaskQuery().uniqueResult();
+        try {
+          taskService.assignTask(task.getId(), null);
+        } catch(JbpmException ex) {
+          assertEquals("cannot find recipients [${task.assignee}] from execution [execution[" + processInstanceId + "]]", ex.getMessage());
+        }
+    }
+
     public static class JbpmCustomMailProducer implements MailProducer, Serializable {
         private String templateName;
         public Collection<Message> produce(Execution execution) {



More information about the jbpm-commits mailing list