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]

Reply via email to