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

do-not-reply at jboss.org do-not-reply at jboss.org
Tue Apr 7 17:51:07 EDT 2009


Author: alex.guizar at jboss.com
Date: 2009-04-07 17:51:07 -0400 (Tue, 07 Apr 2009)
New Revision: 4493

Added:
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java
   jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/
   jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/AddressFilterTest.java
Removed:
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/
   jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/filter/
   jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/WildCardAddressFilterTest.java
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/SyncMailSession.java
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java
   jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java
Log:
make address filter a concrete class

Copied: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java (from rev 4471, jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/WildCardAddressFilter.java)
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java	                        (rev 0)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/AddressFilter.java	2009-04-07 21:51:07 UTC (rev 4493)
@@ -0,0 +1,100 @@
+package org.jbpm.pvm.internal.email.impl;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.regex.Pattern;
+
+import javax.mail.internet.InternetAddress;
+
+/**
+ * Allows filtering of to/cc/bcc recipient lists based on regular expressions for include and
+ * exclude patterns.
+ * 
+ * @author Brad Davis
+ */
+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;
+
+	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);
+	}
+
+	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;
+	}
+
+	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;
+	}
+
+	/**
+	 * Gets the patterns of addresses to be included. All addresses are included when omitted.
+	 */
+	public Collection<Pattern> getIncludePatterns() {
+		return includePatterns;
+	}
+
+	public void addIncludePattern(Pattern includePattern) {
+		if (includePatterns == null) includePatterns = new ArrayList<Pattern>();
+		includePatterns.add(includePattern);
+	}
+
+	protected void setIncludePatterns(Collection<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;
+	}
+
+	public void addExcludePattern(Pattern excludePattern) {
+		if (excludePatterns == null) excludePatterns = new ArrayList<Pattern>();
+		excludePatterns.add(excludePattern);
+	}
+
+	protected void setExcludePatterns(Collection<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-07 21:00:21 UTC (rev 4492)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/MailServer.java	2009-04-07 21:51:07 UTC (rev 4493)
@@ -4,8 +4,6 @@
 
 import javax.mail.Session;
 
-import org.jbpm.pvm.internal.email.filter.AddressFilter;
-
 /**
  * Settings for establishing a session with a mail server.
  * 

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-07 21:00:21 UTC (rev 4492)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/impl/SyncMailSession.java	2009-04-07 21:51:07 UTC (rev 4493)
@@ -9,7 +9,6 @@
 import org.apache.commons.logging.LogFactory;
 import org.apache.commons.mail.Email;
 import org.apache.commons.mail.EmailException;
-import org.jbpm.pvm.internal.email.filter.AddressFilter;
 import org.jbpm.pvm.internal.email.spi.MailSession;
 
 public class SyncMailSession implements MailSession {

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-07 21:00:21 UTC (rev 4492)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/wire/binding/MailSessionBinding.java	2009-04-07 21:51:07 UTC (rev 4493)
@@ -24,9 +24,9 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.jbpm.pvm.internal.email.filter.WildCardAddressFilter;
 import org.jbpm.pvm.internal.email.impl.MailServer;
 import org.jbpm.pvm.internal.email.impl.SyncMailSession;
+import org.jbpm.pvm.internal.email.impl.AddressFilter;
 import org.jbpm.pvm.internal.email.spi.MailSession;
 import org.jbpm.pvm.internal.util.XmlUtil;
 import org.jbpm.pvm.internal.wire.Descriptor;
@@ -81,7 +81,7 @@
 			excludesDescriptor.setValueDescriptors(excludeDescriptors);
 
 			// address filter
-			ObjectDescriptor filterDescriptor = new ObjectDescriptor(WildCardAddressFilter.class);
+			ObjectDescriptor filterDescriptor = new ObjectDescriptor(AddressFilter.class);
 			filterDescriptor.addInjection("includePatterns", includesDescriptor);
 			filterDescriptor.addInjection("excludePatterns", excludesDescriptor);
 

Copied: jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl (from rev 4470, jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/filter)

Copied: jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/AddressFilterTest.java (from rev 4471, jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/filter/WildCardAddressFilterTest.java)
===================================================================
--- jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/AddressFilterTest.java	                        (rev 0)
+++ jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/AddressFilterTest.java	2009-04-07 21:51:07 UTC (rev 4493)
@@ -0,0 +1,90 @@
+package org.jbpm.pvm.internal.email.impl;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.regex.Pattern;
+
+import javax.mail.internet.InternetAddress;
+
+import junit.framework.TestCase;
+
+public class AddressFilterTest extends TestCase{
+
+	/**
+	 * When no filter is provided, all addresses should be contained in the filtered list.
+	 */
+	public void testWildCardIncludesNoFilters() throws Exception
+	{
+		AddressFilter filter = new AddressFilter();
+		
+		Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
+		addresses.add(new InternetAddress("test at jboss.org"));
+		
+		Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
+		assertTrue(filteredAddresses.contains(new InternetAddress("test at jboss.org")));
+	}
+	
+	/**
+	 * If the includes is provided, no other addresses except those explicitly listed should 
+	 * be included in the filtered list.
+	 */
+	public void testWildCardIncludes() throws Exception
+	{
+		AddressFilter filter = new AddressFilter();
+		
+		Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
+		addresses.add(new InternetAddress("test at jboss.org"));
+		addresses.add(new InternetAddress("test at amentra.com"));
+		
+		filter.addIncludePattern(Pattern.compile(".+ at jboss.org"));
+		
+		Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
+		assertTrue(filteredAddresses.contains(new InternetAddress("test at jboss.org")));
+		assertTrue(!filteredAddresses.contains(new InternetAddress("test at amentra.com")));
+	}
+	
+	/**
+	 * The includes should always override the excludes.
+	 */
+	public void testWildCardIncludesOverridesExcludes() throws Exception
+	{
+		AddressFilter filter = new AddressFilter();
+		
+		Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
+		addresses.add(new InternetAddress("test at jboss.org"));
+		addresses.add(new InternetAddress("test at amentra.com"));
+		
+		filter.addIncludePattern(Pattern.compile(".+ at jboss.org"));
+		filter.addExcludePattern(Pattern.compile(".+ at amentra.com"));
+		
+		Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
+		//Includes jboss
+		assertTrue(filteredAddresses.contains(new InternetAddress("test at jboss.org")));
+		//Does not include amentra.
+		assertTrue(!filteredAddresses.contains(new InternetAddress("test at amentra.com")));
+	}
+	
+	/**
+	 * When the excludes is specified but no includes, all addresses except those explicitly stated
+	 * should be contained in the filtered set.
+	 */
+	public void testWildCardExcludes() throws Exception
+	{
+		AddressFilter filter = new AddressFilter();
+		
+		Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
+		addresses.add(new InternetAddress("test at jboss.org"));
+		addresses.add(new InternetAddress("test at amentra.com"));
+		addresses.add(new InternetAddress("test at redhat.com"));
+		
+		filter.addExcludePattern(Pattern.compile(".+ at jboss.org"));
+		
+		Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
+		//Does not include jboss
+		assertTrue(!filteredAddresses.contains(new InternetAddress("test at jboss.org")));
+		//Does include amentra
+		assertTrue(filteredAddresses.contains(new InternetAddress("test at amentra.com")));
+		//Does include redhat
+		assertTrue(filteredAddresses.contains(new InternetAddress("test at redhat.com")));
+	}
+}

