You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/12/06 02:34:17 UTC
[james-project] 07/21: JAMES-2992 JMAP Fast ReadProfile goes with
MessageFastViewFactory
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 <dt...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org