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 <matth...@apache.org>
Authored: Tue Nov 14 15:42:37 2017 +0100
Committer: Antoine Duprat <adup...@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("t...@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("t...@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("t...@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("t...@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-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to