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