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 a76aa626290fdf6a4fd4762ba2233533c5f7d5d1 Author: Tran Tien Duc <[email protected]> AuthorDate: Mon Dec 2 15:47:54 2019 +0700 JAMES-2992 JMAP Fast ReadProfile goes with MessageFastViewFactory --- .../james/jmap/draft/model/MessageProperties.java | 21 +++++++-------------- .../model/message/view/MessageFastViewFactory.java | 4 ++-- .../model/message/view/MessageFullViewFactory.java | 4 ++-- .../message/view/MessageHeaderViewFactory.java | 4 ++-- .../message/view/MessageMetadataViewFactory.java | 4 ++-- .../model/message/view/MetaMessageViewFactory.java | 7 ++++++- .../jmap/draft/methods/GetMessagesMethodTest.java | 12 ++++++++++-- .../jmap/draft/model/MessagePropertiesTest.java | 20 ++++++++++++++++++-- 8 files changed, 49 insertions(+), 27 deletions(-) diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageProperties.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageProperties.java index 12fa16a..a157d21 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageProperties.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageProperties.java @@ -24,8 +24,6 @@ import java.util.Objects; import java.util.Optional; import java.util.stream.Stream; -import org.apache.james.mailbox.model.FetchGroup; - import com.github.steveash.guavate.Guavate; import com.google.common.base.MoreObjects; import com.google.common.base.Preconditions; @@ -152,7 +150,7 @@ public class MessageProperties { isAnswered("isAnswered", ReadProfile.Metadata), isDraft("isDraft", ReadProfile.Metadata), isForwarded("isForwarded", ReadProfile.Metadata), - hasAttachment("hasAttachment", ReadProfile.Full), + hasAttachment("hasAttachment", ReadProfile.Fast), headers("headers", ReadProfile.Header), from("from", ReadProfile.Header), to("to", ReadProfile.Header), @@ -162,7 +160,7 @@ public class MessageProperties { subject("subject", ReadProfile.Header), date("date", ReadProfile.Header), size("size", ReadProfile.Metadata), - preview("preview", ReadProfile.Full), + preview("preview", ReadProfile.Fast), textBody("textBody", ReadProfile.Full), htmlBody("htmlBody", ReadProfile.Full), attachments("attachments", ReadProfile.Full), @@ -215,9 +213,10 @@ public class MessageProperties { } public enum ReadProfile { - Metadata(0, FetchGroup.MINIMAL), - Header(1, FetchGroup.HEADERS), - Full(2, FetchGroup.FULL_CONTENT); + Metadata(0), + Header(1), + Fast(2), + Full(3); static ReadProfile combine(ReadProfile readProfile1, ReadProfile readProfile2) { if (readProfile1.priority > readProfile2.priority) { @@ -227,15 +226,9 @@ public class MessageProperties { } private final int priority; - private final FetchGroup fetchGroup; - ReadProfile(int priority, FetchGroup fetchGroup) { + ReadProfile(int priority) { this.priority = priority; - this.fetchGroup = fetchGroup; - } - - public FetchGroup getFetchGroup() { - return fetchGroup; } } 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 e33993b..b212c11 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 @@ -108,8 +108,8 @@ public class MessageFastViewFactory implements MessageViewFactory<MessageFastVie @Inject @VisibleForTesting - MessageFastViewFactory(BlobManager blobManager, MessageIdManager messageIdManager, MessageFastViewProjection fastViewProjection, - MessageFullViewFactory messageFullViewFactory) { + public MessageFastViewFactory(BlobManager blobManager, MessageIdManager messageIdManager, MessageFastViewProjection fastViewProjection, + MessageFullViewFactory messageFullViewFactory) { this.blobManager = blobManager; this.messageIdManager = messageIdManager; this.fastViewProjection = fastViewProjection; 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 7cbd989..f6361e8 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 @@ -35,7 +35,6 @@ import org.apache.james.jmap.draft.model.Attachment; import org.apache.james.jmap.draft.model.BlobId; import org.apache.james.jmap.draft.model.Emailer; import org.apache.james.jmap.draft.model.Keywords; -import org.apache.james.jmap.draft.model.MessageProperties; import org.apache.james.jmap.draft.utils.HtmlTextExtractor; import org.apache.james.mailbox.BlobManager; import org.apache.james.mailbox.MailboxSession; @@ -43,6 +42,7 @@ import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.Cid; +import org.apache.james.mailbox.model.FetchGroup; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageAttachment; import org.apache.james.mailbox.model.MessageId; @@ -73,7 +73,7 @@ public class MessageFullViewFactory implements MessageViewFactory<MessageFullVie @Override public List<MessageFullView> fromMessageIds(List<MessageId> messageIds, MailboxSession mailboxSession) throws MailboxException { - List<MessageResult> messages = messageIdManager.getMessages(messageIds, MessageProperties.ReadProfile.Full.getFetchGroup(), mailboxSession); + List<MessageResult> messages = messageIdManager.getMessages(messageIds, FetchGroup.FULL_CONTENT, mailboxSession); return Helpers.toMessageViews(messages, this::fromMessageResults); } 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 b519b87..05f548d 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 @@ -27,11 +27,11 @@ import javax.inject.Inject; import org.apache.james.jmap.draft.model.BlobId; import org.apache.james.jmap.draft.model.Emailer; -import org.apache.james.jmap.draft.model.MessageProperties; import org.apache.james.mailbox.BlobManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.model.FetchGroup; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.MessageResult; @@ -53,7 +53,7 @@ public class MessageHeaderViewFactory implements MessageViewFactory<MessageHeade @Override public List<MessageHeaderView> fromMessageIds(List<MessageId> messageIds, MailboxSession mailboxSession) throws MailboxException { - List<MessageResult> messages = messageIdManager.getMessages(messageIds, MessageProperties.ReadProfile.Header.getFetchGroup(), mailboxSession); + List<MessageResult> messages = messageIdManager.getMessages(messageIds, FetchGroup.HEADERS, mailboxSession); return Helpers.toMessageViews(messages, this::fromMessageResults); } 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 4b88288..c17e9dc 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 @@ -25,11 +25,11 @@ import java.util.List; import javax.inject.Inject; import org.apache.james.jmap.draft.model.BlobId; -import org.apache.james.jmap.draft.model.MessageProperties.ReadProfile; import org.apache.james.mailbox.BlobManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.exception.MailboxException; +import org.apache.james.mailbox.model.FetchGroup; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageId; import org.apache.james.mailbox.model.MessageResult; @@ -50,7 +50,7 @@ public class MessageMetadataViewFactory implements MessageViewFactory<MessageMet @Override public List<MessageMetadataView> fromMessageIds(List<MessageId> messageIds, MailboxSession session) throws MailboxException { - List<MessageResult> messages = messageIdManager.getMessages(messageIds, ReadProfile.Metadata.getFetchGroup(), session); + List<MessageResult> messages = messageIdManager.getMessages(messageIds, FetchGroup.MINIMAL, session); return Helpers.toMessageViews(messages, this::fromMessageResults); } diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MetaMessageViewFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MetaMessageViewFactory.java index 149be58..3e0f678 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MetaMessageViewFactory.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MetaMessageViewFactory.java @@ -27,12 +27,15 @@ public class MetaMessageViewFactory { private final MessageFullViewFactory messageFullViewFactory; private final MessageHeaderViewFactory messageHeaderViewFactory; private final MessageMetadataViewFactory messageMetadataViewFactory; + private final MessageFastViewFactory messageFastViewFactory; @Inject - public MetaMessageViewFactory(MessageFullViewFactory messageFullViewFactory, MessageHeaderViewFactory messageHeaderViewFactory, MessageMetadataViewFactory messageMetadataViewFactory) { + public MetaMessageViewFactory(MessageFullViewFactory messageFullViewFactory, MessageHeaderViewFactory messageHeaderViewFactory, + MessageMetadataViewFactory messageMetadataViewFactory, MessageFastViewFactory messageFastViewFactory) { this.messageFullViewFactory = messageFullViewFactory; this.messageHeaderViewFactory = messageHeaderViewFactory; this.messageMetadataViewFactory = messageMetadataViewFactory; + this.messageFastViewFactory = messageFastViewFactory; } public MessageViewFactory<? extends MessageView> getFactory(MessageProperties.ReadProfile readProfile) { @@ -41,6 +44,8 @@ public class MetaMessageViewFactory { return messageFullViewFactory; case Header: return messageHeaderViewFactory; + case Fast: + return messageFastViewFactory; case Metadata: return messageMetadataViewFactory; default: diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java index e0fe458..5a3686b 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/GetMessagesMethodTest.java @@ -42,6 +42,7 @@ import org.apache.james.jmap.draft.model.GetMessagesRequest; import org.apache.james.jmap.draft.model.GetMessagesResponse; import org.apache.james.jmap.draft.model.MessageProperties.MessageProperty; import org.apache.james.jmap.draft.model.MethodCallId; +import org.apache.james.jmap.draft.model.message.view.MessageFastViewFactory; import org.apache.james.jmap.draft.model.message.view.MessageFullView; import org.apache.james.jmap.draft.model.message.view.MessageFullViewFactory; import org.apache.james.jmap.draft.model.message.view.MessageHeaderView; @@ -51,6 +52,7 @@ import org.apache.james.jmap.draft.model.message.view.MessageMetadataViewFactory import org.apache.james.jmap.draft.model.message.view.MetaMessageViewFactory; import org.apache.james.jmap.draft.utils.HtmlTextExtractor; import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor; +import org.apache.james.jmap.memory.projections.MemoryMessageFastViewProjection; import org.apache.james.mailbox.BlobManager; import org.apache.james.mailbox.FlagsBuilder; import org.apache.james.mailbox.MailboxSession; @@ -120,10 +122,16 @@ public class GetMessagesMethodTest { messageIdManager = resources.getMessageIdManager(); messageMetadataViewFactory = spy(new MessageMetadataViewFactory(blobManager, messageIdManager)); + MessageFullViewFactory messageFullViewFactory = new MessageFullViewFactory(blobManager, messageContentExtractor, + htmlTextExtractor, messageIdManager); + MessageFastViewFactory messageFastViewFactory = new MessageFastViewFactory(blobManager, messageIdManager, + new MemoryMessageFastViewProjection(), messageFullViewFactory); + MetaMessageViewFactory metaMessageViewFactory = new MetaMessageViewFactory( - new MessageFullViewFactory(blobManager, messageContentExtractor, htmlTextExtractor, messageIdManager), + messageFullViewFactory, new MessageHeaderViewFactory(blobManager, messageIdManager), - messageMetadataViewFactory); + messageMetadataViewFactory, + messageFastViewFactory); testee = new GetMessagesMethod(metaMessageViewFactory, messageIdManager, new DefaultMetricFactory()); messageContent1 = org.apache.james.mime4j.dom.Message.Builder.of() diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessagePropertiesTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessagePropertiesTest.java index 5c94f10..82d7dd1 100644 --- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessagePropertiesTest.java +++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessagePropertiesTest.java @@ -152,6 +152,14 @@ class MessagePropertiesTest { } @Test + void combineShouldReturnFastWhenOnlyFast() { + assertThat(MessageProperties.ReadProfile.combine( + MessageProperties.ReadProfile.Fast, + MessageProperties.ReadProfile.Fast)) + .isEqualTo(MessageProperties.ReadProfile.Fast); + } + + @Test void combineShouldReturnHeaderWhenHeaderAndMetadata() { assertThat(MessageProperties.ReadProfile.combine( MessageProperties.ReadProfile.Metadata, @@ -168,9 +176,17 @@ class MessagePropertiesTest { } @Test - void combineShouldReturnFullWhenFullAndHeader() { + void combineShouldReturnFastWhenFastAndHeader() { assertThat(MessageProperties.ReadProfile.combine( MessageProperties.ReadProfile.Header, + MessageProperties.ReadProfile.Fast)) + .isEqualTo(MessageProperties.ReadProfile.Fast); + } + + @Test + void combineShouldReturnFullWhenFullAndFast() { + assertThat(MessageProperties.ReadProfile.combine( + MessageProperties.ReadProfile.Fast, MessageProperties.ReadProfile.Full)) .isEqualTo(MessageProperties.ReadProfile.Full); } @@ -179,7 +195,7 @@ class MessagePropertiesTest { void combineShouldCommute() { assertThat(MessageProperties.ReadProfile.combine( MessageProperties.ReadProfile.Full, - MessageProperties.ReadProfile.Header)) + MessageProperties.ReadProfile.Fast)) .isEqualTo(MessageProperties.ReadProfile.Full); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
