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 2018/12/11 07:01:26 UTC
[7/7] james-project git commit: JAMES-2557 Deprecate
MailAddress::getSender
JAMES-2557 Deprecate MailAddress::getSender
This should rather be handled in MaybeSender
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5b46ce3c
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5b46ce3c
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5b46ce3c
Branch: refs/heads/master
Commit: 5b46ce3c12235e6c0948779ca66cd3cb552dad99
Parents: 2fe4760
Author: Benoit Tellier <bt...@linagora.com>
Authored: Thu Dec 6 11:46:57 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Dec 11 14:00:08 2018 +0700
----------------------------------------------------------------------
.../java/org/apache/james/core/MailAddress.java | 4 ++
.../java/org/apache/james/core/MaybeSender.java | 23 ++++++++++
.../org/apache/james/core/MaybeSenderTest.java | 48 ++++++++++++++++++++
.../CassandraMailRepositoryMailDAO.java | 7 +--
.../apache/james/queue/jms/JMSMailQueue.java | 4 +-
.../james/queue/rabbitmq/MailReferenceDTO.java | 3 +-
6 files changed, 84 insertions(+), 5 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/5b46ce3c/core/src/main/java/org/apache/james/core/MailAddress.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/james/core/MailAddress.java b/core/src/main/java/org/apache/james/core/MailAddress.java
index d31a26d..c9ab6e0 100644
--- a/core/src/main/java/org/apache/james/core/MailAddress.java
+++ b/core/src/main/java/org/apache/james/core/MailAddress.java
@@ -113,6 +113,10 @@ public class MailAddress implements java.io.Serializable {
return NULL_SENDER;
}
+ /**
+ * Prefer using {@link MaybeSender#getMailSender(String)}
+ */
+ @Deprecated
public static MailAddress getMailSender(String sender) {
if (sender == null || sender.trim().length() <= 0) {
return null;
http://git-wip-us.apache.org/repos/asf/james-project/blob/5b46ce3c/core/src/main/java/org/apache/james/core/MaybeSender.java
----------------------------------------------------------------------
diff --git a/core/src/main/java/org/apache/james/core/MaybeSender.java b/core/src/main/java/org/apache/james/core/MaybeSender.java
index 6e91fce..cdd4474 100644
--- a/core/src/main/java/org/apache/james/core/MaybeSender.java
+++ b/core/src/main/java/org/apache/james/core/MaybeSender.java
@@ -24,10 +24,33 @@ import java.util.Objects;
import java.util.Optional;
import java.util.stream.Stream;
+import javax.mail.internet.AddressException;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import com.google.common.base.MoreObjects;
import com.google.common.collect.ImmutableList;
public class MaybeSender {
+ private static final Logger LOGGER = LoggerFactory.getLogger(MaybeSender.class);
+
+ public static MaybeSender getMailSender(String sender) {
+ if (sender == null || sender.trim().isEmpty()) {
+ return MaybeSender.nullSender();
+ }
+ if (sender.equals(MailAddress.NULL_SENDER_AS_STRING)) {
+ return MaybeSender.nullSender();
+ }
+ try {
+ return MaybeSender.of(new MailAddress(sender));
+ } catch (AddressException e) {
+ // Should never happen as long as the user does not modify the header by himself
+ LOGGER.warn("Unable to parse the sender address {}, so we fallback to a null sender", sender, e);
+ return MaybeSender.nullSender();
+ }
+ }
+
public static MaybeSender nullSender() {
return new MaybeSender(Optional.empty());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/5b46ce3c/core/src/test/java/org/apache/james/core/MaybeSenderTest.java
----------------------------------------------------------------------
diff --git a/core/src/test/java/org/apache/james/core/MaybeSenderTest.java b/core/src/test/java/org/apache/james/core/MaybeSenderTest.java
index 627aacd..6423835 100644
--- a/core/src/test/java/org/apache/james/core/MaybeSenderTest.java
+++ b/core/src/test/java/org/apache/james/core/MaybeSenderTest.java
@@ -32,6 +32,7 @@ import org.junit.jupiter.api.Test;
import nl.jqno.equalsverifier.EqualsVerifier;
class MaybeSenderTest {
+ private static final String GOOD_ADDRESS = "server-dev@james.apache.org";
private static final String MAIL_ADDRESS_STRING = "any@domain.tld";
private MailAddress mailAddress;
@@ -155,4 +156,51 @@ class MaybeSenderTest {
.isEqualTo("default");
}
+ @Test
+ void getMailSenderShouldReturnNullSenderWhenNullSender() {
+ assertThat(MaybeSender.getMailSender(MailAddress.NULL_SENDER_AS_STRING))
+ .isEqualTo(MaybeSender.nullSender());
+ }
+
+ @Test
+ void getMailSenderShouldReturnParsedAddressWhenNotNullAddress() throws Exception {
+ assertThat(MaybeSender.getMailSender(GOOD_ADDRESS))
+ .isEqualTo(MaybeSender.of(new MailAddress(GOOD_ADDRESS)));
+ }
+
+ @Test
+ void getMailSenderShouldReturnNullSenderWhenNull() {
+ assertThat(MaybeSender.getMailSender(null))
+ .isEqualTo(MaybeSender.nullSender());
+ }
+
+ @Test
+ void getMailSenderShouldReturnNullSenderWhenEmptyString() {
+ assertThat(MaybeSender.getMailSender(""))
+ .isEqualTo(MaybeSender.nullSender());
+ }
+
+ @Test
+ void getMailSenderShouldReturnNullSenderWhenOnlySpaces() {
+ assertThat(MaybeSender.getMailSender(" "))
+ .isEqualTo(MaybeSender.nullSender());
+ }
+
+ @Test
+ void getMailSenderShouldReturnNullSenderWhenBadValue() {
+ assertThat(MaybeSender.getMailSender("this@is@a@bad@address"))
+ .isEqualTo(MaybeSender.nullSender());
+ }
+
+ @Test
+ void equalsShouldReturnFalseWhenOnlyFirstMemberIsANullSender() {
+ assertThat(MaybeSender.getMailSender(GOOD_ADDRESS))
+ .isNotEqualTo(MaybeSender.nullSender());
+ }
+
+ @Test
+ void equalsShouldReturnFalseWhenOnlySecondMemberIsANullSender() {
+ assertThat(MaybeSender.nullSender())
+ .isNotEqualTo(MaybeSender.getMailSender(GOOD_ADDRESS));
+ }
}
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/james-project/blob/5b46ce3c/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAO.java
----------------------------------------------------------------------
diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAO.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAO.java
index 5645a59..51bbe30 100644
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAO.java
+++ b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepositoryMailDAO.java
@@ -68,6 +68,7 @@ import org.apache.james.backends.cassandra.init.CassandraTypesProvider;
import org.apache.james.backends.cassandra.utils.CassandraAsyncExecutor;
import org.apache.james.blob.api.BlobId;
import org.apache.james.core.MailAddress;
+import org.apache.james.core.MaybeSender;
import org.apache.james.mailrepository.api.MailKey;
import org.apache.james.mailrepository.api.MailRepositoryUrl;
import org.apache.james.server.core.MailImpl;
@@ -171,9 +172,9 @@ public class CassandraMailRepositoryMailDAO {
}
private MailDTO toMail(Row row) {
- MailAddress sender = Optional.ofNullable(row.getString(SENDER))
- .map(MailAddress::getMailSender)
- .orElse(null);
+ MaybeSender sender = Optional.ofNullable(row.getString(SENDER))
+ .map(MaybeSender::getMailSender)
+ .orElse(MaybeSender.nullSender());
List<MailAddress> recipients = row.getList(RECIPIENTS, String.class)
.stream()
.map(Throwing.function(MailAddress::new))
http://git-wip-us.apache.org/repos/asf/james-project/blob/5b46ce3c/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
index 0684d45..07b3128 100644
--- a/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
+++ b/server/queue/queue-jms/src/main/java/org/apache/james/queue/jms/JMSMailQueue.java
@@ -51,6 +51,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.commons.collections.iterators.EnumerationIterator;
import org.apache.james.core.MailAddress;
+import org.apache.james.core.MaybeSender;
import org.apache.james.lifecycle.api.Disposable;
import org.apache.james.metrics.api.Gauge;
import org.apache.james.metrics.api.GaugeRegistry;
@@ -419,7 +420,8 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
splitter.split(attributeNames)
.forEach(name -> setMailAttribute(message, mail, name));
- mail.setSender(MailAddress.getMailSender(message.getStringProperty(JAMES_MAIL_SENDER)));
+ MaybeSender.getMailSender(message.getStringProperty(JAMES_MAIL_SENDER))
+ .asOptional().ifPresent(mail::setSender);
mail.setState(message.getStringProperty(JAMES_MAIL_STATE));
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/5b46ce3c/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailReferenceDTO.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailReferenceDTO.java b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailReferenceDTO.java
index 306e7f9..80cadcb 100644
--- a/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailReferenceDTO.java
+++ b/server/queue/queue-rabbitmq/src/main/java/org/apache/james/queue/rabbitmq/MailReferenceDTO.java
@@ -34,6 +34,7 @@ import javax.mail.internet.MimeMessage;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.blob.mail.MimeMessagePartsId;
import org.apache.james.core.MailAddress;
+import org.apache.james.core.MaybeSender;
import org.apache.james.server.core.MailImpl;
import org.apache.mailet.Attribute;
import org.apache.mailet.AttributeName;
@@ -190,7 +191,7 @@ class MailReferenceDTO {
MailImpl toMailWithMimeMessage(MimeMessage mimeMessage) throws MessagingException {
MailImpl mail = new MailImpl(name,
- sender.map(MailAddress::getMailSender).orElse(null),
+ sender.map(MaybeSender::getMailSender).orElse(MaybeSender.nullSender()).asOptional().orElse(null),
recipients.stream()
.map(Throwing.<String, MailAddress>function(MailAddress::new).sneakyThrow())
.collect(Guavate.toImmutableList()),
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org