[jbpm-commits] JBoss JBPM SVN: r4505 - in jbpm4/branches/email/modules/pvm/src: main/java/org/jbpm/pvm/internal/email/producer/impl and 3 other directories.

do-not-reply at jboss.org do-not-reply at jboss.org
Thu Apr 9 01:23:54 EDT 2009


Author: alex.guizar at jboss.com
Date: 2009-04-09 01:23:54 -0400 (Thu, 09 Apr 2009)
New Revision: 4505

Modified:
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/PropertiesBinding.java
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/ProblemList.java
   jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java
Log:
support authenticator for mail session

Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java	2009-04-08 20:27:20 UTC (rev 4504)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java	2009-04-09 05:23:54 UTC (rev 4505)
@@ -3,6 +3,7 @@
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.HashSet;
+import java.util.List;
 import java.util.regex.Pattern;
 
 import javax.mail.internet.InternetAddress;
@@ -15,86 +16,86 @@
  */
 public class AddressFilter {
 
-	/**
-	 * patterns of addresses to be included. all addresses are included when omitted.
-	 */
-	private Collection<Pattern> includePatterns;
-	/**
-	 * patterns of addresses to be excluded. no addresses are excluded when omitted.
-	 */
-	private Collection<Pattern> excludePatterns;
+  /**
+   * patterns of addresses to be included. all addresses are included when omitted.
+   */
+  private List<Pattern> includePatterns;
+  /**
+   * patterns of addresses to be excluded. no addresses are excluded when omitted.
+   */
+  private List<Pattern> excludePatterns;
 
-	public Collection<InternetAddress> filter(final Collection<InternetAddress> addresses) {
-		Collection<InternetAddress> filteredAddresses = new HashSet<InternetAddress>();
-		if (addresses != null) {
-			// Loop over for addresses to decide what to keep.
-			for (InternetAddress address : addresses) {
-				if (keepAddress(address)) {
-					filteredAddresses.add(address);
-				}
-			}
-		}
-		return filteredAddresses;
-	}
+  public Collection<InternetAddress> filter(final Collection<InternetAddress> addresses) {
+    Collection<InternetAddress> filteredAddresses = new HashSet<InternetAddress>();
+    if (addresses != null) {
+      // Loop over for addresses to decide what to keep.
+      for (InternetAddress address : addresses) {
+        if (keepAddress(address)) {
+          filteredAddresses.add(address);
+        }
+      }
+    }
+    return filteredAddresses;
+  }
 
-	/***
-	 * Determine in a given address is included or excluded based on regex.
-	 * 
-	 * @param address Email Address to validate against regex.
-	 * @return If the includes is provided, and the address matches an include pattern, returns true,
-	 *         false otherwise.
-	 */
-	protected boolean keepAddress(InternetAddress address) {
-		return includeAddress(address) && !excludeAddress(address);
-	}
+  /***
+   * Determine in a given address is included or excluded based on regex.
+   * 
+   * @param address Email Address to validate against regex.
+   * @return If the includes is provided, and the address matches an include pattern, returns true,
+   *         false otherwise.
+   */
+  protected boolean keepAddress(InternetAddress address) {
+    return includeAddress(address) && !excludeAddress(address);
+  }
 
-	protected boolean includeAddress(InternetAddress address) {
-		if (includePatterns == null || includePatterns.isEmpty()) return true;
+  protected boolean includeAddress(InternetAddress address) {
+    if (includePatterns == null || includePatterns.isEmpty()) return true;
 
-		for (Pattern pattern : includePatterns) {
-			if (pattern.matcher(address.toString()).matches()) return true;
-		}
-		return false;
-	}
+    for (Pattern pattern : includePatterns) {
+      if (pattern.matcher(address.toString()).matches()) return true;
+    }
+    return false;
+  }
 
-	protected boolean excludeAddress(InternetAddress address) {
-		if (excludePatterns == null || excludePatterns.isEmpty()) return false;
+  protected boolean excludeAddress(InternetAddress address) {
+    if (excludePatterns == null || excludePatterns.isEmpty()) return false;
 
-		for (Pattern pattern : excludePatterns) {
-			if (pattern.matcher(address.toString()).matches()) return true;
-		}
-		return false;
-	}
+    for (Pattern pattern : excludePatterns) {
+      if (pattern.matcher(address.toString()).matches()) return true;
+    }
+    return false;
+  }
 
-	/**
-	 * Gets the patterns of addresses to be included. All addresses are included when omitted.
-	 */
-	public Collection<Pattern> getIncludePatterns() {
-		return includePatterns;
-	}
+  /**
+   * Gets the patterns of addresses to be included. All addresses are included when omitted.
+   */
+  public List<Pattern> getIncludePatterns() {
+    return includePatterns;
+  }
 
-	public void addIncludePattern(Pattern includePattern) {
-		if (includePatterns == null) includePatterns = new ArrayList<Pattern>();
-		includePatterns.add(includePattern);
-	}
+  public void addIncludePattern(Pattern includePattern) {
+    if (includePatterns == null) includePatterns = new ArrayList<Pattern>();
+    includePatterns.add(includePattern);
+  }
 
-	protected void setIncludePatterns(Collection<Pattern> includePatterns) {
-		this.includePatterns = includePatterns;
-	}
+  protected void setIncludePatterns(List<Pattern> includePatterns) {
+    this.includePatterns = includePatterns;
+  }
 
-	/**
-	 * Gets the patterns of addresses to be excluded. No addresses are excluded when omitted.
-	 */
-	public Collection<Pattern> getExcludePatterns() {
-		return excludePatterns;
-	}
+  /**
+   * Gets the patterns of addresses to be excluded. No addresses are excluded when omitted.
+   */
+  public List<Pattern> getExcludePatterns() {
+    return excludePatterns;
+  }
 
-	public void addExcludePattern(Pattern excludePattern) {
-		if (excludePatterns == null) excludePatterns = new ArrayList<Pattern>();
-		excludePatterns.add(excludePattern);
-	}
+  public void addExcludePattern(Pattern excludePattern) {
+    if (excludePatterns == null) excludePatterns = new ArrayList<Pattern>();
+    excludePatterns.add(excludePattern);
+  }
 
-	protected void setExcludePatterns(Collection<Pattern> excludePatterns) {
-		this.excludePatterns = excludePatterns;
-	}
+  protected void setExcludePatterns(List<Pattern> excludePatterns) {
+    this.excludePatterns = excludePatterns;
+  }
 }

Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java	2009-04-08 20:27:20 UTC (rev 4504)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java	2009-04-09 05:23:54 UTC (rev 4505)
@@ -2,6 +2,7 @@
 
 import java.util.Properties;
 
