You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2016/09/02 06:23:26 UTC

[01/11] james-project git commit: MAILET-121 Complete tests for SenderIs

Repository: james-project
Updated Branches:
  refs/heads/master 085eebba9 -> 4a2550182


MAILET-121 Complete tests for SenderIs


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/260b5ec4
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/260b5ec4
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/260b5ec4

Branch: refs/heads/master
Commit: 260b5ec484d0b9f7745674ef58d04ac9d191afd7
Parents: 1f6f1e2
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 31 11:14:08 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:15 2016 +0700

----------------------------------------------------------------------
 .../james/transport/matchers/SenderIsTest.java  | 37 ++++++++++++++++++--
 1 file changed, 34 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/260b5ec4/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsTest.java
index e0fc0e1..7b2297e 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsTest.java
@@ -22,30 +22,37 @@ package org.apache.james.transport.matchers;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import javax.mail.MessagingException;
+
 import org.apache.mailet.MailAddress;
-import org.apache.mailet.Matcher;
 import org.apache.mailet.base.test.FakeMail;
 import org.apache.mailet.base.test.FakeMailContext;
 import org.apache.mailet.base.test.FakeMatcherConfig;
 import org.junit.Before;
+import org.junit.Rule;
 import org.junit.Test;
+import org.junit.rules.ExpectedException;
 
 public class SenderIsTest {
 
     private final String SENDER_NAME = "test@james.apache.org";
 
-    private Matcher matcher;
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    private SenderIs matcher;
     private MailAddress recipient;
 
     @Before
     public void setUp() throws Exception {
         matcher = new SenderIs();
-        matcher.init(new FakeMatcherConfig("SenderIs=" + SENDER_NAME, FakeMailContext.defaultContext()));
         recipient = new MailAddress("recipient@james.apache.org");
     }
 
     @Test
     public void shouldMatchWhenGoodSender() throws Exception {
+        matcher.init(new FakeMatcherConfig("SenderIs=" + SENDER_NAME, FakeMailContext.defaultContext()));
+
         FakeMail fakeMail = FakeMail.builder()
             .recipient(recipient)
             .sender(new MailAddress(SENDER_NAME))
@@ -56,6 +63,8 @@ public class SenderIsTest {
 
     @Test
     public void shouldNotMatchWhenWrongSender() throws Exception {
+        matcher.init(new FakeMatcherConfig("SenderIs=" + SENDER_NAME, FakeMailContext.defaultContext()));
+
         FakeMail fakeMail = FakeMail.builder()
             .recipient(recipient)
             .sender(new MailAddress("other@james.apache.org"))
@@ -66,10 +75,32 @@ public class SenderIsTest {
 
     @Test
     public void shouldNotMatchWhenNullSender() throws Exception {
+        matcher.init(new FakeMatcherConfig("SenderIs=" + SENDER_NAME, FakeMailContext.defaultContext()));
+
         FakeMail fakeMail = FakeMail.builder()
             .recipient(recipient)
             .build();
 
         assertThat(matcher.match(fakeMail)).isNull();
     }
+
+    @Test
+    public void senderIsShouldBeConfigurableWithSeveralAddresses() throws Exception {
+        String mailAddress = "any@apache.org";
+        matcher.init(new FakeMatcherConfig("SenderIs=" + mailAddress + ", " + SENDER_NAME, FakeMailContext.defaultContext()));
+
+        assertThat(matcher.getSenders()).containsExactly(new MailAddress(mailAddress), new MailAddress(SENDER_NAME));
+    }
+
+    @Test
+    public void senderIsShouldThrowWhenNoAddressesPassedByConfiguration() throws Exception {
+        expectedException.expect(MessagingException.class);
+        matcher.init(new FakeMatcherConfig("SenderIs=", FakeMailContext.defaultContext()));
+    }
+
+    @Test
+    public void senderIsShouldThrowWhenNoConfiguration() throws Exception {
+        expectedException.expect(MessagingException.class);
+        matcher.init(new FakeMatcherConfig("SenderIs", FakeMailContext.defaultContext()));
+    }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[05/11] james-project git commit: MAILET-121 Improve SenderIsRegexTest

Posted by bt...@apache.org.
MAILET-121 Improve SenderIsRegexTest


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1fdde845
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1fdde845
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1fdde845

Branch: refs/heads/master
Commit: 1fdde845e1f2daad7e500461dd6c8941f79ced70
Parents: a6b30bd
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 31 11:34:16 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:36 2016 +0700

----------------------------------------------------------------------
 .../transport/matchers/SenderIsRegexTest.java   | 129 ++++++++-----------
 1 file changed, 57 insertions(+), 72 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1fdde845/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsRegexTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsRegexTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsRegexTest.java
index 75cebb9..6345f33 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsRegexTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsRegexTest.java
@@ -20,99 +20,84 @@
 
 package org.apache.james.transport.matchers;
 
-import java.io.UnsupportedEncodingException;
-import java.util.Collection;
+import static org.assertj.core.api.Assertions.assertThat;
 
 import javax.mail.MessagingException;
 
-import org.apache.james.transport.matchers.SenderIsRegex;
 import org.apache.mailet.MailAddress;
-import org.apache.mailet.Matcher;
-
-public class SenderIsRegexTest extends AbstractSenderIsTest {
-
-    private String regex = ".*";
-
-    public SenderIsRegexTest(String arg0) throws UnsupportedEncodingException {
-        super(arg0);
-    }
-
-    private void setRegex(String regex) {
-        this.regex = regex;
+import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.FakeMailContext;
+import org.apache.mailet.base.test.FakeMatcherConfig;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class SenderIsRegexTest {
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    public static final String SENDER_NAME = "test@james.apache.org";
+    private SenderIsRegex matcher;
+    private MailAddress recipient;
+
+    @Before
+    public void setUp() throws Exception {
+        matcher = new SenderIsRegex();
+        recipient = new MailAddress("recipient@apache.org");
     }
 
-    // test if matched
-    public void testSenderIsRegexMatchedAllRecipients()
-            throws MessagingException {
-        String SENDER_NAME = "test@james.apache.org";
-        setSender(new MailAddress(SENDER_NAME));
-        setRegex(".*@.*");
-        setupMockedMail();
-        setupMatcher();
+    @Test
+    public void shouldMatchOnMatchingPattern() throws Exception {
+        matcher.init(new FakeMatcherConfig("SenderIsRegex=.*@.*", FakeMailContext.defaultContext()));
 
-        Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);
+        FakeMail fakeMail = FakeMail.builder()
+            .sender(new MailAddress(SENDER_NAME))
+            .recipient(recipient)
+            .build();
 
-        assertNotNull(matchedRecipients);
-        assertEquals(matchedRecipients.size(), mockedMail.getRecipients()
-                .size());
+        assertThat(matcher.match(fakeMail)).containsExactly(recipient);
     }
 
-    // test if not matched
-    public void testSenderIsRegexNotMatchedAllRecipients()
-            throws MessagingException {
-        setSender(new MailAddress("t@james.apache.org"));
-        setRegex("^\\.");
-
-        setupMockedMail();
-        setupMatcher();
+    @Test
+    public void shouldNotMatchWhenNullSender() throws Exception {
+        matcher.init(new FakeMatcherConfig("SenderIsRegex=.*@.*", FakeMailContext.defaultContext()));
 
-        Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);
+        FakeMail fakeMail = FakeMail.builder()
+            .recipient(recipient)
+            .build();
 
-        assertNull(matchedRecipients);
+        assertThat(matcher.match(fakeMail)).isNull();
     }
 
-    // test if throw exception if no pattern is used
-    public void testThrowExceptionWithoutPattern() throws MessagingException {
-        boolean exceptionCatched = false;
-        setSender(new MailAddress("t@james.apache.org"));
-        setRegex("");
+    @Test
+    public void shouldNotMatchOnNonMatchingPattern() throws Exception {
+        matcher.init(new FakeMatcherConfig("SenderIsRegex=^\\.", FakeMailContext.defaultContext()));
 
-        setupMockedMail();
-
-        try {
-            setupMatcher();
-        } catch (MessagingException m) {
-            exceptionCatched = true;
-        }
-        assertTrue(exceptionCatched);
-    }
+        FakeMail fakeMail = FakeMail.builder()
+            .sender(new MailAddress(SENDER_NAME))
+            .recipient(recipient)
+            .build();
 
-    // test if throw exception if invalid pattern is used
-    public void testThrowExceptionWithInvalidPattern()
-            throws MessagingException {
-        boolean exceptionCatched = false;
-        setSender(new MailAddress("t@james.apache.org"));
-        setRegex("(.");
-
-        setupMockedMail();
-
-        try {
-            setupMatcher();
-        } catch (MessagingException m) {
-            exceptionCatched = true;
-        }
-        assertTrue(exceptionCatched);
+        assertThat(matcher.match(fakeMail)).isNull();
     }
 
-    protected Matcher createMatcher() {
-        return new SenderIsRegex();
+    @Test
+    public void initShouldThrowWhenEmptyCondition() throws MessagingException {
+        expectedException.expect(MessagingException.class);
+        matcher.init(new FakeMatcherConfig("SenderIsRegex=", FakeMailContext.defaultContext()));
     }
 
-    protected String getConfigOption() {
-        return "SenderIsRegex=";
+    @Test
+    public void initShouldThrowWhenNoConditions() throws MessagingException {
+        expectedException.expect(MessagingException.class);
+        matcher.init(new FakeMatcherConfig("SenderIsRegex", FakeMailContext.defaultContext()));
     }
 
-    protected String getConfigValue() {
-        return regex;
+    @Test
+    public void initShouldThrowWhenInvalidPattern() throws MessagingException {
+        expectedException.expect(MessagingException.class);
+        matcher.init(new FakeMatcherConfig("SenderIsRegex=(.", FakeMailContext.defaultContext()));
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[03/11] james-project git commit: MAILET-121 SenderIsTest should match our coding conventions

Posted by bt...@apache.org.
MAILET-121 SenderIsTest should match our coding conventions


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5eb9b61d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5eb9b61d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5eb9b61d

Branch: refs/heads/master
Commit: 5eb9b61d28e55200ab643a09d8f6dc4237f1b921
Parents: 260b5ec
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 31 15:12:18 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:32 2016 +0700

----------------------------------------------------------------------
 .../james/transport/matchers/SenderIs.java      | 47 ++++++++++++++------
 1 file changed, 34 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/5eb9b61d/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIs.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIs.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIs.java
index 3438689..60cb5ea 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIs.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIs.java
@@ -17,30 +17,51 @@
  * under the License.                                           *
  ****************************************************************/
 
+package org.apache.james.transport.matchers;
 
+import java.util.Collection;
+import java.util.Set;
 
-package org.apache.james.transport.matchers;
+import javax.mail.MessagingException;
+import javax.mail.internet.AddressException;
 
-import org.apache.mailet.base.GenericMatcher;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
+import org.apache.mailet.base.GenericMatcher;
 
-import java.util.Collection;
-import java.util.StringTokenizer;
+import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Function;
+import com.google.common.base.Splitter;
+import com.google.common.base.Strings;
+import com.google.common.base.Throwables;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
 
-/**
- * Matches mail where the sender is contained in a configurable list.
- * @version 1.0.0, 24/04/1999
- */
 public class SenderIs extends GenericMatcher {
 
-    private Collection<MailAddress> senders;
+    private Set<MailAddress> senders;
+
+    @VisibleForTesting
+    Set<MailAddress> getSenders() {
+        return senders;
+    }
 
     public void init() throws javax.mail.MessagingException {
-        StringTokenizer st = new StringTokenizer(getCondition(), ", \t", false);
-        senders = new java.util.HashSet<MailAddress>();
-        while (st.hasMoreTokens()) {
-            senders.add(new MailAddress(st.nextToken()));
+        if (Strings.isNullOrEmpty(getCondition())) {
+            throw new MessagingException("SenderIs should have at least one address as parameter");
+        }
+        senders = FluentIterable.from(Splitter.on(", ").split(getCondition())).transform(new Function<String, MailAddress>() {
+            public MailAddress apply(String s) {
+                try {
+                    return new MailAddress(s);
+                } catch (AddressException e) {
+                    throw Throwables.propagate(e);
+                }
+            }
+        }).toSet();
+        if (senders.size() < 1) {
+            throw new MessagingException("SenderIs should have at least one address as parameter");
         }
     }
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[10/11] james-project git commit: MAILET-121 Clarify that SenderIsRegex should not match sub parts

Posted by bt...@apache.org.
MAILET-121 Clarify that SenderIsRegex should not match sub parts


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/6866fadd
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/6866fadd
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/6866fadd

Branch: refs/heads/master
Commit: 6866fadd39650624cb11af62c0d1d6cc5f661b0a
Parents: 9736dfc
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 31 15:18:23 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:36 2016 +0700

----------------------------------------------------------------------
 .../james/transport/matchers/SenderIsRegexTest.java     | 12 ++++++++++++
 1 file changed, 12 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/6866fadd/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsRegexTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsRegexTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsRegexTest.java
index 6345f33..aeddff2 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsRegexTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsRegexTest.java
@@ -61,6 +61,18 @@ public class SenderIsRegexTest {
     }
 
     @Test
+    public void shouldNotMatchSubParts() throws Exception {
+        matcher.init(new FakeMatcherConfig("SenderIsRegex=test", FakeMailContext.defaultContext()));
+
+        FakeMail fakeMail = FakeMail.builder()
+            .sender(new MailAddress(SENDER_NAME))
+            .recipient(recipient)
+            .build();
+
+        assertThat(matcher.match(fakeMail)).isNull();
+    }
+
+    @Test
     public void shouldNotMatchWhenNullSender() throws Exception {
         matcher.init(new FakeMatcherConfig("SenderIsRegex=.*@.*", FakeMailContext.defaultContext()));
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[07/11] james-project git commit: MAILET-121 Improve SenderIsRegex code quality a little

Posted by bt...@apache.org.
MAILET-121 Improve SenderIsRegex code quality a little


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/8f0e26ea
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/8f0e26ea
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/8f0e26ea

Branch: refs/heads/master
Commit: 8f0e26eafdf15c3c1778b78e0d7b5347a4bef46f
Parents: 1fdde84
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 31 15:14:46 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:36 2016 +0700

----------------------------------------------------------------------
 .../org/apache/james/transport/matchers/SenderIsRegex.java  | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/8f0e26ea/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIsRegex.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIsRegex.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIsRegex.java
index 31e847a..8b32a4f 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIsRegex.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIsRegex.java
@@ -17,8 +17,6 @@
  * under the License.                                           *
  ****************************************************************/
 
-
-
 package org.apache.james.transport.matchers;
 
 import org.apache.mailet.base.GenericMatcher;
@@ -31,6 +29,8 @@ import java.util.regex.PatternSyntaxException;
 
 import javax.mail.MessagingException;
 
+import com.google.common.base.Strings;
+
 /**
  * <P>Matches mails that are sent by a sender whose address matches a regular expression.</P>
  * <P>Is equivalent to the {@link RecipientIsRegex} matcher but matching on the sender.</P>
@@ -54,11 +54,12 @@ import javax.mail.MessagingException;
  * @since 2.2.0
  */
 public class SenderIsRegex extends GenericMatcher {
-    Pattern pattern   = null;
+
+    private Pattern pattern;
 
     public void init() throws MessagingException {
         String patternString = getCondition();
-        if ((patternString == null) || (patternString.equals(""))) {
+        if (Strings.isNullOrEmpty(patternString)) {
             throw new MessagingException("Pattern is missing");
         }
         


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[04/11] james-project git commit: MAILET-121 SenderIs should rely on email condition reader

Posted by bt...@apache.org.
MAILET-121 SenderIs should rely on email condition reader


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9736dfc0
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9736dfc0
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9736dfc0

Branch: refs/heads/master
Commit: 9736dfc04ddfa7641bb7814752b9bc61cbf02c79
Parents: 1a13bf3
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 31 17:56:13 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:36 2016 +0700

----------------------------------------------------------------------
 .../apache/james/transport/matchers/SenderIs.java | 18 ++----------------
 1 file changed, 2 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/9736dfc0/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIs.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIs.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIs.java
index 60cb5ea..0774a2c 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIs.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIs.java
@@ -23,20 +23,14 @@ import java.util.Collection;
 import java.util.Set;
 
 import javax.mail.MessagingException;
-import javax.mail.internet.AddressException;
 
+import org.apache.james.transport.matchers.utils.MailAddressCollectionReader;
 import org.apache.mailet.Mail;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.base.GenericMatcher;
 
 import com.google.common.annotations.VisibleForTesting;
-import com.google.common.base.Function;
-import com.google.common.base.Splitter;
 import com.google.common.base.Strings;
-import com.google.common.base.Throwables;
-import com.google.common.collect.FluentIterable;
-import com.google.common.collect.ImmutableSet;
-import com.google.common.collect.Iterables;
 
 public class SenderIs extends GenericMatcher {
 
@@ -51,15 +45,7 @@ public class SenderIs extends GenericMatcher {
         if (Strings.isNullOrEmpty(getCondition())) {
             throw new MessagingException("SenderIs should have at least one address as parameter");
         }
-        senders = FluentIterable.from(Splitter.on(", ").split(getCondition())).transform(new Function<String, MailAddress>() {
-            public MailAddress apply(String s) {
-                try {
-                    return new MailAddress(s);
-                } catch (AddressException e) {
-                    throw Throwables.propagate(e);
-                }
-            }
-        }).toSet();
+        senders = MailAddressCollectionReader.read(getCondition());
         if (senders.size() < 1) {
             throw new MessagingException("SenderIs should have at least one address as parameter");
         }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[11/11] james-project git commit: MAILET-122 Handle TAB in MailAddressCollectionReader

Posted by bt...@apache.org.
MAILET-122 Handle TAB in MailAddressCollectionReader


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/4a255018
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/4a255018
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/4a255018

Branch: refs/heads/master
Commit: 4a255018269ce7303c51fbcf13b1f4d091b8a69a
Parents: 6866fad
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Sep 1 11:20:59 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:37 2016 +0700

----------------------------------------------------------------------
 .../utils/MailAddressCollectionReader.java       |  2 +-
 .../util/MailAddressCollectionReaderTest.java    | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/4a255018/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
index 0c936ed..17ee09e 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
@@ -38,7 +38,7 @@ public class MailAddressCollectionReader {
 
     public static Set<MailAddress> read(String condition) {
         Preconditions.checkArgument(!Strings.isNullOrEmpty(condition));
-        return FluentIterable.from(Splitter.on(", ").split(condition)).transform(new Function<String, MailAddress>() {
+        return FluentIterable.from(Splitter.onPattern(",( |\t)").split(condition)).transform(new Function<String, MailAddress>() {
             @Override
             public MailAddress apply(String s) {
                 try {

http://git-wip-us.apache.org/repos/asf/james-project/blob/4a255018/mailet/standard/src/test/java/org/apache/james/transport/matchers/util/MailAddressCollectionReaderTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/util/MailAddressCollectionReaderTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/util/MailAddressCollectionReaderTest.java
index 116a031..46cc41e 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/util/MailAddressCollectionReaderTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/util/MailAddressCollectionReaderTest.java
@@ -74,6 +74,25 @@ public class MailAddressCollectionReaderTest {
     }
 
     @Test
+    public void readShouldParseTwoEmailTabSeparated() throws Exception {
+        MailAddress mailAddress1 = new MailAddress("valid@apache.org");
+        MailAddress mailAddress2 = new MailAddress("bis@apache.org");
+
+        assertThat(MailAddressCollectionReader.read(mailAddress1.toString() + ",\t" + mailAddress2.toString()))
+            .containsExactly(mailAddress1, mailAddress2);
+    }
+
+
+    @Test
+    public void readShouldParseTwoEmailTabAndSpaceCombinaison() throws Exception {
+        MailAddress mailAddress1 = new MailAddress("valid@apache.org");
+        MailAddress mailAddress2 = new MailAddress("bis@apache.org");
+
+        assertThat(MailAddressCollectionReader.read(mailAddress1.toString() + ",\t  \t\t \t " + mailAddress2.toString()))
+            .containsExactly(mailAddress1, mailAddress2);
+    }
+
+    @Test
     public void readShouldRemoveDuplicates() throws Exception {
         MailAddress mailAddress = new MailAddress("valid@apache.org");
 


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[08/11] james-project git commit: MAILET-121 Remove AbstractSenderIsTest

Posted by bt...@apache.org.
MAILET-121 Remove AbstractSenderIsTest


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/d410b7ea
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/d410b7ea
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/d410b7ea

Branch: refs/heads/master
Commit: d410b7ea37a7a1b31289bb08f752b424ea8b786c
Parents: 8f0e26e
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 31 11:36:48 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:36 2016 +0700

----------------------------------------------------------------------
 .../matchers/AbstractSenderIsTest.java          | 198 -------------------
 1 file changed, 198 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/d410b7ea/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractSenderIsTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractSenderIsTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractSenderIsTest.java
deleted file mode 100644
index 2fb4978..0000000
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/AbstractSenderIsTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-/****************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one   *
- * or more contributor license agreements.  See the NOTICE file *
- * distributed with this work for additional information        *
- * regarding copyright ownership.  The ASF licenses this file   *
- * to you under the Apache License, Version 2.0 (the            *
- * "License"); you may not use this file except in compliance   *
- * with the License.  You may obtain a copy of the License at   *
- *                                                              *
- *   http://www.apache.org/licenses/LICENSE-2.0                 *
- *                                                              *
- * Unless required by applicable law or agreed to in writing,   *
- * software distributed under the License is distributed on an  *
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
- * KIND, either express or implied.  See the License for the    *
- * specific language governing permissions and limitations      *
- * under the License.                                           *
- ****************************************************************/
-
-
-package org.apache.james.transport.matchers;
-
-import java.io.Serializable;
-import java.io.UnsupportedEncodingException;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Iterator;
-
-import javax.mail.MessagingException;
-import javax.mail.internet.MimeMessage;
-import javax.mail.internet.ParseException;
-
-import org.apache.mailet.Mail;
-import org.apache.mailet.MailAddress;
-import org.apache.mailet.Matcher;
-import org.apache.mailet.base.test.FakeMailContext;
-import org.apache.mailet.base.test.FakeMatcherConfig;
-
-import junit.framework.TestCase;
-
-public abstract class AbstractSenderIsTest extends TestCase {
-
-    protected Mail mockedMail;
-
-    protected Matcher matcher;
-
-    private MailAddress sender;
-
-    public AbstractSenderIsTest(String arg0)
-            throws UnsupportedEncodingException {
-        super(arg0);
-    }
-
-    protected void setSender(MailAddress sender) {
-        this.sender = sender;
-    }
-
-    protected void setupMockedMail() {
-        mockedMail = new Mail() {
-
-            private static final long serialVersionUID = 1L;
-
-            public String getName() {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public void setName(String newName) {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public MimeMessage getMessage() throws MessagingException {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public Collection<MailAddress> getRecipients() {
-                ArrayList<MailAddress> r = new ArrayList<MailAddress>();
-                try {
-                    r.add(new MailAddress("test@localhost"));
-                } catch (ParseException ignored) {
-                }
-                return r;
-            }
-
-            public void setRecipients(Collection<MailAddress> recipients) {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public MailAddress getSender() {
-                return sender;
-            }
-
-            public String getState() {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public String getRemoteHost() {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public String getRemoteAddr() {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public String getErrorMessage() {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public void setErrorMessage(String msg) {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public void setMessage(MimeMessage message) {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public void setState(String state) {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public Serializable getAttribute(String name) {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public Iterator<String> getAttributeNames() {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public boolean hasAttributes() {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public Serializable removeAttribute(String name) {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public void removeAllAttributes() {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public Serializable setAttribute(String name, Serializable object) {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public long getMessageSize() throws MessagingException {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public Date getLastUpdated() {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-            public void setLastUpdated(Date lastUpdated) {
-                throw new UnsupportedOperationException(
-                        "Unimplemented mock service");
-            }
-
-        };
-
-    }
-
-    protected void setupMatcher() throws MessagingException {
-        matcher = createMatcher();
-        FakeMatcherConfig mci = new FakeMatcherConfig(getConfigOption()
-                + getConfigValue(), FakeMailContext.defaultContext());
-        matcher.init(mci);
-    }
-
-    protected void setupAll() throws MessagingException {
-        setupMockedMail();
-        setupMatcher();
-    }
-
-    protected abstract String getConfigOption();
-
-    protected abstract String getConfigValue();
-
-    protected abstract Matcher createMatcher();
-}


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[02/11] james-project git commit: MAILET-121 SenderIsTest should match our coding conventions

Posted by bt...@apache.org.
MAILET-121 SenderIsTest should match our coding conventions


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1f6f1e2e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1f6f1e2e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1f6f1e2e

Branch: refs/heads/master
Commit: 1f6f1e2e33982107e1137ac816c365c7390e2578
Parents: 085eebb
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 31 10:56:46 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:15 2016 +0700

----------------------------------------------------------------------
 .../james/transport/matchers/SenderIsTest.java  | 72 ++++++++++----------
 1 file changed, 35 insertions(+), 37 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1f6f1e2e/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsTest.java
index 072b1f4..e0fc0e1 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsTest.java
@@ -20,58 +20,56 @@
 
 package org.apache.james.transport.matchers;
 
-import java.io.UnsupportedEncodingException;
-import java.util.Collection;
+import static org.assertj.core.api.Assertions.assertThat;
 
-import javax.mail.MessagingException;
-
-import org.apache.james.transport.matchers.SenderIs;
 import org.apache.mailet.MailAddress;
 import org.apache.mailet.Matcher;
+import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.FakeMailContext;
+import org.apache.mailet.base.test.FakeMatcherConfig;
+import org.junit.Before;
+import org.junit.Test;
 
-public class SenderIsTest extends AbstractSenderIsTest {
+public class SenderIsTest {
 
     private final String SENDER_NAME = "test@james.apache.org";
 
-    public SenderIsTest(String arg0) throws UnsupportedEncodingException {
-        super(arg0);
-    }
-
-    // test if matched
-    public void testSenderIsMatchedAllRecipients() throws MessagingException {
-        setSender(new MailAddress(SENDER_NAME));
-
-        setupMockedMail();
-        setupMatcher();
-
-        Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);
+    private Matcher matcher;
+    private MailAddress recipient;
 
-        assertNotNull(matchedRecipients);
-        assertEquals(matchedRecipients.size(), mockedMail.getRecipients()
-                .size());
+    @Before
+    public void setUp() throws Exception {
+        matcher = new SenderIs();
+        matcher.init(new FakeMatcherConfig("SenderIs=" + SENDER_NAME, FakeMailContext.defaultContext()));
+        recipient = new MailAddress("recipient@james.apache.org");
     }
 
-    // test if not matched
-    public void testSenderIsNotMatchedAllRecipients() throws MessagingException {
-        setSender(new MailAddress("t@james.apache.org"));
+    @Test
+    public void shouldMatchWhenGoodSender() throws Exception {
+        FakeMail fakeMail = FakeMail.builder()
+            .recipient(recipient)
+            .sender(new MailAddress(SENDER_NAME))
+            .build();
 
-        setupMockedMail();
-        setupMatcher();
-
-        Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);
-
-        assertNull(matchedRecipients);
+        assertThat(matcher.match(fakeMail)).containsExactly(recipient);
     }
 
-    protected Matcher createMatcher() {
-        return new SenderIs();
-    }
+    @Test
+    public void shouldNotMatchWhenWrongSender() throws Exception {
+        FakeMail fakeMail = FakeMail.builder()
+            .recipient(recipient)
+            .sender(new MailAddress("other@james.apache.org"))
+            .build();
 
-    protected String getConfigOption() {
-        return "SenderIs=";
+        assertThat(matcher.match(fakeMail)).isNull();
     }
 
-    protected String getConfigValue() {
-        return SENDER_NAME;
+    @Test
+    public void shouldNotMatchWhenNullSender() throws Exception {
+        FakeMail fakeMail = FakeMail.builder()
+            .recipient(recipient)
+            .build();
+
+        assertThat(matcher.match(fakeMail)).isNull();
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[06/11] james-project git commit: MAILET-121 Upgrade code for SenderIsNull and related tests

Posted by bt...@apache.org.
MAILET-121 Upgrade code for SenderIsNull and related tests


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/a6b30bd0
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/a6b30bd0
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/a6b30bd0

Branch: refs/heads/master
Commit: a6b30bd0c8b28cd4d13295cc0fdd2ca85612024f
Parents: 5eb9b61
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 31 15:16:43 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:36 2016 +0700

----------------------------------------------------------------------
 .../james/transport/matchers/SenderIsNull.java  |  2 -
 .../transport/matchers/SenderIsNullTest.java    | 78 +++++++++-----------
 2 files changed, 35 insertions(+), 45 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/a6b30bd0/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIsNull.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIsNull.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIsNull.java
index 7607d4e..bd244ab 100644
--- a/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIsNull.java
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/SenderIsNull.java
@@ -17,8 +17,6 @@
  * under the License.                                           *
  ****************************************************************/
 
-
-
 package org.apache.james.transport.matchers;
 
 import org.apache.mailet.base.GenericMatcher;

http://git-wip-us.apache.org/repos/asf/james-project/blob/a6b30bd0/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsNullTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsNullTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsNullTest.java
index a13bddb..1337792 100644
--- a/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsNullTest.java
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/SenderIsNullTest.java
@@ -20,56 +20,48 @@
 
 package org.apache.james.transport.matchers;
 
-import java.io.UnsupportedEncodingException;
-import java.util.Collection;
+import static org.assertj.core.api.Assertions.assertThat;
 
-import javax.mail.MessagingException;
-
-import org.apache.james.transport.matchers.SenderIsNull;
 import org.apache.mailet.MailAddress;
-import org.apache.mailet.Matcher;
-
-public class SenderIsNullTest extends AbstractSenderIsTest {
-
-    public SenderIsNullTest(String arg0) throws UnsupportedEncodingException {
-        super(arg0);
+import org.apache.mailet.base.test.FakeMail;
+import org.apache.mailet.base.test.FakeMailContext;
+import org.apache.mailet.base.test.FakeMatcherConfig;
+import org.junit.Before;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class SenderIsNullTest {
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    private SenderIsNull matcher;
+    private MailAddress recipient;
+
+    @Before
+    public void setUp() throws Exception {
+        matcher = new SenderIsNull();
+        matcher.init(new FakeMatcherConfig("SenderIsNull", FakeMailContext.defaultContext()));
+        recipient = new MailAddress("recipient@james.apache.org");
     }
 
-    // test if matched
-    public void testSenderIsMatchedAllRecipients() throws MessagingException {
-        setSender(null);
-
-        setupMockedMail();
-        setupMatcher();
+    @Test
+    public void shouldMatchWhenNullSender() throws Exception {
+        FakeMail fakeMail = FakeMail.builder()
+            .recipient(recipient)
+            .build();
 
-        Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);
-
-        assertNotNull(matchedRecipients);
-        assertEquals(matchedRecipients.size(), mockedMail.getRecipients()
-                .size());
+        assertThat(matcher.match(fakeMail)).containsExactly(recipient);
     }
 
-    // test if not matched
-    public void testSenderIsNotMatchedAllRecipients() throws MessagingException {
-        setSender(new MailAddress("t@james.apache.org"));
-
-        setupMockedMail();
-        setupMatcher();
-
-        Collection<MailAddress> matchedRecipients = matcher.match(mockedMail);
-
-        assertNull(matchedRecipients);
-    }
-
-    protected Matcher createMatcher() {
-        return new SenderIsNull();
-    }
-
-    protected String getConfigOption() {
-        return "SenderIsNull";
-    }
+    @Test
+    public void shouldNotMatchWhenSenderIsPresent() throws Exception {
+        FakeMail fakeMail = FakeMail.builder()
+            .recipient(recipient)
+            .sender(new MailAddress("other@james.apache.org"))
+            .build();
 
-    protected String getConfigValue() {
-        return "";
+        assertThat(matcher.match(fakeMail)).isNull();
     }
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org


[09/11] james-project git commit: MAILET-121 Provide a tool to read emails from matcher condition

Posted by bt...@apache.org.
MAILET-121 Provide a tool to read emails from matcher condition

Code factorization and testing between SenderIs and RecipientIs


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/1a13bf3d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/1a13bf3d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/1a13bf3d

Branch: refs/heads/master
Commit: 1a13bf3d4ef598f9ee636c7c76863a041fca4b01
Parents: d410b7e
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Aug 31 14:00:11 2016 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Sep 2 13:22:36 2016 +0700

----------------------------------------------------------------------
 .../utils/MailAddressCollectionReader.java      | 53 ++++++++++++
 .../util/MailAddressCollectionReaderTest.java   | 85 ++++++++++++++++++++
 2 files changed, 138 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/1a13bf3d/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java b/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
new file mode 100644
index 0000000..0c936ed
--- /dev/null
+++ b/mailet/standard/src/main/java/org/apache/james/transport/matchers/utils/MailAddressCollectionReader.java
@@ -0,0 +1,53 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.transport.matchers.utils;
+
+import java.util.Set;
+
+import javax.mail.internet.AddressException;
+
+import org.apache.mailet.MailAddress;
+
+import com.google.common.base.Function;
+import com.google.common.base.Preconditions;
+import com.google.common.base.Splitter;
+import com.google.common.base.Strings;
+import com.google.common.base.Throwables;
+import com.google.common.collect.FluentIterable;
+import com.google.common.collect.ImmutableSet;
+import com.google.common.collect.Iterables;
+
+public class MailAddressCollectionReader {
+
+    public static Set<MailAddress> read(String condition) {
+        Preconditions.checkArgument(!Strings.isNullOrEmpty(condition));
+        return FluentIterable.from(Splitter.on(", ").split(condition)).transform(new Function<String, MailAddress>() {
+            @Override
+            public MailAddress apply(String s) {
+                try {
+                    return new MailAddress(s);
+                } catch (AddressException e) {
+                    throw Throwables.propagate(e);
+                }
+            }
+        }).toSet();
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/james-project/blob/1a13bf3d/mailet/standard/src/test/java/org/apache/james/transport/matchers/util/MailAddressCollectionReaderTest.java
----------------------------------------------------------------------
diff --git a/mailet/standard/src/test/java/org/apache/james/transport/matchers/util/MailAddressCollectionReaderTest.java b/mailet/standard/src/test/java/org/apache/james/transport/matchers/util/MailAddressCollectionReaderTest.java
new file mode 100644
index 0000000..116a031
--- /dev/null
+++ b/mailet/standard/src/test/java/org/apache/james/transport/matchers/util/MailAddressCollectionReaderTest.java
@@ -0,0 +1,85 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.transport.matchers.util;
+
+import static org.assertj.core.api.Assertions.assertThat;
+
+import org.apache.james.transport.matchers.utils.MailAddressCollectionReader;
+import org.apache.mailet.MailAddress;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class MailAddressCollectionReaderTest {
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    @Test
+    public void readShouldThrowOnNullInput() {
+        expectedException.expect(IllegalArgumentException.class);
+        MailAddressCollectionReader.read(null);
+    }
+
+    @Test
+    public void readShouldThrowOnEmptyInput() {
+        expectedException.expect(IllegalArgumentException.class);
+        MailAddressCollectionReader.read("");
+    }
+
+    @Test
+    public void readShouldThrowOnInvalidEmail() {
+        expectedException.expect(RuntimeException.class);
+        MailAddressCollectionReader.read("not_valid");
+    }
+
+    @Test
+    public void readShouldThrowOnInvalidEmailOnSecondPosition() {
+        expectedException.expect(RuntimeException.class);
+        MailAddressCollectionReader.read("valid@apache.org, not_valid");
+    }
+
+    @Test
+    public void readShouldParseOneEmail() throws Exception {
+        MailAddress mailAddress = new MailAddress("valid@apache.org");
+
+        assertThat(MailAddressCollectionReader.read(mailAddress.toString()))
+            .containsExactly(mailAddress);
+    }
+
+    @Test
+    public void readShouldParseTwoEmail() throws Exception {
+        MailAddress mailAddress1 = new MailAddress("valid@apache.org");
+        MailAddress mailAddress2 = new MailAddress("bis@apache.org");
+
+        assertThat(MailAddressCollectionReader.read(mailAddress1.toString() + ", " + mailAddress2.toString()))
+            .containsExactly(mailAddress1, mailAddress2);
+    }
+
+    @Test
+    public void readShouldRemoveDuplicates() throws Exception {
+        MailAddress mailAddress = new MailAddress("valid@apache.org");
+
+        assertThat(MailAddressCollectionReader.read(mailAddress.toString() + ", " + mailAddress.toString()))
+            .containsExactly(mailAddress);
+    }
+
+
+}


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org