[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