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

do-not-reply at jboss.org do-not-reply at jboss.org
Fri Apr 3 11:03:51 EDT 2009


Author: bradsdavis
Date: 2009-04-03 11:03:51 -0400 (Fri, 03 Apr 2009)
New Revision: 4410

Added:
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/AddressFilter.java
   jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/WildCardAddressFilter.java
Log:
Added wild card REGEX filter.

Added: jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/AddressFilter.java
===================================================================
--- jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/AddressFilter.java	                        (rev 0)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/AddressFilter.java	2009-04-03 15:03:51 UTC (rev 4410)
@@ -0,0 +1,17 @@
+package org.jbpm.pvm.internal.email.filter;
+
+import java.util.Collection;
+
+import javax.mail.internet.InternetAddress;
+
+public interface AddressFilter {
+	/**
+	 * This method should remove 
+	 * 
+	 * @param to To addresses for the email.
+	 * @param cc CC addresses for the email.
+	 * @param bcc BCC addresses for the email.
+	 */
+	public void filter(Collection<InternetAddress> to, Collection<InternetAddress> cc, Collection<InternetAddress> bcc);
+
+}

Added: 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/filter/WildCardAddressFilter.java	                        (rev 0)
+++ jbpm4/branches/email/modules/pvm/src/main/java/org/jbpm/pvm/internal/email/filter/WildCardAddressFilter.java	2009-04-03 15:03:51 UTC (rev 4410)
@@ -0,0 +1,86 @@
+package org.jbpm.pvm.internal.email.filter;
+
+import java.util.Collection;
+import java.util.HashSet;
+import java.util.regex.Pattern;
+
+import javax.mail.internet.InternetAddress;
+
+
+public abstract class WildCardAddressFilter implements AddressFilter {
+
+	private Collection<String> includePatterns;
+	private Collection<String> excludePatterns;
+	
+	public void filter(Collection<InternetAddress> to, Collection<InternetAddress> cc, Collection<InternetAddress> bcc)
+	{
+		Collection<InternetAddress> toRemove = new HashSet<InternetAddress>();
+		if(to!=null)
+		{
+			//Loop over for addresses to remove.
+			for(InternetAddress address : to)
+			{
+				if(!keepAddress(address))
+				{
+					toRemove.add(address);
+				}
+			}
+		}
+		
+		if(cc!=null)
+		{
+			//Loop over for addresses to remove.
+			for(InternetAddress address : cc)
+			{
+				if(!keepAddress(address))
+				{
+					toRemove.add(address);
+				}
+			}
+		}
+		
+		if(bcc!=null)
+		{
+			//Loop over for addresses to remove.
+			for(InternetAddress address : bcc)
+			{
+				if(!keepAddress(address))
+				{
+					toRemove.add(address);
+				}
+			}
+		}
+		
+		//Now remove all collected excludes.
+		if(to!=null)to.removeAll(toRemove);
+		if(cc!=null)cc.removeAll(toRemove);
+		if(bcc!=null)bcc.removeAll(toRemove);
+	}
+	
+	private boolean keepAddress(InternetAddress address)
+	{	
+		if(includePatterns!=null)
+		{
+			for(String pattern : includePatterns)
+			{
+				if(Pattern.matches(pattern, address.toString()))
+				{
+					return true;
+				}
+			}
+		}
+		for(String pattern : excludePatterns)
+		{
+			if(Pattern.matches(pattern, address.toString()))
+			{
+				return false;
+			}
+		}
+		if(includePatterns==null||includePatterns.isEmpty())
+		{
+			//Includes were not set, which means if it wasn't excluded, include it.
+			return true;
+		}
+		return false;
+	}
+}




More information about the jbpm-commits mailing list