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