+import javax.mail.Authenticator;
 import javax.mail.Session;
 
 /**
@@ -11,26 +12,35 @@
  */
 public class MailServer {
 
-	private AddressFilter addressFilter;
-	private Properties sessionProperties;
+  private AddressFilter addressFilter;
+  private Properties sessionProperties;
+  private Authenticator authenticator;
 
-	public AddressFilter getAddressFilter() {
-		return addressFilter;
-	}
+  public AddressFilter getAddressFilter() {
+    return addressFilter;
+  }
 
-	protected void setAddressFilter(AddressFilter filter) {
-		this.addressFilter = filter;
-	}
+  protected void setAddressFilter(AddressFilter filter) {
+    this.addressFilter = filter;
+  }
 
-	public Properties getSessionProperties() {
-		return sessionProperties;
-	}
+  public Properties getSessionProperties() {
+    return sessionProperties;
+  }
 
-	protected void setSessionProperties(Properties sessionProperties) {
-		this.sessionProperties = sessionProperties;
-	}
+  protected void setSessionProperties(Properties sessionProperties) {
+    this.sessionProperties = sessionProperties;
+  }
 
-	public Session createMailSession() {
-		return Session.getDefaultInstance(sessionProperties, null);
-	}
+  public Authenticator getAuthenticator() {
+    return authenticator;
+  }
+
+  protected void setAuthenticator(Authenticator authenticator) {
+    this.authenticator = authenticator;
+  }
+
+  public Session createMailSession() {
+    return Session.getDefaultInstance(sessionProperties, authenticator);
+  }
 }

Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java	2009-04-08 20:27:20 UTC (rev 4504)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java	2009-04-09 05:23:54 UTC (rev 4505)
@@ -1,6 +1,7 @@
 package org.jbpm.pvm.internal.email.impl;
 
 import java.util.Collection;
