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 2018/08/23 12:12:47 UTC
[2/4] james-project git commit: JAMES-2167 MailQueue should preserve
null sender
JAMES-2167 MailQueue should preserve null sender
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/ec911c13
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/ec911c13
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/ec911c13
Branch: refs/heads/master
Commit: ec911c1317aab016e4eb8bc999572e579590f0fd
Parents: 2db93fb
Author: Benoit Tellier <bt...@linagora.com>
Authored: Fri Aug 17 15:52:06 2018 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Thu Aug 23 13:59:16 2018 +0200
----------------------------------------------------------------------
.../java/org/apache/james/core/MailAddress.java | 7 ++++-
.../james/queue/api/MailQueueContract.java | 17 +++++++++++
.../apache/james/queue/jms/JMSMailQueue.java | 30 +++++++++++---------
3 files changed, 39 insertions(+), 15 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/ec911c13/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 aaf2abb..e53f5bc 100644
--- a/core/src/main/java/org/apache/james/core/MailAddress.java
+++ b/core/src/main/java/org/apache/james/core/MailAddress.java
@@ -72,6 +72,8 @@ public class MailAddress implements java.io.Serializable {
private static final char[] SPECIAL =
{'<', '>', '(', ')', '[', ']', '\\', '.', ',', ';', ':', '@', '\"'};
+ public static final String NULL_SENDER_AS_STRING = "<>";
+
private static final MailAddress NULL_SENDER = new MailAddress() {
@Override
@@ -91,7 +93,7 @@ public class MailAddress implements java.io.Serializable {
@Override
public String asString() {
- return "<>";
+ return NULL_SENDER_AS_STRING;
}
@Override
@@ -356,6 +358,9 @@ public class MailAddress implements java.io.Serializable {
return toString().equalsIgnoreCase(theString);
} else if (obj instanceof MailAddress) {
MailAddress addr = (MailAddress) obj;
+ if (isNullSender() && addr.isNullSender()) {
+ return true;
+ }
return getLocalPart().equalsIgnoreCase(addr.getLocalPart()) && getDomain().equals(addr.getDomain());
}
return false;
http://git-wip-us.apache.org/repos/asf/james-project/blob/ec911c13/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java
----------------------------------------------------------------------
diff --git a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java
index 205c58b..377cf3f 100644
--- a/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java
+++ b/server/queue/queue-api/src/test/java/org/apache/james/queue/api/MailQueueContract.java
@@ -38,10 +38,12 @@ import java.util.concurrent.TimeoutException;
import javax.mail.internet.MimeMessage;
+import org.apache.james.core.MailAddress;
import org.apache.james.core.builder.MimeMessageBuilder;
import org.apache.james.junit.ExecutorExtension;
import org.apache.mailet.Mail;
import org.apache.mailet.PerRecipientHeaders;
+import org.apache.mailet.base.test.FakeMail;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -82,6 +84,21 @@ public interface MailQueueContract {
}
@Test
+ default void queueShouldPreserveNullSender() throws Exception {
+ getMailQueue().enQueue(FakeMail.builder()
+ .name("name")
+ .mimeMessage(createMimeMessage())
+ .recipients(RECIPIENT1, RECIPIENT2)
+ .sender(MailAddress.nullSender())
+ .lastUpdated(new Date())
+ .build());
+
+ MailQueue.MailQueueItem mailQueueItem = getMailQueue().deQueue();
+ assertThat(mailQueueItem.getMail().getSender())
+ .isEqualTo(MailAddress.nullSender());
+ }
+
+ @Test
default void queueShouldPreserveMailSender() throws Exception {
getMailQueue().enQueue(defaultMail()
.sender(SENDER)
http://git-wip-us.apache.org/repos/asf/james-project/blob/ec911c13/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 f6f9838..a60bde2 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
@@ -412,22 +412,24 @@ public class JMSMailQueue implements ManageableMailQueue, JMSSupport, MailPriori
splitter.split(attributeNames)
.forEach(name -> setMailAttribute(message, mail, name));
- String sender = message.getStringProperty(JAMES_MAIL_SENDER);
- if (sender == null || sender.trim().length() <= 0) {
- mail.setSender(null);
- } else {
- try {
- mail.setSender(new MailAddress(sender));
- } catch (AddressException e) {
- // Should never happen as long as the user does not modify the
- // the header by himself
- LOGGER.error("Unable to parse the sender address {} for mail {}, so we fallback to a null sender", sender, mail.getName(), e);
- mail.setSender(null);
- }
- }
-
+ mail.setSender(getMailSender(message.getStringProperty(JAMES_MAIL_SENDER), mail));
mail.setState(message.getStringProperty(JAMES_MAIL_STATE));
+ }
+ private MailAddress getMailSender(String sender, Mail mail) {
+ if (sender == null || sender.trim().length() <= 0) {
+ return null;
+ }
+ if (sender.equals(MailAddress.NULL_SENDER_AS_STRING)) {
+ return MailAddress.nullSender();
+ }
+ try {
+ return new MailAddress(sender);
+ } catch (AddressException e) {
+ // Should never happen as long as the user does not modify the header by himself
+ LOGGER.error("Unable to parse the sender address {} for mail {}, so we fallback to a null sender", sender, mail.getName(), e);
+ return MailAddress.nullSender();
+ }
}
/**
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org