You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2022/03/15 02:00:22 UTC

[james-project] 04/10: JAMES-3720 CassandraMailRepository should not duplicate mime message

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

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

commit 0789f9ce2df51ac55bd855ca67e55bc08a09f5ed
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri Mar 4 18:13:47 2022 +0700

    JAMES-3720 CassandraMailRepository should not duplicate mime message
    
    (cherry picked from commit 387e81d4b6f2cf69f472856d722f6b3b3ddb7c28)
---
 .../cassandra/CassandraMailRepository.java             | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepository.java b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepository.java
index fce9b7c..1c0abc6 100644
--- a/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepository.java
+++ b/server/mailrepository/mailrepository-cassandra/src/main/java/org/apache/james/mailrepository/cassandra/CassandraMailRepository.java
@@ -37,8 +37,12 @@ import org.apache.james.mailrepository.api.MailKey;
 import org.apache.james.mailrepository.api.MailRepository;
 import org.apache.james.mailrepository.api.MailRepositoryUrl;
 import org.apache.james.mailrepository.cassandra.CassandraMailRepositoryMailDaoV2.MailDTO;
+import org.apache.james.server.core.MailImpl;
+import org.apache.james.server.core.MimeMessageWrapper;
 import org.apache.mailet.Mail;
 
+import com.github.fge.lambdas.Throwing;
+
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
@@ -103,9 +107,17 @@ public class CassandraMailRepository implements MailRepository {
         MimeMessagePartsId parts = blobIds(mailDTO);
 
         return mimeMessageStore.read(parts)
-            .map(mimeMessage -> mailDTO.getMailBuilder()
-                .mimeMessage(mimeMessage)
-                .build());
+            .map(Throwing.function(mimeMessage -> {
+                MailImpl mail = mailDTO.getMailBuilder()
+                    .build();
+
+                if (mimeMessage instanceof MimeMessageWrapper) {
+                    mail.setMessageNoCopy((MimeMessageWrapper) mimeMessage);
+                } else {
+                    mail.setMessage(mimeMessage);
+                }
+                return mail;
+            }));
     }
 
     private MimeMessagePartsId blobIds(MailDTO mailDTO) {

---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org