[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