+import java.util.List;
 
 import javax.mail.Session;
 import javax.mail.internet.InternetAddress;
@@ -13,53 +14,52 @@
 
 public class SyncMailSession implements MailSession {
 
-	private Collection<MailServer> mailServers;
+  private List<MailServer> mailServers;
 
-	private static final Log log = LogFactory.getLog(SyncMailSession.class);
+  private static final Log log = LogFactory.getLog(SyncMailSession.class);
 
-	public void send(Collection<Email> emails) {
+  public void send(Collection<Email> emails) {
+    // Emails need to have the sessions populated.
+    for (Email email : emails) {
+      Collection<InternetAddress> to = email.getToAddresses();
+      Collection<InternetAddress> cc = email.getCcAddresses();
+      Collection<InternetAddress> bcc = email.getBccAddresses();
 
-		// Emails need to have the sessions populated.
-		for (Email email : emails) {
-			Collection<InternetAddress> to = email.getToAddresses();
-			Collection<InternetAddress> cc = email.getCcAddresses();
-			Collection<InternetAddress> bcc = email.getBccAddresses();
+      for (MailServer mailServer : mailServers) {
+        AddressFilter addressFilter = mailServer.getAddressFilter();
+        Session mailSession = mailServer.createMailSession();
+        email.setMailSession(mailSession);
 
-			for (MailServer mailServer : mailServers) {
-				AddressFilter addressFilter = mailServer.getAddressFilter();
-				Session mailSession = mailServer.createMailSession();
-				email.setMailSession(mailSession);
+        // Need to apply filter.
+        try {
+          Collection<InternetAddress> toFiltered = addressFilter.filter(to);
+          Collection<InternetAddress> ccFiltered = addressFilter.filter(cc);
+          Collection<InternetAddress> bccFiltered = addressFilter.filter(bcc);
 
-				// Need to apply filter.
-				try {
-					Collection<InternetAddress> toFiltered = addressFilter.filter(to);
-					Collection<InternetAddress> ccFiltered = addressFilter.filter(cc);
-					Collection<InternetAddress> bccFiltered = addressFilter.filter(bcc);
+          // Set the email with the new filtered addresses.
+          email.setTo(toFiltered);
+          email.setCc(ccFiltered);
+          email.setBcc(bccFiltered);
 
-					// Set the email with the new filtered addresses.
-					email.setTo(toFiltered);
-					email.setCc(ccFiltered);
-					email.setBcc(bccFiltered);
+          // If there is someone to send it to, then send it.
+          if (!(toFiltered.isEmpty() && ccFiltered.isEmpty() && bccFiltered.isEmpty())) {
+            email.send();
+          }
+        }
+        catch (EmailException e) {
+          log.error("An exception occurred while sending email.", e);
+          // TODO: Does anything else need to occur here?
+        }
+      }
+    }
+  }
 
-					// If there is someone to send it to, then send it.
-					if (!(toFiltered.isEmpty() && ccFiltered.isEmpty() && bccFiltered.isEmpty())) {
-						email.send();
-					}
-				}
-				catch (EmailException e) {
-					log.error("An exception occurred while sending email.", e);
-					// TODO: Does anything else need to occur here?
-				}
-			}
-		}
-	}
+  public List<MailServer> getMailServers() {
+    return mailServers;
+  }
 
-	public Collection<MailServer> getMailServers() {
-		return mailServers;
-	}
+  protected void setMailServers(List<MailServer> mailServers) {
+    this.mailServers = mailServers;
+  }
 
-	protected void setMailServers(Collection<MailServer> mailServers) {
-		this.mailServers = mailServers;
-	}
-
 }

Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java	2009-04-08 20:27:20 UTC (rev 4504)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/producer/impl/HtmlScriptMailProducer.java	2009-04-09 05:23:54 UTC (rev 4505)
@@ -111,7 +111,7 @@
 
 	public String embedImage(HtmlEmail email, String imageSrc)
 	{
-		if(imageSrc==null||imageSrc.isEmpty())
+		if(imageSrc==null||imageSrc.length()==0)
 		{
 			return null;
 		}

Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java	2009-04-08 20:27:20 UTC (rev 4504)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java	2009-04-09 05:23:54 UTC (rev 4505)
@@ -30,11 +30,9 @@
 import org.jbpm.pvm.internal.email.spi.MailSession;
 import org.jbpm.pvm.internal.util.XmlUtil;
 import org.jbpm.pvm.internal.wire.Descriptor;
-import org.jbpm.pvm.internal.wire.descriptor.CollectionDescriptor;
 import org.jbpm.pvm.internal.wire.descriptor.ListDescriptor;
 import org.jbpm.pvm.internal.wire.descriptor.ObjectDescriptor;
 import org.jbpm.pvm.internal.wire.descriptor.PatternDescriptor;
-import org.jbpm.pvm.internal.wire.descriptor.PropertiesDescriptor;
 import org.jbpm.pvm.internal.xml.Parse;
 import org.jbpm.pvm.internal.xml.Parser;
 import org.w3c.dom.Element;
@@ -46,60 +44,76 @@
  */
 public class MailSessionBinding extends WireDescriptorBinding {
 
-	private static final PropertiesBinding propertiesBinding = new PropertiesBinding();
+  private static final PropertiesBinding propertiesBinding = new PropertiesBinding();
+  private static final ObjectBinding objectBinding = new ObjectBinding();
 
-	public MailSessionBinding() {
-		super("mail-session");
-	}
+  public MailSessionBinding() {
+    super("mail-session");
+  }
 
-	public Object parse(Element element, Parse parse, Parser parser) {
-		// mail servers
-		List<Descriptor> serverDescriptors = new ArrayList<Descriptor>();
-		for (Element serverElement : XmlUtil.elements(element, "mail-server")) {
-			// mail session properties
-			Element smtpElement = XmlUtil.element(serverElement, "session-properties");
-			PropertiesDescriptor propertiesDescriptor = propertiesBinding.parse(smtpElement, parse,
-					parser);
+  public Object parse(Element element, Parse parse, Parser parser) {
+    // mail servers
+    List<Descriptor> serverDescriptors = new ArrayList<Descriptor>();
+    for (Element serverElement : XmlUtil.elements(element, "mail-server")) {
+      // mail server
+      ObjectDescriptor serverDescriptor = new ObjectDescriptor(MailServer.class);
+      serverDescriptors.add(serverDescriptor);
 
-			// address filter
-			Element filterElement = XmlUtil.element(serverElement, "address-filter");
+      // address filter
+      Element filterElement = XmlUtil.element(serverElement, "address-filter");
+      if (filterElement != null) {
+        // includes
+        List<Descriptor> includeDescriptors = new ArrayList<Descriptor>();
+        for (Element includeElement : XmlUtil.elements(filterElement, "include")) {
+          includeDescriptors.add(new PatternDescriptor(XmlUtil.getContentText(includeElement), 0));
+        }
+        ListDescriptor includesDescriptor = new ListDescriptor();
+        includesDescriptor.setValueDescriptors(includeDescriptors);
 
-			// includes
-			List<Descriptor> includeDescriptors = new ArrayList<Descriptor>();
-			for (Element includeElement : XmlUtil.elements(filterElement, "include")) {
-				includeDescriptors.add(new PatternDescriptor(XmlUtil.getContentText(includeElement), 0));
-			}
-			CollectionDescriptor includesDescriptor = new ListDescriptor();
-			includesDescriptor.setValueDescriptors(includeDescriptors);
+        // excludes
+        List<Descriptor> excludeDescriptors = new ArrayList<Descriptor>();
+        for (Element excludeElement : XmlUtil.elements(filterElement, "exclude")) {
+          excludeDescriptors.add(new PatternDescriptor(XmlUtil.getContentText(excludeElement), 0));
+        }
+        ListDescriptor excludesDescriptor = new ListDescriptor();
+        excludesDescriptor.setValueDescriptors(excludeDescriptors);
 
-			// excludes
-			List<Descriptor> excludeDescriptors = new ArrayList<Descriptor>();
-			for (Element excludeElement : XmlUtil.elements(filterElement, "exclude")) {
-				excludeDescriptors.add(new PatternDescriptor(XmlUtil.getContentText(excludeElement), 0));
-			}
-			CollectionDescriptor excludesDescriptor = new ListDescriptor();
-			excludesDescriptor.setValueDescriptors(excludeDescriptors);
+        // address filter
+        ObjectDescriptor filterDescriptor = new ObjectDescriptor(AddressFilter.class);
+        filterDescriptor.addInjection("includePatterns", includesDescriptor);
+        filterDescriptor.addInjection("excludePatterns", excludesDescriptor);
 
-			// address filter
-			ObjectDescriptor filterDescriptor = new ObjectDescriptor(AddressFilter.class);
-			filterDescriptor.addInjection("includePatterns", includesDescriptor);
-			filterDescriptor.addInjection("excludePatterns", excludesDescriptor);
+        serverDescriptor.addInjection("addressFilter", filterDescriptor);
+      }
 
-			// mail server
-			ObjectDescriptor serverDescriptor = new ObjectDescriptor(MailServer.class);
-			serverDescriptor.addInjection("addressFilter", filterDescriptor);
-			serverDescriptor.addInjection("sessionProperties", propertiesDescriptor);
-			serverDescriptors.add(serverDescriptor);
-		}
+      // mail session properties
+      Element propertiesElement = XmlUtil.element(serverElement, "session-properties");
+      if (propertiesElement != null) {
+        Descriptor propertiesDescriptor =
+            (Descriptor) propertiesBinding.parse(propertiesElement, parse, parser);
+        serverDescriptor.addInjection("sessionProperties", propertiesDescriptor);
+      }
+      else {
+        parse.addProblem("missing mail session properties");
+      }
 
-		// mail servers
-		CollectionDescriptor serversDescriptor = new ListDescriptor();
-		serversDescriptor.setValueDescriptors(serverDescriptors);
+      // authenticator
+      Element authenticatorElement = XmlUtil.element(serverElement, "authenticator");
+      if (authenticatorElement != null) {
+        Descriptor authenticatorDescriptor =
+            (Descriptor) objectBinding.parse(authenticatorElement, parse, parser);
+        serverDescriptor.addInjection("authenticator", authenticatorDescriptor);
+      }
+    }
 
-		// mail session
-		ObjectDescriptor sessionDescriptor = new ObjectDescriptor(SyncMailSession.class);
-		sessionDescriptor.addInjection("mailServers", serversDescriptor);
-		return sessionDescriptor;
-	}
+    // mail servers
+    ListDescriptor serversDescriptor = new ListDescriptor();
+    serversDescriptor.setValueDescriptors(serverDescriptors);
 
+    // mail session
+    ObjectDescriptor sessionDescriptor = new ObjectDescriptor(SyncMailSession.class);
+    sessionDescriptor.addInjection("mailServers", serversDescriptor);
+    return sessionDescriptor;
+  }
+
 }

Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/PropertiesBinding.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/PropertiesBinding.java	2009-04-08 20:27:20 UTC (rev 4504)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/PropertiesBinding.java	2009-04-09 05:23:54 UTC (rev 4505)
@@ -44,7 +44,7 @@
     super("properties");
   }
 
