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 ad...@apache.org on 2016/10/19 07:59:57 UTC

[2/2] james-project git commit: JAMES-1836 Emailer should have optional values

JAMES-1836 Emailer should have optional values


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

Branch: refs/heads/master
Commit: 13497382d56ab728d3c7ee797c245492296e5c79
Parents: bb69515
Author: Benoit Tellier <bt...@linagora.com>
Authored: Tue Oct 18 15:10:25 2016 +0200
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Wed Oct 19 09:58:05 2016 +0200

----------------------------------------------------------------------
 .../org/apache/james/jmap/model/Emailer.java    | 50 ++++++++++++--------
 .../org/apache/james/jmap/send/MailFactory.java |  4 +-
 .../apache/james/jmap/model/EmailerTest.java    | 12 +++--
 3 files changed, 41 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/13497382/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 20e0c4c..db6a701 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
@@ -23,18 +23,16 @@ import java.util.Objects;
 import java.util.Optional;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
 import com.fasterxml.jackson.databind.annotation.JsonDeserialize;
 import com.fasterxml.jackson.databind.annotation.JsonPOJOBuilder;
 import com.google.common.annotations.VisibleForTesting;
 import com.google.common.base.MoreObjects;
 import com.google.common.base.Preconditions;
-import com.google.common.base.Strings;
 
 @JsonDeserialize(builder = Emailer.Builder.class)
 public class Emailer {
 
-    public static String INVALID = "";
-
     public static Builder builder() {
         return new Builder();
     }
@@ -44,20 +42,34 @@ public class Emailer {
         private static final boolean DEFAULT_DISABLE = false;
 
         private Optional<Boolean> allowInvalid = Optional.empty();
-        private String name;
-        private String email;
+        private Optional<String> name = Optional.empty();
+        private Optional<String> email = Optional.empty();
 
-        public Builder name(String name) {
+        @JsonProperty("name")
+        public Builder name(Optional<String> name) {
             this.name = name;
             return this;
         }
 
-        public Builder email(String email) {
+        @JsonIgnore
+        public Builder name(String name) {
+            this.name = Optional.ofNullable(name);
+            return this;
+        }
+
+        @JsonProperty("email")
+        public Builder email(Optional<String> email) {
             this.email = email;
             return this;
         }
 
         @JsonIgnore
+        public Builder email(String email) {
+            this.email = Optional.ofNullable(email);
+            return this;
+        }
+
+        @JsonIgnore
         public Builder allowInvalid() {
             this.allowInvalid = Optional.of(true);
             return this;
@@ -72,9 +84,11 @@ public class Emailer {
         }
 
         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");
+            Preconditions.checkState(name.isPresent(), "'name' is mandatory");
+            Preconditions.checkState(email.isPresent(), "'email' is mandatory");
+            Preconditions.checkState(!name.get().isEmpty(), "'name' should not be empty");
+            Preconditions.checkState(!email.get().isEmpty(), "'email' should not be empty");
+            Preconditions.checkState(email.get().contains("@"), "'email' must contain '@' character");
             return new Emailer(name, email);
         }
 
@@ -82,26 +96,24 @@ public class Emailer {
             return new Emailer(replaceIfNeeded(name), replaceIfNeeded(email));
         }
 
-        private String replaceIfNeeded(String value) {
-            return Optional.ofNullable(value)
-                .filter(s -> !s.isEmpty())
-                .orElse(INVALID);
+        private Optional<String> replaceIfNeeded(Optional<String> value) {
+            return value.filter(s -> !s.isEmpty());
         }
     }
 
-    private final String name;
-    private final String email;
+    private final Optional<String> name;
+    private final Optional<String> email;
 
-    @VisibleForTesting Emailer(String name, String email) {
+    @VisibleForTesting Emailer(Optional<String> name, Optional<String> email) {
         this.name = name;
         this.email = email;
     }
 
-    public String getName() {
+    public Optional<String> getName() {
         return name;
     }
 
-    public String getEmail() {
+    public Optional<String> getEmail() {
         return email;
     }
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/13497382/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/MailFactory.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/MailFactory.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/MailFactory.java
index 7739971..bbe5fa8 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/MailFactory.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/send/MailFactory.java
@@ -37,6 +37,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.google.common.annotations.VisibleForTesting;
+import com.google.common.base.Preconditions;
 import com.google.common.base.Throwables;
 import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
@@ -61,8 +62,9 @@ public class MailFactory {
     }
 
     private MailAddress emailerToMailAddress(Emailer emailer) {
+        Preconditions.checkArgument(emailer.getEmail().isPresent(), "eMailer mail address should be present when sending a mail using JMAP");
         try {
-            return new MailAddress(emailer.getEmail());
+            return new MailAddress(emailer.getEmail().get());
         } catch (AddressException e) {
             LOGGER.error("Invalid mail address", emailer.getEmail());
             throw Throwables.propagate(e);

http://git-wip-us.apache.org/repos/asf/james-project/blob/13497382/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 efe28f0..25ca451 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
@@ -20,6 +20,8 @@ package org.apache.james.jmap.model;
 
 import static org.assertj.core.api.Assertions.assertThat;
 
+import java.util.Optional;
+
 import org.junit.Test;
 
 public class EmailerTest {
@@ -51,7 +53,7 @@ public class EmailerTest {
     
     @Test
     public void buildShouldWork() {
-        Emailer expected = new Emailer("name", "user@domain");
+        Emailer expected = new Emailer(Optional.of("name"), Optional.of("user@domain"));
         Emailer emailer = Emailer.builder()
             .name("name")
             .email("user@domain")
@@ -61,7 +63,7 @@ public class EmailerTest {
 
     @Test
     public void buildInvalidAllowedShouldConsiderNullValuesAsInvalid() {
-        Emailer expected = new Emailer("", "");
+        Emailer expected = new Emailer(Optional.empty(), Optional.empty());
 
         Emailer actual = Emailer.builder()
             .allowInvalid()
@@ -72,7 +74,7 @@ public class EmailerTest {
 
     @Test
     public void buildInvalidAllowedShouldConsiderEmptyValuesAsInvalid() {
-        Emailer expected = new Emailer("", "");
+        Emailer expected = new Emailer(Optional.empty(), Optional.empty());
 
         Emailer actual = Emailer.builder()
             .name("")
@@ -85,7 +87,7 @@ public class EmailerTest {
 
     @Test
     public void buildInvalidAllowedShouldDeclareInvalidAddressesAsInvalid() {
-        Emailer expected = new Emailer("", "invalidAddress");
+        Emailer expected = new Emailer(Optional.empty(), Optional.of("invalidAddress"));
 
         Emailer actual = Emailer.builder()
             .email("invalidAddress")
@@ -99,7 +101,7 @@ public class EmailerTest {
     public void buildInvalidAllowedShouldWork() {
         String name = "bob";
         String address = "me@apache.org";
-        Emailer expected = new Emailer(name, address);
+        Emailer expected = new Emailer(Optional.of(name), Optional.of(address));
 
         Emailer actual = Emailer.builder()
             .name(name)


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