[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