[jbpm-commits] JBoss JBPM SVN: r4782 - in jbpm4/trunk/modules: api/src/main/java/org/jbpm/api/identity and 17 other directories.
do-not-reply at jboss.org
do-not-reply at jboss.org
Mon May 11 20:05:39 EDT 2009
Author: alex.guizar at jboss.com
Date: 2009-05-11 20:05:39 -0400 (Mon, 11 May 2009)
New Revision: 4782
Added:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/DefaultAddressResolver.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/AddressResolver.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/AddressResolverBinding.java
Removed:
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressBuilderImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/resolver/
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/AddressBuilder.java
Modified:
jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/IdentityService.java
jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/identity/User.java
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/mail/inline/InlineMailTest.java
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/mail/template/TemplateMailTest.java
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/candidates/TaskCandidatesTest.java
jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java
jbpm4/trunk/modules/examples/src/test/resources/jbpm.cfg.xml
jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/mail/inline/process.jpdl.xml
jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/mail/template/process.jpdl.xml
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/identity/cmd/CreateUserCmd.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/identity/impl/JBossIdmIdentitySessionImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/UserImpl.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/spi/IdentitySession.java
jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/IdentityServiceImpl.java
jbpm4/trunk/modules/pvm/src/main/resources/jbpm.default.cfg.xml
jbpm4/trunk/modules/pvm/src/main/resources/jbpm.identity.hbm.xml
jbpm4/trunk/modules/pvm/src/main/resources/jbpm.wire.bindings.xml
jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/identity/IdentityTest.java
Log:
[JBPM-2058] email resolution for users and groups did not actually work
Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/IdentityService.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/IdentityService.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/IdentityService.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -26,15 +26,17 @@
import org.jbpm.api.identity.Group;
import org.jbpm.api.identity.User;
-
/**
* @author Tom Baeyens
*/
public interface IdentityService {
- /** create a new user */
- void createUser(String userId, String password, String givenName, String familyName);
+ /** create a new user. */
+ void createUser(String userId, String givenName, String familyName);
+ /** create a new user, providing an email address */
+ void createUser(String userId, String givenName, String familyName, String businessEmail);
+
/** lookup a user
* @return the user or null if no such user exists */
User findUserById(String userId);
@@ -83,9 +85,8 @@
* but not the associated users. */
void deleteGroup(String groupId);
- /** makes the given user a member of the given group with the given role.
- * Role can be null. */
- void createMembership(String string, String groupId);
+ /** makes the given user a member of the given group. */
+ void createMembership(String userId, String groupId);
/** makes the given user a member of the given group with the given role.
* Role can be null. */
Modified: jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/identity/User.java
===================================================================
--- jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/identity/User.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/api/src/main/java/org/jbpm/api/identity/User.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -32,5 +32,5 @@
String getGivenName();
String getFamilyName();
- String getEmailAddress();
+ String getBusinessEmail();
}
Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/mail/inline/InlineMailTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/mail/inline/InlineMailTest.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/mail/inline/InlineMailTest.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -23,9 +23,11 @@
import java.io.IOException;
import java.util.Arrays;
-import java.util.Collections;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
import java.util.List;
-import java.util.Random;
+import java.util.Map;
import javax.mail.Address;
import javax.mail.Message;
@@ -44,40 +46,80 @@
protected void setUp() throws Exception {
super.setUp();
- long deploymentDbid = repositoryService.createDeployment().addResourceFromClasspath(
- "org/jbpm/examples/mail/inline/process.jpdl.xml").deploy();
+
+ // deploy process
+ long deploymentDbid = repositoryService.createDeployment()
+ .addResourceFromClasspath("org/jbpm/examples/mail/inline/process.jpdl.xml")
+ .deploy();
registerDeployment(deploymentDbid);
+
+ // create actors
+ identityService.createUser("bb", "Big Brother", null, "bb at oceania");
+ identityService.createUser("obrien", null, "O'Brien", "obrien at miniluv");
+ identityService.createUser("charr", null, "Charrington", "charr at miniluv");
+ identityService.createGroup("thinkpol");
+ identityService.createGroup("innerparty");
+ identityService.createMembership("obrien", "innerparty");
+ identityService.createMembership("charr", "thinkpol");
+ identityService.createMembership("obrien", "thinkpol");
}
+ protected void tearDown() throws Exception {
+ // delete actors
+ identityService.deleteGroup("thinkpol");
+ identityService.deleteGroup("innerparty");
+ identityService.deleteUser("bb");
+ identityService.deleteUser("obrien");
+ identityService.deleteUser("charr");
+
+ super.tearDown();
+ }
+
public void testInlineMail() throws MessagingException, IOException {
Wiser wiser = new Wiser();
- wiser.setPort(2525); // default is 25, but has security restrictions
+ wiser.setPort(2525);
wiser.start();
try {
+ // prepare dynamic values
+ String newspaper = "times";
+ Calendar calendar = Calendar.getInstance();
+ calendar.clear();
+ calendar.set(1983, Calendar.DECEMBER, 3);
+ Date date = calendar.getTime();
+ // assemble variables
+ Map<String, Object> variables = new HashMap<String, Object>();
+ variables.put("newspaper", newspaper);
+ variables.put("date", date);
// start process instance
- Object orderId = new Random().nextInt(1000) + 1;
- executionService.startProcessInstanceByKey("InlineMail", Collections.singletonMap("orderId",
- orderId));
+ executionService.startProcessInstanceByKey("InlineMail", variables);
// examine produced message
- List<WiserMessage> wiserMessages = wiser.getMessages();
- assertEquals(3, wiserMessages.size());
+ List<WiserMessage> wisMessages = wiser.getMessages();
+ // winston, bb, innerparty(obrien), thinkpol(charr, obrien)
+ assertEquals(5, wisMessages.size());
- for (WiserMessage wiserMessage : wiserMessages) {
- Message message = wiserMessage.getMimeMessage();
+ for (WiserMessage wisMessage : wisMessages) {
+ Message message = wisMessage.getMimeMessage();
// from
Address[] from = message.getFrom();
assertEquals(1, from.length);
assertEquals("noreply at jbpm.org", from[0].toString());
// to
- Address[] expectedTo = InternetAddress.parse("dilbert at office, alice at work, dogbert at house");
+ Address[] expectedTo = InternetAddress.parse("winston at minitrue");
Address[] to = message.getRecipients(RecipientType.TO);
- assert Arrays.equals(expectedTo, to) : to;
+ assert Arrays.equals(expectedTo, to) : Arrays.asList(to);
+ // cc
+ Address[] expectedCc = InternetAddress.parse("bb at oceania, obrien at miniluv");
+ System.out.println(Arrays.toString(expectedCc));
+ Address[] cc = message.getRecipients(RecipientType.CC);
+ System.out.println(Arrays.toString(cc));
+ assert Arrays.equals(expectedCc, cc) : Arrays.asList(cc);
+ // bcc - recipients undisclosed
+ assertNull(message.getRecipients(RecipientType.BCC));
// subject
- assertEquals("bureaucracy", message.getSubject());
+ assertEquals("rectify " + newspaper, message.getSubject());
// text
- assertEquals("Order http://example.com/order/" + orderId + " is stalled.",
- message.getContent());
+ assertTextPresent(newspaper + ' ' + date + " reporting bb dayorder", (String) message.getContent());
}
}
finally {
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-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/mail/template/TemplateMailTest.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -23,9 +23,11 @@
import java.io.IOException;
import java.util.Arrays;
-import java.util.Collections;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.HashMap;
import java.util.List;
-import java.util.Random;
+import java.util.Map;
import javax.mail.Address;
import javax.mail.Message;
@@ -44,40 +46,83 @@
protected void setUp() throws Exception {
super.setUp();
- long deploymentDbid = repositoryService.createDeployment().addResourceFromClasspath(
- "org/jbpm/examples/mail/template/process.jpdl.xml").deploy();
+
+ // deploy process
+ long deploymentDbid = repositoryService.createDeployment()
+ .addResourceFromClasspath("org/jbpm/examples/mail/template/process.jpdl.xml")
+ .deploy();
registerDeployment(deploymentDbid);
+
+ // create actors
+ identityService.createUser("bb", "Big Brother", null, "bb at oceania");
+ identityService.createUser("obrien", null, "O'Brien", "obrien at miniluv");
+ identityService.createUser("charr", null, "Charrington", "charr at miniluv");
+ identityService.createGroup("thinkpol");
+ identityService.createGroup("innerparty");
+ identityService.createMembership("obrien", "innerparty");
+ identityService.createMembership("charr", "thinkpol");
+ identityService.createMembership("obrien", "thinkpol");
}
+ protected void tearDown() throws Exception {
+ // delete actors
+ identityService.deleteGroup("thinkpol");
+ identityService.deleteGroup("innerparty");
+ identityService.deleteUser("bb");
+ identityService.deleteUser("obrien");
+ identityService.deleteUser("charr");
+
+ super.tearDown();
+ }
+
public void testTemplateMail() throws MessagingException, IOException {
Wiser wiser = new Wiser();
- wiser.setPort(2525); // default is 25, but has security restrictions
+ wiser.setPort(2525);
wiser.start();
try {
+ // prepare dynamic values
+ String addressee = "winston at minitrue";
+ String newspaper = "times";
+ Calendar calendar = Calendar.getInstance();
+ calendar.clear();
+ calendar.set(1983, Calendar.DECEMBER, 3);
+ Date date = calendar.getTime();
+ String details = "reporting bb dayorder doubleplusungood refs unpersons rewrite "
+ + "fullwise upsub antefiling";
+ // assemble variables
+ Map<String, Object> variables = new HashMap<String, Object>();
+ variables.put("addressee", addressee);
+ variables.put("newspaper", newspaper);
+ variables.put("date", date);
+ variables.put("details", details);
// start process instance
- Object orderId = new Random().nextInt(1000) + 1;
- executionService.startProcessInstanceByKey("TemplateMail", Collections.singletonMap(
- "orderId", orderId));
+ executionService.startProcessInstanceByKey("TemplateMail", variables);
// examine produced message
- List<WiserMessage> wiserMessages = wiser.getMessages();
- assertEquals(3, wiserMessages.size());
+ List<WiserMessage> wisMessages = wiser.getMessages();
+ // winston, bb, innerparty(obrien), thinkpol(charr, obrien)
+ assertEquals(5, wisMessages.size());
- for (WiserMessage wiserMessage : wiserMessages) {
- Message message = wiserMessage.getMimeMessage();
+ for (WiserMessage wisMessage : wisMessages) {
+ Message message = wisMessage.getMimeMessage();
// from
Address[] from = message.getFrom();
assertEquals(1, from.length);
assertEquals("noreply at jbpm.org", from[0].toString());
// to
- Address[] expectedTo = InternetAddress.parse("dilbert at office, alice at work, dogbert at house");
+ Address[] expectedTo = InternetAddress.parse(addressee);
Address[] to = message.getRecipients(RecipientType.TO);
- assert Arrays.equals(expectedTo, to) : to;
+ assert Arrays.equals(expectedTo, to) : Arrays.asList(to);
+ // cc
+ Address[] expectedCc = InternetAddress.parse("bb at oceania, obrien at miniluv");
+ Address[] cc = message.getRecipients(RecipientType.CC);
+ assert Arrays.equals(expectedCc, cc) : Arrays.asList(cc);
+ // bcc - recipients undisclosed
+ assertNull(message.getRecipients(RecipientType.BCC));
// subject
- assertEquals("bureaucracy", message.getSubject());
+ assertEquals("rectify " + newspaper, message.getSubject());
// text
- assertEquals("Order http://example.com/order/" + orderId + " is stalled.",
- message.getContent());
+ assertEquals(newspaper + ' ' + date + ' ' + details, (String) message.getContent());
}
}
finally {
Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/candidates/TaskCandidatesTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/candidates/TaskCandidatesTest.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/candidates/TaskCandidatesTest.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -41,10 +41,10 @@
// create identities
identityService.createGroup("sales-dept");
- identityService.createUser("johndoe", "johndoe", "John", "Doe");
+ identityService.createUser("johndoe", "John", "Doe");
identityService.createMembership("johndoe", "sales-dept");
- identityService.createUser("joesmoe", "joesmoe", "Joe", "Smoe");
+ identityService.createUser("joesmoe", "Joe", "Smoe");
identityService.createMembership("joesmoe", "sales-dept");
// deploy process
Modified: jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java
===================================================================
--- jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/examples/src/test/java/org/jbpm/examples/task/swimlane/TaskSwimlaneTest.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -40,7 +40,7 @@
// create identities
identityService.createGroup("sales-dept");
- identityService.createUser("johndoe", "johndoe", "John", "Doe");
+ identityService.createUser("johndoe", "John", "Doe");
identityService.createMembership("johndoe", "sales-dept");
// deploy process
Modified: jbpm4/trunk/modules/examples/src/test/resources/jbpm.cfg.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/jbpm.cfg.xml 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/examples/src/test/resources/jbpm.cfg.xml 2009-05-12 00:05:39 UTC (rev 4782)
@@ -7,16 +7,20 @@
<import resource="jbpm.jpdl.cfg.xml" />
<import resource="jbpm.identity.cfg.xml" />
- <!-- Job executor is excluded for running the example test cases.
- To enable timers and messages in production use, this should be included.
- import resource="jbpm.jobexecutor.cfg.xml" / -->
+ <!-- Job executor is excluded for running the example test cases. -->
+ <!-- To enable timers and messages in production use, this should be included. -->
+ <!--
+ <import resource="jbpm.jobexecutor.cfg.xml" />
+ -->
<process-engine-context>
- <mail-template name="MemoTemplate">
- <to addresses='dilbert at office, alice at work, dogbert at house' />
- <subject>bureaucracy</subject>
- <text>Order http://example.com/order/#{orderId} is stalled.</text>
+ <mail-template name="rectify template">
+ <to addresses="${addressee}" />
+ <cc users="bb" groups="innerparty" />
+ <bcc groups="thinkpol" />
+ <subject>rectify ${newspaper}</subject>
+ <text>${newspaper} ${date} ${details}</text>
</mail-template>
</process-engine-context>
Modified: jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/mail/inline/process.jpdl.xml
===================================================================
--- jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/mail/inline/process.jpdl.xml 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/mail/inline/process.jpdl.xml 2009-05-12 00:05:39 UTC (rev 4782)
@@ -3,16 +3,30 @@
<process name="InlineMail">
<start>
- <transition to="send memo"/>
+ <transition to="send rectify note" />
</start>
-
- <mail name="send memo">
- <to addresses='dilbert at office, alice at work, dogbert at house'/>
- <subject>bureaucracy</subject>
- <text>Order http://example.com/order/#{orderId} is stalled.</text>
- <transition to="end" />
+
+ <mail name="send rectify note" language="juel">
+ <to addresses="winston at minitrue" />
+ <cc users="bb" groups="innerparty" />
+ <bcc groups="thinkpol" />
+ <subject>rectify ${newspaper}</subject>
+ <text>${newspaper} ${date} reporting bb dayorder doubleplusungood
+ refs unpersons rewrite fullwise upsub antefiling</text>
+ <!--
+ <html><table><tr><td>${newspaper}</td><td>${date}</td>
+ <td>reporting bb dayorder doubleplusungood
+ refs unpersons rewrite fullwise upsub antefiling</td>
+ </tr></table></html>
+ <attachments>
+ <attachment url='http://www.george-orwell.org/1984/3.html' />
+ <attachment resource='org/example/pic.jpg' />
+ <attachment file='${user.home}/.face' />
+ </attachments>
+ -->
+ <transition to="end" />
</mail>
-
- <state name="end"/>
+ <state name="end" />
+
</process>
\ No newline at end of file
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-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/examples/src/test/resources/org/jbpm/examples/mail/template/process.jpdl.xml 2009-05-12 00:05:39 UTC (rev 4782)
@@ -3,13 +3,13 @@
<process name="TemplateMail">
<start>
- <transition to="send memo" />
+ <transition to="send rectify note" />
</start>
- <mail name="send memo" template="MemoTemplate">
- <transition to="end" />
+ <mail name="send rectify note" template="rectify template">
+ <transition to="end" />
</mail>
-
- <state name="end"/>
+ <state name="end" />
+
</process>
\ No newline at end of file
Deleted: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressBuilderImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressBuilderImpl.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressBuilderImpl.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -1,52 +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.email.impl;
-
-import java.io.UnsupportedEncodingException;
-
-import javax.mail.Address;
-import javax.mail.internet.InternetAddress;
-
-import org.jbpm.api.JbpmException;
-import org.jbpm.api.identity.User;
-import org.jbpm.pvm.internal.email.spi.AddressBuilder;
-
-/**
- * @author Alejandro Guizar
- */
-public class AddressBuilderImpl implements AddressBuilder {
-
- public Address buildAddress(User user) {
- String givenName = user.getGivenName();
- String familyName = user.getFamilyName();
- String personal =
- givenName != null ? familyName != null ? givenName + ' ' + familyName : givenName
- : familyName;
- try {
- return new InternetAddress(user.getEmailAddress(), personal);
- }
- catch (UnsupportedEncodingException e) {
- throw new JbpmException("invalid recipient name: " + personal);
- }
- }
-
-}
Copied: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/DefaultAddressResolver.java (from rev 4777, jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressBuilderImpl.java)
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/DefaultAddressResolver.java (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/DefaultAddressResolver.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -0,0 +1,66 @@
+/*
+ * 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.email.impl;
+
+import java.io.UnsupportedEncodingException;
+import java.util.List;
+
+import javax.mail.Address;
+import javax.mail.internet.InternetAddress;
+
+import org.jbpm.api.JbpmException;
+import org.jbpm.api.env.Environment;
+import org.jbpm.api.identity.Group;
+import org.jbpm.api.identity.User;
+import org.jbpm.pvm.internal.email.spi.AddressResolver;
+import org.jbpm.pvm.internal.identity.spi.IdentitySession;
+
+/**
+ * @author Alejandro Guizar
+ */
+public class DefaultAddressResolver implements AddressResolver {
+
+ public Address resolveAddress(User user) {
+ String givenName = user.getGivenName();
+ String familyName = user.getFamilyName();
+ String personal = givenName != null ? familyName != null ? givenName + ' ' + familyName
+ : givenName : familyName;
+ try {
+ return new InternetAddress(user.getBusinessEmail(), personal);
+ }
+ catch (UnsupportedEncodingException e) {
+ throw new JbpmException("invalid recipient name: " + personal);
+ }
+ }
+
+ public Address[] resolveAddresses(Group group) {
+ List<User> users = Environment.getFromCurrent(IdentitySession.class)
+ .findUsersByGroup(group.getId());
+ int userCount = users.size();
+ Address[] addresses = new Address[userCount];
+ for (int i = 0; i < userCount; i++) {
+ addresses[i] = resolveAddress(users.get(i));
+ }
+ return addresses;
+ }
+
+}
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-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailProducerImpl.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -46,8 +46,9 @@
import org.jbpm.api.Execution;
import org.jbpm.api.JbpmException;
import org.jbpm.api.env.Environment;
+import org.jbpm.api.identity.Group;
import org.jbpm.api.identity.User;
-import org.jbpm.pvm.internal.email.spi.AddressBuilder;
+import org.jbpm.pvm.internal.email.spi.AddressResolver;
import org.jbpm.pvm.internal.email.spi.MailProducer;
import org.jbpm.pvm.internal.identity.spi.IdentitySession;
import org.jbpm.pvm.internal.script.ScriptManager;
@@ -99,20 +100,24 @@
}
}
+ Environment environment = Environment.getCurrent();
+ IdentitySession identitySession = environment.get(IdentitySession.class);
+ AddressResolver addressResolver = environment.get(AddressResolver.class);
+
// resolve and tokenize users
- IdentitySession identitySession = Environment.getFromCurrent(IdentitySession.class);
String userList = fromTemplate.getUsers();
if (userList != null) {
String[] userIds = tokenizeActors(userList, execution);
List<User> users = identitySession.findUsersById(userIds);
- addSenders(users, email);
+ addSenders(resolveAddresses(users, addressResolver), email);
}
- // resolve and tokenize actors
+
+ // resolve and tokenize groups
String groupList = fromTemplate.getGroups();
if (groupList != null) {
for (String groupId : tokenizeActors(groupList, execution)) {
- List<User> users = identitySession.findUsersByGroup(groupId);
- addSenders(users, email);
+ Group group = identitySession.findGroupById(groupId);
+ addSenders(addressResolver.resolveAddresses(group), email);
}
}
}
@@ -127,9 +132,18 @@
return evaluateExpression(recipients, execution).split("[,|\\s]+");
}
+ /** construct recipient addresses from user entities */
+ private Address[] resolveAddresses(List<User> users, AddressResolver addressResolver) {
+ int userCount = users.size();
+ Address[] addresses = new Address[userCount];
+ for (int i = 0; i < userCount; i++) {
+ addresses[i] = addressResolver.resolveAddress(users.get(i));
+ }
+ return addresses;
+ }
+
/** add senders to message */
- private void addSenders(List<User> users, Message email) {
- Address[] addresses = buildAddresses(users);
+ private void addSenders(Address[] addresses, Message email) {
try {
email.addFrom(addresses);
}
@@ -138,18 +152,6 @@
}
}
- /** construct recipient addresses from user entities */
- private Address[] buildAddresses(List<User> users) {
- AddressBuilder addressBuilder = Environment.getFromCurrent(AddressBuilder.class);
-
- int userCount = users.size();
- Address[] addresses = new Address[userCount];
- for (int i = 0; i < userCount; i++) {
- addresses[i] = addressBuilder.buildAddress(users.get(i));
- }
- return addresses;
- }
-
protected void fillRecipients(Execution execution, Message email) {
// to
AddressTemplate to = template.getTo();
@@ -181,27 +183,30 @@
}
}
- IdentitySession identitySession = Environment.getFromCurrent(IdentitySession.class);
+ Environment environment = Environment.getCurrent();
+ IdentitySession identitySession = environment.get(IdentitySession.class);
+ AddressResolver addressResolver = environment.get(AddressResolver.class);
+
// resolve and tokenize users
String userList = addressTemplate.getUsers();
if (userList != null) {
String[] userIds = tokenizeActors(userList, execution);
List<User> users = identitySession.findUsersById(userIds);
- addRecipients(users, email, recipientType);
+ addRecipients(resolveAddresses(users, addressResolver), email, recipientType);
}
+
// resolve and tokenize groups
String groupList = addressTemplate.getGroups();
if (groupList != null) {
for (String groupId : tokenizeActors(groupList, execution)) {
- List<User> users = identitySession.findUsersByGroup(groupId);
- addRecipients(users, email, recipientType);
+ Group group = identitySession.findGroupById(groupId);
+ addRecipients(addressResolver.resolveAddresses(group), email, recipientType);
}
}
}
/** add recipient addresses to message */
- private void addRecipients(List<User> users, Message email, RecipientType recipientType) {
- Address[] addresses = buildAddresses(users);
+ private void addRecipients(Address[] addresses, Message email, RecipientType recipientType) {
try {
email.addRecipients(recipientType, addresses);
}
Deleted: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/AddressBuilder.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/AddressBuilder.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/AddressBuilder.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -1,34 +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.email.spi;
-
-import javax.mail.Address;
-
-import org.jbpm.api.identity.User;
-
-/**
- * @author Alejandro Guizar
- */
-public interface AddressBuilder {
-
- Address buildAddress(User user);
-}
Copied: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/AddressResolver.java (from rev 4777, jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/AddressBuilder.java)
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/AddressResolver.java (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/spi/AddressResolver.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -0,0 +1,37 @@
+/*
+ * 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.email.spi;
+
+import javax.mail.Address;
+
+import org.jbpm.api.identity.Group;
+import org.jbpm.api.identity.User;
+
+/**
+ * @author Alejandro Guizar
+ */
+public interface AddressResolver {
+
+ Address resolveAddress(User user);
+
+ Address[] resolveAddresses(Group group);
+}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/cmd/CreateUserCmd.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/cmd/CreateUserCmd.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/cmd/CreateUserCmd.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -34,21 +34,27 @@
private static final long serialVersionUID = 1L;
protected String userId;
- protected String password;
protected String givenName;
protected String familyName;
+ protected String businessEmail;
+ protected String password;
- public CreateUserCmd(String userId, String password, String givenName, String familyName) {
+ public CreateUserCmd(String userId, String givenName, String familyName) {
this.userId = userId;
- this.password = password;
this.givenName = givenName;
this.familyName = familyName;
}
+ public CreateUserCmd(String userId, String givenName, String familyName, String businessEmail) {
+ this.userId = userId;
+ this.givenName = givenName;
+ this.familyName = familyName;
+ this.businessEmail = businessEmail;
+ }
public Void execute(Environment environment) throws Exception {
IdentitySession identitySession = environment.get(IdentitySession.class);
- identitySession.createUser(userId, password, givenName, familyName);
+ identitySession.createUser(userId, givenName, familyName, businessEmail);
return null;
}
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-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/IdentitySessionImpl.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -21,71 +21,60 @@
*/
package org.jbpm.pvm.internal.identity.impl;
-import java.util.Collection;
import java.util.List;
import org.hibernate.Query;
import org.hibernate.Session;
+import org.hibernate.criterion.Projections;
+import org.hibernate.criterion.Restrictions;
import org.jbpm.api.JbpmException;
import org.jbpm.api.identity.Group;
import org.jbpm.api.identity.User;
import org.jbpm.pvm.internal.identity.spi.IdentitySession;
-
/**
* @author Tom Baeyens
*/
public class IdentitySessionImpl implements IdentitySession {
-
+
protected Session session;
- public String createUser(String userName, String password, String givenName, String familyName) {
- UserImpl user = new UserImpl();
- user.setId(userName);
- user.setPassword(password);
- user.setGivenName(givenName);
- user.setFamilyName(familyName);
+ public String createUser(String userName, String givenName, String familyName, String businessEmail) {
+ UserImpl user = new UserImpl(userName, givenName, familyName);
+ user.setBusinessEmail(businessEmail);
session.save(user);
-
+
return user.getId();
}
public User findUserById(String userId) {
- UserImpl user = (UserImpl) session.createQuery(
- "select user " +
- "from "+UserImpl.class.getName()+" as user " +
- "where user.id = '"+userId+"'"
- ).uniqueResult();
- return user;
+ return (User) session.createCriteria(UserImpl.class)
+ .add(Restrictions.eq("id", userId))
+ .uniqueResult();
}
public List<User> findUsersById(String... userIds) {
- return session.createQuery("from " + UserImpl.class.getName() + " u " +
- "where u.id in :userIds")
- .setParameterList("userIds", userIds)
- .list();
+ return session.createCriteria(UserImpl.class).add(Restrictions.in("id", userIds)).list();
}
public List<User> findUsers() {
- return session.createQuery(
- "from "+UserImpl.class.getName()
- ).list();
+ return session.createCriteria(UserImpl.class).list();
}
public void deleteUser(String userId) {
// lookup the user
User user = findUserById(userId);
-
+
// cascade the deletion to the memberships
- Query query = session.createQuery(
- "from "+MembershipImpl.class.getName()+" as m "+
- "where m.user is :user"
- );
+ 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) {
+ for (MembershipImpl membership : memberships) {
session.delete(membership);
}
@@ -95,103 +84,108 @@
public String createGroup(String groupName, String groupType, String parentGroupId) {
GroupImpl group = new GroupImpl();
- String groupId = (groupType!=null ? groupType+"."+groupName : groupName);
+ String groupId = groupType != null ? groupType + "." + groupName : groupName;
group.setId(groupId);
group.setName(groupName);
group.setType(groupType);
-
- if (parentGroupId!=null) {
+
+ if (parentGroupId != null) {
GroupImpl parentGroup = findGroupById(parentGroupId);
group.setParent(parentGroup);
}
-
+
session.save(group);
-
+
return group.getId();
}
-
public List<User> findUsersByGroup(String groupId) {
- return session.createQuery("select m.user " +
- "from "+MembershipImpl.class.getName()+" m " +
- "where m.group.id = : groupId")
- .setString("groupId", groupId)
+ return session.createCriteria(MembershipImpl.class)
+ .createAlias("group", "g")
+ .add(Restrictions.eq("g.id", groupId))
+ .setProjection(Projections.property("user"))
.list();
}
-
+
public GroupImpl findGroupById(String groupId) {
- GroupImpl group = (GroupImpl) session.createQuery(
- "select group " +
- "from "+GroupImpl.class.getName()+" as group " +
- "where group.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) {
- Query query = session.createQuery(
- "select distinct membership.group " +
- "from "+MembershipImpl.class.getName()+" as membership " +
- "where membership.user.id = '"+userId+"'" +
- " and membership.group.type = '"+groupType+"'"
- );
+ 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) {
- Query query = session.createQuery(
- "select distinct membership.group " +
- "from "+MembershipImpl.class.getName()+" as membership " +
- "where membership.user.id = '"+userId+"'"
- );
+ 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.createQuery(
- "from "+GroupImpl.class.getName()
- ).list();
+ return session.createQuery("from " + GroupImpl.class.getName()).list();
}
public void deleteGroup(String groupId) {
// look up the group
GroupImpl group = findGroupById(groupId);
-
+
// cascade the deletion to the memberships
- Query query = session.createQuery(
- "from "+MembershipImpl.class.getName()+" as m "+
- "where m.group is :group"
- );
+ 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) {
+ for (MembershipImpl membership : memberships) {
session.delete(membership);
}
-
+
// delete the group
session.delete(group);
}
public void createMembership(String userId, String groupId, String role) {
User user = findUserById(userId);
- if (user==null) {
- throw new JbpmException("user "+userId+" doesn't exist");
+ if (user == null) {
+ throw new JbpmException("user " + userId + " doesn't exist");
}
GroupImpl group = findGroupById(groupId);
- if (group==null) {
- throw new JbpmException("group "+groupId+" doesn't exist");
+ if (group == null) {
+ throw new JbpmException("group " + groupId + " doesn't exist");
}
-
+
MembershipImpl membership = new MembershipImpl();
membership.setUser(user);
membership.setGroup(group);
membership.setRole(role);
-
+
session.save(membership);
}
-
+
public void deleteMembership(String userId, String groupId, String role) {
throw new UnsupportedOperationException("please implement me");
}
@@ -200,5 +194,4 @@
this.session = session;
}
-
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/JBossIdmIdentitySessionImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/JBossIdmIdentitySessionImpl.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/JBossIdmIdentitySessionImpl.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -59,7 +59,7 @@
transaction.enlistResource(identitySessionResource);
}
- public String createUser(String userName, String password, String givenName, String lastName) {
+ public String createUser(String userName, String givenName, String familyName, String businessEmail) {
try {
Identity identity = identitySession.getPersistenceManager().createIdentity(userName);
@@ -67,8 +67,9 @@
// identitySession.getAttributesManager().updateCredential(identity, new PasswordCredential(password));
Attribute[] attributes = new Attribute[] {
- new SimpleAttribute(P3PConstants.INFO_USER_NAME_GIVEN, new String[] { givenName }),
- new SimpleAttribute(P3PConstants.INFO_USER_NAME_FAMILY, new String[] { lastName })
+ new SimpleAttribute(P3PConstants.INFO_USER_NAME_GIVEN, givenName),
+ new SimpleAttribute(P3PConstants.INFO_USER_NAME_FAMILY, familyName),
+ new SimpleAttribute(P3PConstants.INFO_USER_BUSINESS_INFO_ONLINE_EMAIL, businessEmail)
};
identitySession.getAttributesManager().addAttributes(identity, attributes);
} catch (IdentityException e) {
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/UserImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/UserImpl.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/impl/UserImpl.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -22,27 +22,25 @@
package org.jbpm.pvm.internal.identity.impl;
import java.io.Serializable;
-import java.util.Set;
import org.jbpm.api.identity.User;
-
/**
* @author Tom Baeyens
*/
public class UserImpl implements User, Serializable {
private static final long serialVersionUID = 1L;
-
+
protected long dbid;
protected int dbversion;
protected String id;
+ protected String password;
protected String givenName;
protected String familyName;
- protected String emailAddress;
- protected String password;
-
+ protected String businessEmail;
+
public UserImpl() {
}
@@ -55,40 +53,44 @@
public String getId() {
return id;
}
+
public String getGivenName() {
return givenName;
}
+
public String getFamilyName() {
return familyName;
}
- public String getEmailAddress() {
- return emailAddress;
- }
- public String toString() {
- if ( (givenName!=null)
- && (familyName!=null)
- ) {
- return givenName+" "+familyName;
- }
- return id;
+ public String getBusinessEmail() {
+ return businessEmail;
}
-
+
+ public String toString() {
+ return givenName != null ? familyName != null ? givenName + ' ' + familyName : givenName
+ : familyName != null ? familyName : id;
+ }
+
public void setId(String id) {
this.id = id;
}
+
public void setGivenName(String givenName) {
this.givenName = givenName;
}
+
public void setFamilyName(String familyName) {
this.familyName = familyName;
}
- public void setEmailAddress(String emailAddress) {
- this.emailAddress = emailAddress;
- }
- public String getPassword() {
+
+ public void setBusinessEmail(String emailAddress) {
+ this.businessEmail = emailAddress;
+ }
+
+ public String getPassword() {
return password;
}
+
public void setPassword(String password) {
this.password = password;
}
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/spi/IdentitySession.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/spi/IdentitySession.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/identity/spi/IdentitySession.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -29,10 +29,10 @@
/**
* @author Tom Baeyens
*/
-public interface IdentitySession{
+public interface IdentitySession {
/** create a new user */
- String createUser(String userId, String password, String givenName, String familyName);
+ String createUser(String userId, String givenName, String familyName, String businessEmail);
/** lookup a user.
* @return the user or null if no such user exists */
Modified: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/IdentityServiceImpl.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/IdentityServiceImpl.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/svc/IdentityServiceImpl.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -46,10 +46,14 @@
protected CommandService commandService;
- public void createUser(String userId, String password, String givenName, String familyName) {
- commandService.execute(new CreateUserCmd(userId, password, givenName, familyName));
+ public void createUser(String userId, String givenName, String familyName) {
+ commandService.execute(new CreateUserCmd(userId, givenName, familyName));
}
+ public void createUser(String userId, String givenName, String familyName, String businessEmail) {
+ commandService.execute(new CreateUserCmd(userId, givenName, familyName, businessEmail));
+ }
+
public User findUserById(String userId) {
return commandService.execute(new FindUserCmd(userId));
}
Added: jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/AddressResolverBinding.java
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/AddressResolverBinding.java (rev 0)
+++ jbpm4/trunk/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/AddressResolverBinding.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -0,0 +1,43 @@
+/*
+ * 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.wire.binding;
+
+import org.jbpm.pvm.internal.email.impl.DefaultAddressResolver;
+import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
+import org.jbpm.pvm.internal.xml.Parse;
+import org.jbpm.pvm.internal.xml.Parser;
+import org.w3c.dom.Element;
+
+/**
+ * @author Alejandro Guizar
+ */
+public class AddressResolverBinding extends WireDescriptorBinding {
+
+ public AddressResolverBinding() {
+ super("address-resolver");
+ }
+
+ public Object parse(Element element, Parse parse, Parser parser) {
+ return new ObjectDescriptor(DefaultAddressResolver.class);
+ }
+
+}
Modified: jbpm4/trunk/modules/pvm/src/main/resources/jbpm.default.cfg.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/resources/jbpm.default.cfg.xml 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/resources/jbpm.default.cfg.xml 2009-05-12 00:05:39 UTC (rev 4782)
@@ -22,7 +22,7 @@
default-script-language="juel"
read-contexts="execution, environment, process-engine"
write-context="">
- <script-language name="juel" factory="org.jbpm.pvm.internal.script.JuelScriptEngineFactory" />
+ <script-language name="juel" factory="org.jbpm.pvm.internal.script.JuelScriptEngineFactory" />
</script-manager>
<authentication />
@@ -30,6 +30,8 @@
<id-generator />
<types resource="jbpm.variable.types.xml" />
+ <address-resolver />
+
<business-calendar>
<monday hours="9:00-12:00 and 12:30-17:00"/>
<tuesday hours="9:00-12:00 and 12:30-17:00"/>
Modified: jbpm4/trunk/modules/pvm/src/main/resources/jbpm.identity.hbm.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/resources/jbpm.identity.hbm.xml 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/resources/jbpm.identity.hbm.xml 2009-05-12 00:05:39 UTC (rev 4782)
@@ -14,6 +14,7 @@
<property name="password" column="PASSWORD_" />
<property name="givenName" column="GIVENNAME_" />
<property name="familyName" column="FAMILYNAME_" />
+ <property name="businessEmail" column="BUSINESSEMAIL_" />
</class>
<!-- ### MEMBERSHIP ##################################################### -->
Modified: jbpm4/trunk/modules/pvm/src/main/resources/jbpm.wire.bindings.xml
===================================================================
--- jbpm4/trunk/modules/pvm/src/main/resources/jbpm.wire.bindings.xml 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/pvm/src/main/resources/jbpm.wire.bindings.xml 2009-05-12 00:05:39 UTC (rev 4782)
@@ -39,6 +39,8 @@
<binding class="org.jbpm.pvm.internal.wire.binding.BusinessCalendarBinding" />
<binding class="org.jbpm.pvm.internal.wire.binding.IdGeneratorBinding" />
<binding class="org.jbpm.pvm.internal.wire.binding.AuthenticationBinding" />
+ <binding class="org.jbpm.pvm.internal.wire.binding.MailTemplateBinding" />
+ <binding class="org.jbpm.pvm.internal.wire.binding.AddressResolverBinding"/>
<!-- hibernate bindings -->
<binding class="org.jbpm.pvm.internal.wire.binding.HibernateConfigurationBinding" />
<binding class="org.jbpm.pvm.internal.wire.binding.SeamHibernateSessionBinding" />
@@ -53,7 +55,6 @@
<binding class="org.jbpm.pvm.internal.wire.binding.JbossIdmIdentitySessionBinding" />
<binding class="org.jbpm.pvm.internal.wire.binding.RepositorySessionBinding" />
<binding class="org.jbpm.pvm.internal.wire.binding.MailSessionBinding" />
- <binding class="org.jbpm.pvm.internal.wire.binding.MailTemplateBinding" />
<!-- db sessions -->
<binding class="org.jbpm.pvm.internal.wire.binding.PvmDbSessionBinding" />
Modified: jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/identity/IdentityTest.java
===================================================================
--- jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/identity/IdentityTest.java 2009-05-11 21:12:48 UTC (rev 4781)
+++ jbpm4/trunk/modules/test-db/src/test/java/org/jbpm/test/identity/IdentityTest.java 2009-05-12 00:05:39 UTC (rev 4782)
@@ -23,22 +23,18 @@
import java.util.List;
-import org.jbpm.api.IdentityService;
import org.jbpm.api.identity.Group;
import org.jbpm.api.identity.User;
import org.jbpm.test.JbpmTestCase;
-
/**
* @author Tom Baeyens
*/
public class IdentityTest extends JbpmTestCase {
public void testSingleUser() throws Exception {
- IdentityService identityService = processEngine.get(IdentityService.class);
+ identityService.createUser("johndoe", "John", "Doe");
- identityService.createUser("johndoe", "johndoe", "John", "Doe");
-
List<User> users = identityService.findUsers();
assertNotNull(users);
assertEquals(1, users.size());
@@ -55,12 +51,10 @@
}
public void testSingleGroup() throws Exception {
- IdentityService identityService = processEngine.get(IdentityService.class);
+ identityService.createUser("johndoe", "John", "Doe");
+ identityService.createUser("joesmoe", "Joe", "Smoe");
+ identityService.createUser("jackblack", "Jack", "Black");
- identityService.createUser("johndoe", "johndoe", "John", "Doe");
- identityService.createUser("joesmoe", "joesmoe", "Joe", "Smoe");
- identityService.createUser("jackblack", "jackblack", "Jack", "Black");
-
String redhatId = identityService.createGroup("redhat", Group.TYPE_UNIT, null);
String jbossId = identityService.createGroup("jboss", Group.TYPE_UNIT, "redhat");
String jbpmId = identityService.createGroup("jbpm", Group.TYPE_UNIT, "jboss");
More information about the jbpm-commits
mailing list