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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
