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]
