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 2021/07/15 01:25:53 UTC
[james-project] branch master updated: [UPGRADE] Upgrade to MIME4J
0.8.5 (#536)
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
The following commit(s) were added to refs/heads/master by this push:
new 7b63f7a [UPGRADE] Upgrade to MIME4J 0.8.5 (#536)
7b63f7a is described below
commit 7b63f7ab9540cf6f35650f7bafff8351bd8d8cd8
Author: Tellier Benoit <bt...@linagora.com>
AuthorDate: Thu Jul 15 08:25:46 2021 +0700
[UPGRADE] Upgrade to MIME4J 0.8.5 (#536)
This allow leveraging the multiple performance enhancements that this release
contributed.
---
.../store/search/comparator/SentDateComparator.java | 5 +++--
.../search/comparator/SentDateComparatorTest.java | 2 +-
pom.xml | 2 +-
.../model/message/view/MessageFastViewFactory.java | 2 +-
.../model/message/view/MessageFullViewFactory.java | 2 +-
.../model/message/view/MessageHeaderViewFactory.java | 2 +-
.../draft/model/message/view/MessageViewFactory.java | 19 ++++++++-----------
7 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/SentDateComparator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/SentDateComparator.java
index cf6db2b..1e67ee7 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/SentDateComparator.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/comparator/SentDateComparator.java
@@ -29,6 +29,7 @@ import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
+import org.apache.commons.lang3.StringUtils;
import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import org.apache.james.mime4j.field.DateTimeFieldLenientImpl;
import org.apache.james.mime4j.stream.RawField;
@@ -78,9 +79,9 @@ public class SentDateComparator extends AbstractHeaderComparator {
// This method is here to convert the first date into something parsable by RFC_1123_DATE_TIME DateTimeFormatter
Matcher sanitizerMatcher = DATE_SANITIZING_PATTERN.matcher(value);
if (sanitizerMatcher.find()) {
- return value.substring(0, sanitizerMatcher.start());
+ return StringUtils.normalizeSpace(value.substring(0, sanitizerMatcher.start()));
}
- return value;
+ return StringUtils.normalizeSpace(value);
}
@Override
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/comparator/SentDateComparatorTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/comparator/SentDateComparatorTest.java
index 041ed0f..2122456 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/comparator/SentDateComparatorTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/search/comparator/SentDateComparatorTest.java
@@ -65,6 +65,6 @@ class SentDateComparatorTest {
@Test
void toISODateShouldParseRFC5322InvalidHeader() {
assertThat(SentDateComparator.toISODate("Fri, 5 Jun 2020 10:41:00 +0000 (UTC)"))
- .contains(ZonedDateTime.parse("2020-06-05T10:41Z[UTC]"));
+ .contains(ZonedDateTime.parse("2020-06-05T10:41Z"));
}
}
diff --git a/pom.xml b/pom.xml
index 2472431a..84b5e3d 100644
--- a/pom.xml
+++ b/pom.xml
@@ -589,7 +589,7 @@
<james.groupId>org.apache.james</james.groupId>
<james.protocols.groupId>${james.groupId}.protocols</james.protocols.groupId>
<activemq.version>5.16.1</activemq.version>
- <apache-mime4j.version>0.8.4</apache-mime4j.version>
+ <apache-mime4j.version>0.8.5</apache-mime4j.version>
<apache.openjpa.version>3.1.2</apache.openjpa.version>
<derby.version>10.14.2.0</derby.version>
<log4j2.version>2.14.0</log4j2.version>
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactory.java
index edcff41..218221c 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFastViewFactory.java
@@ -91,7 +91,7 @@ public class MessageFastViewFactory implements MessageViewFactory<MessageFastVie
.size(firstMessageResult.getSize())
.inReplyToMessageId(Helpers.getHeaderValue(mimeMessage, "in-reply-to"))
.subject(Strings.nullToEmpty(mimeMessage.getSubject()).trim())
- .headers(Helpers.toHeaderMap(mimeMessage.getHeader().getFields()))
+ .headers(Helpers.toHeaderMap(mimeMessage.getHeader()))
.from(Emailer.firstFromMailboxList(mimeMessage.getFrom()))
.to(Emailer.fromAddressList(mimeMessage.getTo()))
.cc(Emailer.fromAddressList(mimeMessage.getCc()))
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 9016143..7efdb06 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
@@ -118,7 +118,7 @@ public class MessageFullViewFactory implements MessageViewFactory<MessageFullVie
.inReplyToMessageId(Helpers.getHeaderValue(mimeMessage, "in-reply-to"))
.keywords(message.getKeywords())
.subject(Strings.nullToEmpty(mimeMessage.getSubject()).trim())
- .headers(Helpers.toHeaderMap(mimeMessage.getHeader().getFields()))
+ .headers(Helpers.toHeaderMap(mimeMessage.getHeader()))
.from(Emailer.firstFromMailboxList(mimeMessage.getFrom()))
.to(Emailer.fromAddressList(mimeMessage.getTo()))
.cc(Emailer.fromAddressList(mimeMessage.getCc()))
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactory.java
index 5232e09..a3ea461 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderViewFactory.java
@@ -82,7 +82,7 @@ public class MessageHeaderViewFactory implements MessageViewFactory<MessageHeade
.size(firstMessageResult.getSize())
.inReplyToMessageId(Helpers.getHeaderValue(mimeMessage, "in-reply-to"))
.subject(Strings.nullToEmpty(mimeMessage.getSubject()).trim())
- .headers(Helpers.toHeaderMap(mimeMessage.getHeader().getFields()))
+ .headers(Helpers.toHeaderMap(mimeMessage.getHeader()))
.from(Emailer.firstFromMailboxList(mimeMessage.getFrom()))
.to(Emailer.fromAddressList(mimeMessage.getTo()))
.cc(Emailer.fromAddressList(mimeMessage.getCc()))
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageViewFactory.java
index 3333bca..acaec8d 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageViewFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageViewFactory.java
@@ -27,7 +27,6 @@ import java.time.Instant;
import java.util.Collection;
import java.util.Date;
import java.util.List;
-import java.util.Map;
import java.util.Optional;
import java.util.Set;
import java.util.function.Function;
@@ -42,6 +41,7 @@ import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageResult;
import org.apache.james.mime4j.codec.DecodeMonitor;
import org.apache.james.mime4j.codec.DecoderUtil;
+import org.apache.james.mime4j.dom.Header;
import org.apache.james.mime4j.dom.Message;
import org.apache.james.mime4j.message.DefaultMessageBuilder;
import org.apache.james.mime4j.stream.Field;
@@ -54,7 +54,6 @@ import com.github.fge.lambdas.Throwing;
import com.github.steveash.guavate.Guavate;
import com.google.common.base.Preconditions;
import com.google.common.collect.ImmutableMap;
-import com.google.common.collect.Multimaps;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
@@ -112,18 +111,16 @@ public interface MessageViewFactory<T extends MessageView> {
return field.getBody();
}
- static ImmutableMap<String, String> toHeaderMap(List<Field> fields) {
- Function<Map.Entry<String, Collection<Field>>, String> bodyConcatenator = fieldListEntry -> fieldListEntry.getValue()
- .stream()
- .map(Field::getBody)
- .map(body -> DecoderUtil.decodeEncodedWords(body, DecodeMonitor.SILENT))
- .collect(Collectors.joining(JMAP_MULTIVALUED_FIELD_DELIMITER));
- return Multimaps.index(fields, Field::getName)
- .asMap()
+ static ImmutableMap<String, String> toHeaderMap(Header header) {
+ return header.getFieldsAsMap()
.entrySet()
.stream()
- .collect(Guavate.toImmutableMap(Map.Entry::getKey, bodyConcatenator));
+ .collect(Guavate.toImmutableMap(entry -> entry.getValue().get(0).getName(),
+ entry -> entry.getValue().stream()
+ .map(Field::getBody)
+ .map(body -> DecoderUtil.decodeEncodedWords(body, DecodeMonitor.SILENT))
+ .collect(Collectors.joining(JMAP_MULTIVALUED_FIELD_DELIMITER))));
}
static <T extends MessageView> Function<Collection<MessageResult>, Mono<T>> toMessageViews(FromMessageResult<T> converter) {
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org