-  public PropertiesDescriptor parse(Element element, Parse parse, Parser parser) {
+  public Object parse(Element element, Parse parse, Parser parser) {
     PropertiesDescriptor descriptor = new PropertiesDescriptor();
     
     if (element.hasAttribute("file")) {

Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java	2009-04-08 20:27:20 UTC (rev 4504)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/Parse.java	2009-04-09 05:23:54 UTC (rev 4505)
@@ -24,7 +24,6 @@
 
 import java.io.File;
 import java.io.InputStream;
-import java.io.Serializable;
 import java.net.URL;
 import java.util.ListIterator;
 import java.util.Stack;
@@ -32,7 +31,6 @@
 import javax.xml.parsers.DocumentBuilder;
 
 import org.jbpm.JbpmException;
-import org.jbpm.internal.log.Log;
 import org.jbpm.pvm.internal.stream.FileStreamInput;
 import org.jbpm.pvm.internal.stream.InputStreamInput;
 import org.jbpm.pvm.internal.stream.ResourceStreamInput;
@@ -49,9 +47,8 @@
  * 
  * @author Tom Baeyens
  */
-public class Parse extends ProblemList implements Serializable, ErrorHandler {
+public class Parse extends ProblemList implements ErrorHandler {
 
-  private static Log log = Log.getLog(Parse.class.getName());
   private static final long serialVersionUID = 1L;
 
   protected Parser parser;
@@ -190,11 +187,8 @@
    * 'warning'. */
   public Parse checkProblems(String description) {
     if (hasProblems()) {
-      String errorMsg = "problems during parse of "+description+":"+getProblemsText();
-      log.info(errorMsg);
-      if (errorMsg!=null) {
-        throw new JbpmException(errorMsg);
-      }
+      String errorMsg = "problems during parse of "+description+NEWLINE+getProblemsText();
+      throw new JbpmException(errorMsg);
     }
     return this;
   }
@@ -234,13 +228,10 @@
       ListIterator<Object> listIter = objectStack.listIterator(objectStack.size());
       while (listIter.hasPrevious()) {
         Object object = listIter.previous();
-        if (object!=null) {
-          if (clazz.isAssignableFrom(object.getClass())) {
-            return (T) object;
-          }
+        if (clazz.isInstance(object)) {
+          return clazz.cast(object);
         }
       }
-      return null;
     }
     return null;
   }

Modified: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/ProblemList.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/ProblemList.java	2009-04-08 20:27:20 UTC (rev 4504)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/xml/ProblemList.java	2009-04-09 05:23:54 UTC (rev 4505)
@@ -27,10 +27,8 @@
 import java.util.List;
 
 import org.jbpm.Problem;
-import org.jbpm.internal.log.Log;
 import org.jbpm.pvm.internal.repository.DeploymentImpl;
 
-
 /** list of problems.  Base class for {@link Parse} 
  * and {@link DeploymentImpl}.
  * 
@@ -40,16 +38,14 @@
 
   private static final long serialVersionUID = 1L;
 
-  private static final String NEWLINE = System.getProperty("line.separator");
+  static final String NEWLINE = System.getProperty("line.separator");
 
-  private static final Log log = Log.getLog(ProblemList.class.getName());
-
   protected List<ProblemImpl> problems;
 
   /** all problems encountered */
   public List<Problem> getProblems() {
     if (problems==null) {
-      return Collections.EMPTY_LIST;
+      return Collections.emptyList();
     }
     return (List) problems;
   }

Modified: jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java	2009-04-08 20:27:20 UTC (rev 4504)
+++ jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java	2009-04-09 05:23:54 UTC (rev 4505)
@@ -21,10 +21,14 @@
  */
 package org.jbpm.pvm.internal.wire;
 
-import java.util.Collection;
+import java.util.List;
 import java.util.Properties;
 import java.util.regex.Pattern;
 
+import javax.mail.Authenticator;
+import javax.mail.PasswordAuthentication;
+
+import org.jbpm.JbpmException;
 import org.jbpm.pvm.internal.email.impl.MailServer;
 import org.jbpm.pvm.internal.email.impl.SyncMailSession;
 import org.jbpm.pvm.internal.email.impl.AddressFilter;
@@ -35,47 +39,156 @@
  */
 public class MailSessionWireTest extends WireTestCase {
 
-	public void testMailSession() {
-    WireContext wireContext = createWireContext(
-        "<objects>" +
-        "  <mail-session>" +
-        "    <mail-server>" +
-        "      <address-filter>" +
-        "        <include>.+ at jbpm.org</include>" +
-        "        <exclude>.+ at jboss.com</exclude>" +
-        "      </address-filter>" +
-        "      <session-properties>" +
-        "        <property name='mail.host' value='localhost' />" +
-        "        <property name='mail.user' value='aguizar' />" +
-        "        <property name='mail.from' value='noreply at jbpm.org' />" +
-        "      </session-properties>" +
-        "    </mail-server>" +
-        "  </mail-session>" +
-        "</objects>"
-      );
+  public void testSessionProperties() {
+    WireContext wireContext =
+        createWireContext("<objects>"
+          + "  <mail-session>"
+          + "    <mail-server>"
+          + "      <session-properties>"
+          + "        <property name='mail.host' value='localhost' />"
+          + "        <property name='mail.user' value='aguizar' />"
+          + "        <property name='mail.from' value='noreply at jbpm.org' />"
+          + "      </session-properties>"
+          + "    </mail-server>"
+          + "  </mail-session>"
+          + "</objects>");
 
-    MailSession mailService = wireContext.get(MailSession.class);
-    assertTrue("expected sync mail service", mailService instanceof SyncMailSession);
+    MailSession mailSession = wireContext.get(MailSession.class);
+    assertTrue("expected sync mail session", mailSession instanceof SyncMailSession);
 
-    SyncMailSession syncMailService = (SyncMailSession) mailService;
-    Collection<MailServer> serverConfigs = syncMailService.getMailServers();
-    assertEquals(1, serverConfigs.size());
+    SyncMailSession syncMailSession = (SyncMailSession) mailSession;
+    List<MailServer> mailServers = syncMailSession.getMailServers();
+    assertEquals(1, mailServers.size());
 
-    MailServer serverConfig = serverConfigs.iterator().next();
-    AddressFilter addressFilter = serverConfig.getAddressFilter();
-    
-    Collection<Pattern> includePatterns = addressFilter.getIncludePatterns();
-    assertEquals(1, includePatterns.size());
-    assertEquals(".+ at jbpm.org", includePatterns.iterator().next().toString());
-
-    Collection<Pattern> excludePatterns = addressFilter.getExcludePatterns();
-    assertEquals(1, excludePatterns.size());
-    assertEquals(".+ at jboss.com", excludePatterns.iterator().next().toString());
-
-    Properties properties = serverConfig.getSessionProperties();
+    MailServer mailServer = mailServers.get(0);
+    Properties properties = mailServer.getSessionProperties();
     assertEquals(3, properties.size());
     assertEquals("localhost", properties.getProperty("mail.host"));
     assertEquals("aguizar", properties.getProperty("mail.user"));
     assertEquals("noreply at jbpm.org", properties.getProperty("mail.from"));
-	}
+  }
+
+  public static class MyAuthenticator extends Authenticator {
+    @Override
+    protected PasswordAuthentication getPasswordAuthentication() {
+      return new PasswordAuthentication("aguizar", "wontsay");
+    }
+  }
+
+  public void testAuthenticator() {
+    WireContext wireContext =
+        createWireContext("<objects>" +
+          "  <mail-session>" +
+          "    <mail-server>" +
+          "      <session-properties />" +
+          "      <authenticator class='" +
+          MyAuthenticator.class.getName() +
+          "' />" +
+          "    </mail-server>" +
+          "  </mail-session>" +
+          "</objects>");
+    MailSession mailSession = wireContext.get(MailSession.class);
+    assertTrue("expected sync mail session", mailSession instanceof SyncMailSession);
+
+    SyncMailSession syncMailSession = (SyncMailSession) mailSession;
+    List<MailServer> mailServers = syncMailSession.getMailServers();
+    assertEquals(1, mailServers.size());
+
+    MailServer mailServer = mailServers.get(0);
+    assertSame(MyAuthenticator.class, mailServer.getAuthenticator().getClass());
+  }
+
+  public void testNoSessionProperties() {
+    try {
+      createWireContext("<objects>"
+        + "  <mail-session>"
+        + "    <mail-server />"
+        + "  </mail-session>"
+        + "</objects>");
+      fail("expected wire context creation to puke");
+    }
+    catch (JbpmException e) {
+      // session properties are mandatory
+    }
+  }
+
+  public void testAddressFilter() {
+    WireContext wireContext =
+        createWireContext("<objects>"
+          + "  <mail-session>"
+          + "    <mail-server>"
+          + "      <address-filter>"
+          + "        <include>.+ at jbpm.org</include>"
+          + "        <exclude>.+ at jboss.com</exclude>"
+          + "        <exclude>.+ at redhat.com</exclude>"
+          + "      </address-filter>"
+          + "      <session-properties />"
+          + "    </mail-server>"
+          + "  </mail-session>"
+          + "</objects>");
+    MailSession mailSession = wireContext.get(MailSession.class);
+    assertTrue("expected sync mail session", mailSession instanceof SyncMailSession);
+
+    SyncMailSession syncMailSession = (SyncMailSession) mailSession;
+    List<MailServer> mailServers = syncMailSession.getMailServers();
+    assertEquals(1, mailServers.size());
+
+    MailServer mailServer = mailServers.get(0);
+    AddressFilter addressFilter = mailServer.getAddressFilter();
+
+    List<Pattern> includePatterns = addressFilter.getIncludePatterns();
+    assertEquals(1, includePatterns.size());
+    assertEquals(".+ at jbpm.org", includePatterns.get(0).toString());
+
+    List<Pattern> excludePatterns = addressFilter.getExcludePatterns();
+    assertEquals(2, excludePatterns.size());
+    assertEquals(".+ at jboss.com", excludePatterns.get(0).toString());
+    assertEquals(".+ at redhat.com", excludePatterns.get(1).toString());
+
+    assertEquals(0, mailServer.getSessionProperties().size());
+  }
+
+  public void testNoAddressFilter() {
+    WireContext wireContext =
+        createWireContext("<objects>"
+          + "  <mail-session>"
+          + "    <mail-server>"
+          + "      <session-properties />"
+          + "    </mail-server>"
+          + "  </mail-session>"
+          + "</objects>");
+    MailSession mailSession = wireContext.get(MailSession.class);
+    assertTrue("expected sync mail session", mailSession instanceof SyncMailSession);
+
+    SyncMailSession syncMailSession = (SyncMailSession) mailSession;
+    List<MailServer> mailServers = syncMailSession.getMailServers();
+    assertEquals(1, mailServers.size());
+
+    MailServer mailServer = mailServers.get(0);
+    assertNull("expected no address filter", mailServer.getAddressFilter());
+    assertEquals(0, mailServer.getSessionProperties().size());
+  }
+
+  public void testMultipleMailServers() {
+    WireContext wireContext =
+        createWireContext("<objects>"
+          + "  <mail-session>"
+          + "    <mail-server>"
+          + "      <session-properties />"
+          + "    </mail-server>"
+          + "    <mail-server>"
+          + "      <session-properties />"
+          + "    </mail-server>"
+          + "    <mail-server>"
+          + "      <session-properties />"
+          + "    </mail-server>"
+          + "  </mail-session>"
+          + "</objects>");
+    MailSession mailSession = wireContext.get(MailSession.class);
+    assertTrue("expected sync mail session", mailSession instanceof SyncMailSession);
+
+    SyncMailSession syncMailSession = (SyncMailSession) mailSession;
+    List<MailServer> mailServers = syncMailSession.getMailServers();
+    assertEquals(3, mailServers.size());
+  }
 }




More information about the jbpm-commits mailing list