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 d4a3b1d6d89263373330ebb693a536d8d3b97766
Author: Benoit Tellier <[email protected]>
AuthorDate: Wed Jan 11 15:46:21 2023 +0700

    [UPGRADE] Mime4J 0.8.9: dispose messages
---
 .../src/main/java/org/apache/james/jmap/api/model/Preview.java    | 7 ++++++-
 .../org/apache/james/jmap/draft/methods/MIMEMessageConverter.java | 5 ++++-
 .../java/org/apache/james/jmap/draft/methods/MessageAppender.java | 1 +
 .../org/apache/james/jmap/draft/methods/SendMDNProcessor.java     | 1 +
 .../apache/james/jmap/mailet/ExtractMDNOriginalJMAPMessageId.java | 1 +
 .../apache/james/webadmin/data/jmap/EmailQueryViewPopulator.java  | 1 +
 .../src/main/java/org/apache/james/webadmin/dto/MailDto.java      | 8 ++++++--
 7 files changed, 20 insertions(+), 4 deletions(-)

diff --git 
a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/model/Preview.java
 
b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/model/Preview.java
index 12e7ef34c9..5474b6211c 100644
--- 
a/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/model/Preview.java
+++ 
b/server/data/data-jmap/src/main/java/org/apache/james/jmap/api/model/Preview.java
@@ -63,7 +63,12 @@ public class Preview {
         }
 
         public Preview fromInputStream(InputStream inputStream) throws 
IOException {
-            return fromMime4JMessage(parse(inputStream));
+            Message message = parse(inputStream);
+            try {
+                return fromMime4JMessage(message);
+            } finally {
+                message.dispose();
+            }
         }
 
         public Preview fromMime4JMessage(Message mimeMessage) throws 
IOException {
diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java
index 5f499047ff..be44fd574c 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java
@@ -111,7 +111,10 @@ public class MIMEMessageConverter {
     }
 
     public byte[] convert(ValueWithId.CreationMessageEntry 
creationMessageEntry, ImmutableList<Attachment.WithBlob> messageAttachments) {
-        return asBytes(convertToMime(creationMessageEntry, 
messageAttachments));
+        Message message = convertToMime(creationMessageEntry, 
messageAttachments);
+        byte[] result = asBytes(message);
+        message.dispose();
+        return result;
     }
 
     public byte[] asBytes(Message message) {
diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java
index f114ae7525..4ab1e381cf 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java
@@ -124,6 +124,7 @@ public class MessageAppender {
                         }
                         return Mono.just(appendResult);
                     })
+                    .doFinally(any -> newMessage.message.dispose())
                     .map(appendResult -> MetaDataWithContent.builder()
                         .uid(appendResult.getId().getUid())
                         .keywords(createdEntry.getValue().getKeywords())
diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java
index 030a5775e8..0ce526408b 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java
@@ -145,6 +145,7 @@ public class SendMDNProcessor implements 
SetMessagesProcessor {
         Message originalMessage = retrieveOriginalMessage(mdn, mailboxSession);
 
         Message mdnAnswer = mdn.generateMDNMessage(originalMessage, 
mailboxSession);
+        originalMessage.dispose();
 
         Flags seen = new Flags(Flags.Flag.SEEN);
         MetaDataWithContent metaDataWithContent = 
messageAppender.appendMessageInMailbox(mdnAnswer,
diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/ExtractMDNOriginalJMAPMessageId.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/ExtractMDNOriginalJMAPMessageId.java
index a8a6baf399..a908a2ce1e 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/ExtractMDNOriginalJMAPMessageId.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/mailet/ExtractMDNOriginalJMAPMessageId.java
@@ -82,6 +82,7 @@ public class ExtractMDNOriginalJMAPMessageId extends 
GenericMailet {
                 .map(OriginalMessageId::getOriginalMessageId)
                 .flatMap(messageId -> 
findMessageIdForRFC822MessageId(messageId, recipient))
                 .ifPresent(messageId -> setJmapMessageIdAsHeader(mimeMessage, 
messageId));
+            message.dispose();
         } catch (Exception e) {
             throw new MessagingException("MDN can't be parse", e);
         }
diff --git 
a/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/EmailQueryViewPopulator.java
 
b/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/EmailQueryViewPopulator.java
index fc1a4f800d..51cacd8b46 100644
--- 
a/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/EmailQueryViewPopulator.java
+++ 
b/server/protocols/webadmin/webadmin-jmap/src/main/java/org/apache/james/webadmin/data/jmap/EmailQueryViewPopulator.java
@@ -155,6 +155,7 @@ public class EmailQueryViewPopulator {
             Message mime4JMessage = parseMessage(messageResult);
             Date sentAtDate = 
Optional.ofNullable(mime4JMessage.getDate()).orElse(messageResult.getInternalDate());
             ZonedDateTime sentAt = 
ZonedDateTime.ofInstant(sentAtDate.toInstant(), ZoneOffset.UTC);
+            mime4JMessage.dispose();
 
             return new EmailQueryView.Entry(mailboxId, messageId, sentAt, 
receivedAt);
         })
diff --git 
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/dto/MailDto.java
 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/dto/MailDto.java
index 5d48341c97..0a13c69cc7 100644
--- 
a/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/dto/MailDto.java
+++ 
b/server/protocols/webadmin/webadmin-mailrepository/src/main/java/org/apache/james/webadmin/dto/MailDto.java
@@ -103,8 +103,12 @@ public class MailDto {
         try {
             MessageContentExtractor extractor = new MessageContentExtractor();
             return Optional.ofNullable(mail.getMessage())
-                    
.map(Throwing.function(MailDto::convertMessage).sneakyThrow())
-                    .map(Throwing.function(extractor::extract).sneakyThrow());
+                .map(Throwing.<MimeMessage, MessageContent>function(message -> 
{
+                    Message mimeMessage = MailDto.convertMessage(message);
+                    MessageContent result = extractor.extract(mimeMessage);
+                    mimeMessage.dispose();
+                    return result;
+                }).sneakyThrow());
         } catch (MessagingException e) {
             if (additionalFields.contains(AdditionalField.TEXT_BODY)) {
                 throw new 
InaccessibleFieldException(AdditionalField.TEXT_BODY, e);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to