Deleted: jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/WildCardAddressFilterTest.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/filter/WildCardAddressFilterTest.java	2009-04-07 00:38:39 UTC (rev 4470)
+++ jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/email/impl/WildCardAddressFilterTest.java	2009-04-07 21:51:07 UTC (rev 4493)
@@ -1,111 +0,0 @@
-package org.jbpm.pvm.internal.email.filter;
-
-import java.util.Collection;
-import java.util.HashSet;
-
-import javax.mail.internet.InternetAddress;
-
-import junit.framework.TestCase;
-
-public class WildCardAddressFilterTest extends TestCase{
-
-	/**
-	 * Tests that the WildCardAddressFilter is-a AddressFilter implementation.
-	 */
-	public void testInstantiationWildCards()
-	{
-		WildCardAddressFilter filter = new WildCardAddressFilter();
-		//Ensure it is-a AddressFilter.
-		this.assertTrue(AddressFilter.class.isAssignableFrom(filter.getClass()));
-	}
-	
-	/**
-	 * When no filter is provided, all addresses should be contained in the filtered list.
-	 */
-	public void testWildCardIncludesNoFilters() throws Exception
-	{
-		WildCardAddressFilter filter = new WildCardAddressFilter();
-		
-		Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
-		addresses.add(new InternetAddress("test at jboss.org"));
-		
-		Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
-		this.assertTrue(filteredAddresses.contains(new InternetAddress("test at jboss.org")));
-	}
-	
-	/**
-	 * If the includes is provided, no other addresses except those explicitly listed should 
-	 * be included in the filtered list.
-	 */
-	public void testWildCardIncludes() throws Exception
-	{
-		WildCardAddressFilter filter = new WildCardAddressFilter();
-		
-		Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
-		addresses.add(new InternetAddress("test at jboss.org"));
-		addresses.add(new InternetAddress("test at amentra.com"));
-		
-		Collection<String> regExIncludes = new HashSet<String>();
-		regExIncludes.add(".+ at jboss.org");
-		filter.setIncludePatterns(regExIncludes);
-		
-		Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
-		this.assertTrue(filteredAddresses.contains(new InternetAddress("test at jboss.org")));
-		this.assertTrue(!filteredAddresses.contains(new InternetAddress("test at amentra.com")));
-	}
-	
-	/**
-	 * The includes should always override the excludes.
-	 */
-	public void testWildCardIncludesOverridesExcludes() throws Exception
-	{
-		WildCardAddressFilter filter = new WildCardAddressFilter();
-		
-		Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
-		addresses.add(new InternetAddress("test at jboss.org"));
-		addresses.add(new InternetAddress("test at amentra.com"));
-		
-		Collection<String> regExIncludes = new HashSet<String>();
-		regExIncludes.add(".+ at jboss.org");
-		filter.setIncludePatterns(regExIncludes);
-		
-		Collection<String> regExExcludes = new HashSet<String>();
-		regExExcludes.add(".+ at jboss.org");
-		filter.setExcludePatterns(regExExcludes);
-		
-		Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
-		//Includes jboss
-		this.assertTrue(filteredAddresses.contains(new InternetAddress("test at jboss.org")));
-		//Does not include amentra.
-		this.assertTrue(!filteredAddresses.contains(new InternetAddress("test at amentra.com")));
-	}
-	
-	/**
-	 * When the excludes is specified but no includes, all addresses except those explicitly stated
-	 * should be contained in the filtered set.
-	 */
-	public void testWildCardExcludes() throws Exception
-	{
-		WildCardAddressFilter filter = new WildCardAddressFilter();
-		
-		Collection<InternetAddress> addresses = new HashSet<InternetAddress>();
-		addresses.add(new InternetAddress("test at jboss.org"));
-		addresses.add(new InternetAddress("test at amentra.com"));
-		addresses.add(new InternetAddress("test at redhat.com"));
-		
-		Collection<String> regExExcludes = new HashSet<String>();
-		regExExcludes.add(".+ at jboss.org");
-		filter.setExcludePatterns(regExExcludes);
-		
-		Collection<InternetAddress> filteredAddresses = filter.filter(addresses);
-		//Does not include jboss
-		this.assertTrue(!filteredAddresses.contains(new InternetAddress("test at jboss.org")));
-		//Does include amentra
-		this.assertTrue(filteredAddresses.contains(new InternetAddress("test at amentra.com")));
-		//Does include redhat
-		this.assertTrue(filteredAddresses.contains(new InternetAddress("test at redhat.com")));
-	}
-	
-	
-	
-}

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-07 21:00:21 UTC (rev 4492)
+++ jbpm4/branches/email/modules/pvm/src/test/java/org/jbpm/pvm/internal/wire/MailSessionWireTest.java	2009-04-07 21:51:07 UTC (rev 4493)
@@ -25,9 +25,9 @@
 import java.util.Properties;
 import java.util.regex.Pattern;
 
-import org.jbpm.pvm.internal.email.filter.WildCardAddressFilter;
 import org.jbpm.pvm.internal.email.impl.MailServer;
 import org.jbpm.pvm.internal.email.impl.SyncMailSession;
+import org.jbpm.pvm.internal.email.impl.AddressFilter;
 import org.jbpm.pvm.internal.email.spi.MailSession;
 
 /**
@@ -62,7 +62,7 @@
     assertEquals(1, serverConfigs.size());
 
     MailServer serverConfig = serverConfigs.iterator().next();
-    WildCardAddressFilter addressFilter = (WildCardAddressFilter) serverConfig.getAddressFilter();
+    AddressFilter addressFilter = serverConfig.getAddressFilter();
     
     Collection<Pattern> includePatterns = addressFilter.getIncludePatterns();
     assertEquals(1, includePatterns.size());




More information about the jbpm-commits mailing list