JAMES-1965 MessageFullViewFactory: Avoid performing HTML text extraction if not needed
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java
index d391e03..73ca18b 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewFactory.java
@@ -102,8 +102,7 @@
private Mono<MessageFullView> fromMetaDataWithContent(MetaDataWithContent message, Message mimeMessage) throws IOException {
MessageContent messageContent = messageContentExtractor.extract(mimeMessage);
Optional<String> htmlBody = messageContent.getHtmlBody();
- Optional<String> mainTextContent = messageContent.extractMainTextContent(htmlTextExtractor);
- Optional<String> textBody = computeTextBodyIfNeeded(messageContent, mainTextContent);
+ Optional<String> textBody = computeTextBodyIfNeeded(messageContent);
return retrieveProjection(messageContent, message.getMessageId(),
() -> MessageFullView.hasAttachment(getAttachments(message.getAttachments())))
@@ -196,10 +195,9 @@
.build();
}
- private Optional<String> computeTextBodyIfNeeded(MessageContent messageContent, Optional<String> mainTextContent) {
+ private Optional<String> computeTextBodyIfNeeded(MessageContent messageContent) {
return messageContent.getTextBody()
- .map(Optional::of)
- .orElse(mainTextContent);
+ .or(() -> messageContent.extractMainTextContent(htmlTextExtractor));
}
private Optional<String> mainTextContent(MessageContent messageContent) {