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 63256620bd866901b4e08f1e43745d3bc3a11635 Author: Benoit Tellier <[email protected]> AuthorDate: Thu May 20 08:40:44 2021 +0700 [PERFORMANCE] MessageViewFactory::getMailboxIds should return a Set We thus do not need the unicity constraint anymore --- .../james/jmap/draft/model/message/view/MessageFastView.java | 3 ++- .../draft/model/message/view/MessageFastViewFactory.java | 4 ++-- .../james/jmap/draft/model/message/view/MessageFullView.java | 3 ++- .../draft/model/message/view/MessageFullViewFactory.java | 4 ++-- .../jmap/draft/model/message/view/MessageHeaderView.java | 3 ++- .../draft/model/message/view/MessageHeaderViewFactory.java | 4 ++-- .../jmap/draft/model/message/view/MessageMetadataView.java | 12 ++++++------ .../draft/model/message/view/MessageMetadataViewFactory.java | 2 +- .../jmap/draft/model/message/view/MessageViewFactory.java | 6 +++--- .../jmap/draft/model/message/view/MessageFullViewTest.java | 5 +++-- 10 files changed, 25 insertions(+), 21 deletions(-) diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFastView.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFastView.java index 5c0eaae..ea3aa8c 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFastView.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFastView.java @@ -39,6 +39,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; /** * This message view holds all Message properties expected to be fast. @@ -100,7 +101,7 @@ public class MessageFastView extends MessageHeaderView { MessageFastView(MessageId id, BlobId blobId, String threadId, - ImmutableList<MailboxId> mailboxIds, + ImmutableSet<MailboxId> mailboxIds, Optional<String> inReplyToMessageId, ImmutableMap<String, String> headers, Optional<Emailer> from, 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 fdebb16..edcff41 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 @@ -73,7 +73,7 @@ public class MessageFastViewFactory implements MessageViewFactory<MessageFastVie return Mono.fromCallable(() -> { MessageFastViewPrecomputedProperties messageProjection = fastProjections.get(firstMessageResult.getMessageId()); - List<MailboxId> mailboxIds = Helpers.getMailboxIds(messageResults); + Set<MailboxId> mailboxIds = Helpers.getMailboxIds(messageResults); Message mimeMessage = Helpers.parse(firstMessageResult.getFullContent().getInputStream()); @@ -81,7 +81,7 @@ public class MessageFastViewFactory implements MessageViewFactory<MessageFastVie }); } - private MessageFastView instanciateFastView(Collection<MessageResult> messageResults, MessageResult firstMessageResult, MessageFastViewPrecomputedProperties messageProjection, List<MailboxId> mailboxIds, Message mimeMessage) { + private MessageFastView instanciateFastView(Collection<MessageResult> messageResults, MessageResult firstMessageResult, MessageFastViewPrecomputedProperties messageProjection, Set<MailboxId> mailboxIds, Message mimeMessage) { return MessageFastView.builder() .id(firstMessageResult.getMessageId()) .mailboxIds(mailboxIds) diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullView.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullView.java index 2fbdfcc..190a0f2 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullView.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullView.java @@ -42,6 +42,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; @JsonDeserialize(builder = MessageFullView.Builder.class) @JsonFilter(JmapResponseWriterImpl.PROPERTIES_FILTER) @@ -128,7 +129,7 @@ public class MessageFullView extends MessageFastView { MessageFullView(MessageId id, BlobId blobId, String threadId, - ImmutableList<MailboxId> mailboxIds, + ImmutableSet<MailboxId> mailboxIds, Optional<String> inReplyToMessageId, boolean hasAttachment, ImmutableMap<String, String> headers, 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 73ca18b..9016143 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 @@ -185,7 +185,7 @@ public class MessageFullViewFactory implements MessageViewFactory<MessageFullVie Helpers.assertOneMessageId(messageResults); MessageResult firstMessageResult = messageResults.iterator().next(); - List<MailboxId> mailboxIds = Helpers.getMailboxIds(messageResults); + Set<MailboxId> mailboxIds = Helpers.getMailboxIds(messageResults); Keywords keywords = Helpers.getKeywords(messageResults); return MetaDataWithContent.builderFromMessageResult(firstMessageResult) @@ -304,7 +304,7 @@ public class MessageFullViewFactory implements MessageViewFactory<MessageFullVie return this; } - public Builder mailboxIds(List<MailboxId> mailboxIds) { + public Builder mailboxIds(Set<MailboxId> mailboxIds) { this.mailboxIds.addAll(mailboxIds); return this; } diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderView.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderView.java index c7eb122..d5e0175 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderView.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageHeaderView.java @@ -36,6 +36,7 @@ import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; public class MessageHeaderView extends MessageMetadataView { @@ -145,7 +146,7 @@ public class MessageHeaderView extends MessageMetadataView { MessageHeaderView(MessageId id, BlobId blobId, String threadId, - ImmutableList<MailboxId> mailboxIds, + ImmutableSet<MailboxId> mailboxIds, Optional<String> inReplyToMessageId, ImmutableMap<String, String> headers, Optional<Emailer> from, 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 808f7b8..5232e09 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 @@ -65,14 +65,14 @@ public class MessageHeaderViewFactory implements MessageViewFactory<MessageHeade return Mono.fromCallable(() -> messageResults.iterator().next()) .flatMap(Throwing.function(firstMessageResult -> { - List<MailboxId> mailboxIds = Helpers.getMailboxIds(messageResults); + Collection<MailboxId> mailboxIds = Helpers.getMailboxIds(messageResults); Message mimeMessage = Helpers.parse(firstMessageResult.getFullContent().getInputStream()); return instanciateHeaderView(messageResults, firstMessageResult, mailboxIds, mimeMessage); })); } private Mono<MessageHeaderView> instanciateHeaderView(Collection<MessageResult> messageResults, MessageResult firstMessageResult, - List<MailboxId> mailboxIds, Message mimeMessage) { + Collection<MailboxId> mailboxIds, Message mimeMessage) { return Mono.just(MessageHeaderView.messageHeaderBuilder() .id(firstMessageResult.getMessageId()) .mailboxIds(mailboxIds) diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataView.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataView.java index 130a7aa..dc71be5 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataView.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataView.java @@ -34,8 +34,8 @@ import com.fasterxml.jackson.annotation.JsonIgnore; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; import com.google.common.base.Strings; -import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; public class MessageMetadataView implements MessageView { @@ -47,7 +47,7 @@ public class MessageMetadataView implements MessageView { protected MessageId id; protected BlobId blobId; protected String threadId; - protected ImmutableList<MailboxId> mailboxIds; + protected ImmutableSet<MailboxId> mailboxIds; protected Number size; protected Optional<Keywords> keywords = Optional.empty(); @@ -77,7 +77,7 @@ public class MessageMetadataView implements MessageView { } public S mailboxIds(Collection<MailboxId> mailboxIds) { - this.mailboxIds = ImmutableList.copyOf(mailboxIds); + this.mailboxIds = ImmutableSet.copyOf(mailboxIds); return (S) this; } @@ -109,12 +109,12 @@ public class MessageMetadataView implements MessageView { private final MessageId id; private final BlobId blobId; private final String threadId; - private final ImmutableList<MailboxId> mailboxIds; + private final ImmutableSet<MailboxId> mailboxIds; private final Number size; private final Keywords keywords; @VisibleForTesting - MessageMetadataView(MessageId id, BlobId blobId, String threadId, ImmutableList<MailboxId> mailboxIds, Number size, Keywords keywords) { + MessageMetadataView(MessageId id, BlobId blobId, String threadId, ImmutableSet<MailboxId> mailboxIds, Number size, Keywords keywords) { this.id = id; this.blobId = blobId; this.threadId = threadId; @@ -135,7 +135,7 @@ public class MessageMetadataView implements MessageView { return threadId; } - public ImmutableList<MailboxId> getMailboxIds() { + public ImmutableSet<MailboxId> getMailboxIds() { return mailboxIds; } diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java index 0114837..d2920cc 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageMetadataViewFactory.java @@ -61,7 +61,7 @@ public class MessageMetadataViewFactory implements MessageViewFactory<MessageMet Helpers.assertOneMessageId(messageResults); MessageResult firstMessageResult = messageResults.iterator().next(); - List<MailboxId> mailboxIds = Helpers.getMailboxIds(messageResults); + Collection<MailboxId> mailboxIds = Helpers.getMailboxIds(messageResults); return Mono.just(MessageMetadataView.messageMetadataBuilder() .id(firstMessageResult.getMessageId()) 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 6729674..5a8130a 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 @@ -29,6 +29,7 @@ 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; import java.util.function.Predicate; import java.util.stream.Collectors; @@ -85,11 +86,10 @@ public interface MessageViewFactory<T extends MessageView> { .count() == 1; } - static List<MailboxId> getMailboxIds(Collection<MessageResult> messageResults) { + static Set<MailboxId> getMailboxIds(Collection<MessageResult> messageResults) { return messageResults.stream() .map(MessageResult::getMailboxId) - .distinct() - .collect(Guavate.toImmutableList()); + .collect(Guavate.toImmutableSet()); } static Keywords getKeywords(Collection<MessageResult> messageResults) { diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewTest.java index b8756f8..b7ac9a3 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/message/view/MessageFullViewTest.java @@ -39,6 +39,7 @@ import org.junit.jupiter.api.Test; import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableMap; +import com.google.common.collect.ImmutableSet; class MessageFullViewTest { @@ -173,7 +174,7 @@ class MessageFullViewTest { Number messageSize = Number.fromLong(123); MessageFullView expected = new MessageFullView(TestMessageId.of(1), BlobId.of("blobId"), "threadId", - ImmutableList.of(InMemoryId.of(456)), Optional.empty(), false, ImmutableMap.of("key", "value"), + ImmutableSet.of(InMemoryId.of(456)), Optional.empty(), false, ImmutableMap.of("key", "value"), Optional.empty(), ImmutableList.of(), ImmutableList.of(), ImmutableList.of(), ImmutableList.of(), "subject", currentDate, messageSize, PREVIEW_DTO, Optional.empty(), Optional.empty(), ImmutableList.of(), ImmutableMap.of(), Keywords.DEFAULT_VALUE); @@ -249,7 +250,7 @@ class MessageFullViewTest { TestMessageId.of(1), BlobId.of("blobId"), "threadId", - ImmutableList.of(InMemoryId.of(456)), + ImmutableSet.of(InMemoryId.of(456)), Optional.of("inReplyToMessageId"), true, ImmutableMap.of("key", "value"), --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
