Repository: james-project Updated Branches: refs/heads/master 62be9cea4 -> 13497382d
JAMES-1836 Add allowInvalid as an option to Emailer.Builder and other requested fixes Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/bb695150 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/bb695150 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/bb695150 Branch: refs/heads/master Commit: bb695150e1e2fcf6996fbe1734a19a56e7fc2596 Parents: 62be9ce Author: Benoit Tellier <btell...@linagora.com> Authored: Tue Oct 18 14:21:18 2016 +0200 Committer: Benoit Tellier <btell...@linagora.com> Committed: Wed Oct 19 09:58:01 2016 +0200 ---------------------------------------------------------------------- .../org/apache/james/jmap/model/Emailer.java | 24 ++++++++++++++++---- .../apache/james/jmap/model/MessageFactory.java | 3 ++- .../apache/james/jmap/model/EmailerTest.java | 18 +++++++++------ .../james/jmap/model/MessageFactoryTest.java | 10 ++++---- 4 files changed, 38 insertions(+), 17 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/bb695150/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Emailer.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Emailer.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Emailer.java index 9759046..20e0c4c 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Emailer.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/Emailer.java @@ -33,7 +33,7 @@ import com.google.common.base.Strings; @JsonDeserialize(builder = Emailer.Builder.class) public class Emailer { - public static String INVALID = "invalid"; + public static String INVALID = ""; public static Builder builder() { return new Builder(); @@ -41,6 +41,9 @@ public class Emailer { @JsonPOJOBuilder(withPrefix = "") public static class Builder { + private static final boolean DEFAULT_DISABLE = false; + + private Optional<Boolean> allowInvalid = Optional.empty(); private String name; private String email; @@ -54,21 +57,34 @@ public class Emailer { return this; } + @JsonIgnore + public Builder allowInvalid() { + this.allowInvalid = Optional.of(true); + return this; + } + public Emailer build() { + if (allowInvalid.orElse(DEFAULT_DISABLE)) { + return buildRelaxed(); + } else { + return buildStrict(); + } + } + + private Emailer buildStrict() { Preconditions.checkState(!Strings.isNullOrEmpty(name), "'name' is mandatory"); Preconditions.checkState(!Strings.isNullOrEmpty(email), "'email' is mandatory"); Preconditions.checkState(email.contains("@"), "'email' must contain '@' character"); return new Emailer(name, email); } - @JsonIgnore - public Emailer buildInvalidAllowed() { + private Emailer buildRelaxed() { return new Emailer(replaceIfNeeded(name), replaceIfNeeded(email)); } private String replaceIfNeeded(String value) { return Optional.ofNullable(value) - .filter(s -> !s.equals("")) + .filter(s -> !s.isEmpty()) .orElse(INVALID); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/bb695150/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java index e3e09e7..686b881 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/MessageFactory.java @@ -148,7 +148,8 @@ public class MessageFactory { return Emailer.builder() .name(getNameOrAddress(mailbox)) .email(mailbox.getAddress()) - .buildInvalidAllowed(); + .allowInvalid() + .build(); } private String getNameOrAddress(Mailbox mailbox) { http://git-wip-us.apache.org/repos/asf/james-project/blob/bb695150/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/EmailerTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/EmailerTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/EmailerTest.java index 1c26ea4..efe28f0 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/EmailerTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/EmailerTest.java @@ -61,33 +61,36 @@ public class EmailerTest { @Test public void buildInvalidAllowedShouldConsiderNullValuesAsInvalid() { - Emailer expected = new Emailer("invalid", "invalid"); + Emailer expected = new Emailer("", ""); Emailer actual = Emailer.builder() - .buildInvalidAllowed(); + .allowInvalid() + .build(); assertThat(actual).isEqualToComparingFieldByField(expected); } @Test public void buildInvalidAllowedShouldConsiderEmptyValuesAsInvalid() { - Emailer expected = new Emailer("invalid", "invalid"); + Emailer expected = new Emailer("", ""); Emailer actual = Emailer.builder() .name("") .email("") - .buildInvalidAllowed(); + .allowInvalid() + .build(); assertThat(actual).isEqualToComparingFieldByField(expected); } @Test public void buildInvalidAllowedShouldDeclareInvalidAddressesAsInvalid() { - Emailer expected = new Emailer("invalid", "invalidAddress"); + Emailer expected = new Emailer("", "invalidAddress"); Emailer actual = Emailer.builder() .email("invalidAddress") - .buildInvalidAllowed(); + .allowInvalid() + .build(); assertThat(actual).isEqualToComparingFieldByField(expected); } @@ -101,7 +104,8 @@ public class EmailerTest { Emailer actual = Emailer.builder() .name(name) .email(address) - .buildInvalidAllowed(); + .allowInvalid() + .build(); assertThat(actual).isEqualToComparingFieldByField(expected); } http://git-wip-us.apache.org/repos/asf/james-project/blob/bb695150/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java index 0006a39..c9a7b26 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MessageFactoryTest.java @@ -281,11 +281,11 @@ public class MessageFactoryTest { Message testee = messageFactory.fromMetaDataWithContent(testMail); - Emailer user = Emailer.builder().name("user").email("userdomain").buildInvalidAllowed(); - Emailer user1 = Emailer.builder().name("user1").email("user1domain").buildInvalidAllowed(); - Emailer user2 = Emailer.builder().name("user2").email("user2domain").buildInvalidAllowed(); - Emailer usercc = Emailer.builder().name("usercc").email("userccdomain").buildInvalidAllowed(); - Emailer userbcc = Emailer.builder().name("userbcc").email("userbccdomain").buildInvalidAllowed(); + Emailer user = Emailer.builder().name("user").email("userdomain").allowInvalid().build(); + Emailer user1 = Emailer.builder().name("user1").email("user1domain").allowInvalid().build(); + Emailer user2 = Emailer.builder().name("user2").email("user2domain").allowInvalid().build(); + Emailer usercc = Emailer.builder().name("usercc").email("userccdomain").allowInvalid().build(); + Emailer userbcc = Emailer.builder().name("userbcc").email("userbccdomain").allowInvalid().build(); assertThat(testee.getFrom()).contains(user); assertThat(testee.getTo()).contains(user1, user2); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org