This is an automated email from the ASF dual-hosted git repository.

btellier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit d1cca6c2a5306f35d8a32435220e820b3ce929db
Author: Gautier DI FOLCO <gdifo...@linagora.com>
AuthorDate: Mon Sep 23 13:05:45 2019 +0200

    JAMES-2726 Take care of duplication in MemoryMailRepository
---
 .../memory/MemoryMailRepository.java               | 24 ++++++++++++++--------
 1 file changed, 16 insertions(+), 8 deletions(-)

diff --git 
a/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepository.java
 
b/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepository.java
index 3a945a4..6df4dee 100644
--- 
a/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepository.java
+++ 
b/server/mailrepository/mailrepository-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepository.java
@@ -21,6 +21,7 @@ package org.apache.james.mailrepository.memory;
 
 import java.util.Collection;
 import java.util.Iterator;
+import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import javax.mail.MessagingException;
 
@@ -39,13 +40,7 @@ public class MemoryMailRepository implements MailRepository {
     @Override
     public MailKey store(Mail mail) {
         MailKey mailKey = MailKey.forMail(mail);
-        try {
-            Mail newMail = mail.duplicate();
-            newMail.setName(mail.getName());
-            mails.put(mailKey, newMail);
-        } catch (MessagingException e) {
-            throw new RuntimeException(e);
-        }
+        mails.put(mailKey, cloneMail(mail));
         return mailKey;
     }
 
@@ -56,7 +51,9 @@ public class MemoryMailRepository implements MailRepository {
 
     @Override
     public Mail retrieve(MailKey key) {
-        return mails.get(key);
+        return Optional.ofNullable(mails.get(key))
+            .map(this::cloneMail)
+            .orElse(null);
     }
 
     @Override
@@ -93,4 +90,15 @@ public class MemoryMailRepository implements MailRepository {
     public void removeAll() {
         mails.clear();
     }
+
+    private Mail cloneMail(Mail mail) {
+        try {
+            Mail newMail = mail.duplicate();
+            newMail.setName(mail.getName());
+            newMail.setState(mail.getState());
+            return newMail;
+        } catch (MessagingException e) {
+            throw new RuntimeException(e);
+        }
+    }
 }


---------------------------------------------------------------------
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