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 2017/11/16 14:19:54 UTC
[07/18] james-project git commit: JAMES-2220 replace ambiguous
MailImpl constructor with factory method
JAMES-2220 replace ambiguous MailImpl constructor with factory method
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/05e5da35
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/05e5da35
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/05e5da35
Branch: refs/heads/master
Commit: 05e5da3540dae357a40c86c54ed1ae246b03313f
Parents: 549f7ae
Author: Matthieu Baechler <ma...@apache.org>
Authored: Tue Nov 14 15:42:37 2017 +0100
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Thu Nov 16 12:30:30 2017 +0100
----------------------------------------------------------------------
.../org/apache/james/server/core/MailImpl.java | 20 ++++++++++----------
.../apache/james/server/core/MailImplTest.java | 19 +++++++++++++++++--
.../core/MimeMessageCopyOnWriteProxyTest.java | 8 ++++----
.../modules/server/MemoryMailQueueFactory.java | 2 +-
.../impl/camel/MatcherSplitter.java | 2 +-
.../mailets/AbstractRecipientRewriteTable.java | 2 +-
.../james/transport/mailets/DSNBounce.java | 2 +-
.../mailets/redirect/ProcessRedirectNotify.java | 2 +-
8 files changed, 36 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/05e5da35/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java b/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
index ad66e7f..07aed83 100644
--- a/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
+++ b/server/container/core/src/main/java/org/apache/james/server/core/MailImpl.java
@@ -72,6 +72,16 @@ import com.google.common.base.Preconditions;
*/
public class MailImpl implements Disposable, Mail {
+ /**
+ * Create a copy of the input mail and assign it a new name
+ *
+ * @param mail original mail
+ * @throws MessagingException when the message is not clonable
+ */
+ public static MailImpl duplicate(Mail mail) throws MessagingException {
+ return new MailImpl(mail, newName(mail));
+ }
+
private static final Logger LOGGER = LoggerFactory.getLogger(MailImpl.class);
/**
@@ -156,16 +166,6 @@ public class MailImpl implements Disposable, Mail {
}
/**
- * Create a copy of the input mail and assign it a new name
- *
- * @param mail original mail
- * @throws MessagingException when the message is not clonable
- */
- public MailImpl(Mail mail) throws MessagingException {
- this(mail, newName(mail));
- }
-
- /**
* @param mail
* @param newName
* @throws MessagingException
http://git-wip-us.apache.org/repos/asf/james-project/blob/05e5da35/server/container/core/src/test/java/org/apache/james/server/core/MailImplTest.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/test/java/org/apache/james/server/core/MailImplTest.java b/server/container/core/src/test/java/org/apache/james/server/core/MailImplTest.java
index 5f299a4..f1beea2 100644
--- a/server/container/core/src/test/java/org/apache/james/server/core/MailImplTest.java
+++ b/server/container/core/src/test/java/org/apache/james/server/core/MailImplTest.java
@@ -126,6 +126,21 @@ public class MailImplTest {
}
@Test
+ public void duplicateFactoryMethodShouldGenerateNewObjectWithSameValuesButName() throws MessagingException, IOException {
+ ImmutableList<MailAddress> recipients = ImmutableList.of();
+ String name = MailUtil.newId();
+ String sender = "sender@localhost";
+ MailAddress senderMailAddress = new MailAddress(sender);
+
+ MailImpl mail = new MailImpl(name, senderMailAddress, recipients, emptyMessage);
+ MailImpl duplicate = MailImpl.duplicate(mail);
+
+ assertThat(duplicate).isNotSameAs(mail).isEqualToIgnoringGivenFields(mail, "message", "name");
+ assertThat(duplicate.getName()).isNotEqualTo(name);
+ assertThat(duplicate.getMessage().getInputStream()).hasSameContentAs(mail.getMessage().getInputStream());
+ }
+
+ @Test
public void duplicateShouldGenerateNewObjectWithSameValuesButName() throws MessagingException, IOException {
ImmutableList<MailAddress> recipients = ImmutableList.of();
String name = MailUtil.newId();
@@ -133,10 +148,10 @@ public class MailImplTest {
MailAddress senderMailAddress = new MailAddress(sender);
MailImpl mail = new MailImpl(name, senderMailAddress, recipients, emptyMessage);
- MailImpl duplicate = (MailImpl) mail.duplicate("new name");
+ MailImpl duplicate = MailImpl.duplicate(mail);
assertThat(duplicate).isNotSameAs(mail).isEqualToIgnoringGivenFields(mail, "message", "name");
- assertThat(duplicate.getName()).isEqualTo("new name");
+ assertThat(duplicate.getName()).isNotEqualTo(name);
assertThat(duplicate.getMessage().getInputStream()).hasSameContentAs(mail.getMessage().getInputStream());
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/05e5da35/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageCopyOnWriteProxyTest.java
----------------------------------------------------------------------
diff --git a/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageCopyOnWriteProxyTest.java b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageCopyOnWriteProxyTest.java
index 1829d11..1253da1 100644
--- a/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageCopyOnWriteProxyTest.java
+++ b/server/container/core/src/test/java/org/apache/james/server/core/MimeMessageCopyOnWriteProxyTest.java
@@ -60,7 +60,7 @@ public class MimeMessageCopyOnWriteProxyTest extends MimeMessageFromStreamTest {
MimeMessageCopyOnWriteProxy messageFromSources = (MimeMessageCopyOnWriteProxy) getMessageFromSources(
content + sep + body);
MailImpl mail = new MailImpl("test", new MailAddress("test@test.com"), r, messageFromSources);
- MailImpl m2 = (MailImpl) mail.duplicate("clone");
+ MailImpl m2 = MailImpl.duplicate(mail);
System.out.println("mail: " + getReferences(mail.getMessage()) + " m2: " + getReferences(m2.getMessage()));
assertNotSame(m2, mail);
assertNotSame(m2.getMessage(), mail.getMessage());
@@ -86,7 +86,7 @@ public class MimeMessageCopyOnWriteProxyTest extends MimeMessageFromStreamTest {
MimeMessageCopyOnWriteProxy messageFromSources = (MimeMessageCopyOnWriteProxy) getMessageFromSources(
content + sep + body);
MailImpl mail = new MailImpl("test", new MailAddress("test@test.com"), r, messageFromSources);
- MailImpl m2 = (MailImpl) mail.duplicate("clone");
+ MailImpl m2 = MailImpl.duplicate(mail);
System.out.println("mail: " + getReferences(mail.getMessage()) + " m2: " + getReferences(m2.getMessage()));
assertNotSame(m2, mail);
assertNotSame(m2.getMessage(), mail.getMessage());
@@ -137,7 +137,7 @@ public class MimeMessageCopyOnWriteProxyTest extends MimeMessageFromStreamTest {
content + sep + body);
MailImpl mail = new MailImpl("test", new MailAddress("test@test.com"), r, messageFromSources);
// cloning the message
- Mail mailClone = mail.duplicate("clone");
+ Mail mailClone = MailImpl.duplicate(mail);
assertTrue(isSameMimeMessage(mailClone.getMessage(), mail.getMessage()));
MimeMessage mm = getWrappedMessage(mail.getMessage());
assertNotSame(mail.getMessage(), mailClone.getMessage());
@@ -194,7 +194,7 @@ public class MimeMessageCopyOnWriteProxyTest extends MimeMessageFromStreamTest {
content + sep + body);
MailImpl mail = new MailImpl("test", new MailAddress("test@test.com"), r, messageFromSources);
// cloning the message
- MailImpl mailClone = (MailImpl) mail.duplicate("clone");
+ MailImpl mailClone = MailImpl.duplicate(mail);
LifecycleUtil.dispose(mail);
assertNotNull(getWrappedMessage(mailClone.getMessage()));
http://git-wip-us.apache.org/repos/asf/james-project/blob/05e5da35/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
----------------------------------------------------------------------
diff --git a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
index d3f5941..8fcc941 100644
--- a/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
+++ b/server/container/guice/memory-guice/src/main/java/org/apache/james/modules/server/MemoryMailQueueFactory.java
@@ -87,7 +87,7 @@ public class MemoryMailQueueFactory implements MailQueueFactory {
}
private Mail cloneMail(Mail mail) throws MessagingException {
- MailImpl mailImpl = new MailImpl(mail);
+ MailImpl mailImpl = MailImpl.duplicate(mail);
Optional.ofNullable(mail.getMessage())
.ifPresent(Throwing.consumer(message -> mailImpl.setMessage(new MimeMessage(message))));
return mailImpl;
http://git-wip-us.apache.org/repos/asf/james-project/blob/05e5da35/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
index df09138..36c77c2 100644
--- a/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
+++ b/server/mailet/mailetcontainer-camel/src/main/java/org/apache/james/mailetcontainer/impl/camel/MatcherSplitter.java
@@ -157,7 +157,7 @@ public class MatcherSplitter {
} else {
mail.setRecipients(rcpts);
- Mail newMail = new MailImpl(mail);
+ Mail newMail = MailImpl.duplicate(mail);
newMail.setRecipients(matchedRcpts);
// Set a header because the matcher matched. This can be
http://git-wip-us.apache.org/repos/asf/james-project/blob/05e5da35/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java
index 095af8e..86c4077 100755
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/AbstractRecipientRewriteTable.java
@@ -176,7 +176,7 @@ public abstract class AbstractRecipientRewriteTable extends GenericMailet {
// duplicates the Mail object, to be able to modify the new mail
// keeping the original untouched
- MailImpl newMail = new MailImpl(mail);
+ MailImpl newMail = MailImpl.duplicate(mail);
try {
try {
newMail.setRemoteAddr(dns.getLocalHost().getHostAddress());
http://git-wip-us.apache.org/repos/asf/james-project/blob/05e5da35/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
index f1edc22..13b0e9a 100755
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/DSNBounce.java
@@ -242,7 +242,7 @@ public class DSNBounce extends GenericMailet implements RedirectNotify {
}
private void trySendBounce(Mail originalMail) throws MessagingException {
- MailImpl newMail = new MailImpl(originalMail);
+ MailImpl newMail = MailImpl.duplicate(originalMail);
try {
newMail.setRemoteHost(getRemoteHost());
newMail.setRemoteAddr(getRemoteAddr());
http://git-wip-us.apache.org/repos/asf/james-project/blob/05e5da35/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java
----------------------------------------------------------------------
diff --git a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java
index 0cf003c..7e4e297 100644
--- a/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java
+++ b/server/mailet/mailets/src/main/java/org/apache/james/transport/mailets/redirect/ProcessRedirectNotify.java
@@ -47,7 +47,7 @@ public class ProcessRedirectNotify {
// duplicates the Mail object, to be able to modify the new mail keeping
// the original untouched
- MailImpl newMail = new MailImpl(originalMail);
+ MailImpl newMail = MailImpl.duplicate(originalMail);
try {
MailModifier mailModifier = MailModifier.builder()
.mailet(mailet)
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org