[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