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 rc...@apache.org on 2019/11/25 09:06:44 UTC

[james-project] 01/22: JAMES-2987 Rename Jmap Message to MessageFullView

This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 14d1aaa2589d7b7c2cb388bcd11748f8ba1ddca6
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Thu Nov 21 09:14:21 2019 +0700

    JAMES-2987 Rename Jmap Message to MessageFullView
    
    And the factory
---
 .../apache/james/jmap/draft/JMAPCommonModule.java  |  4 +-
 .../jmap/draft/methods/GetMessagesMethod.java      | 16 ++---
 .../jmap/draft/methods/MIMEMessageConverter.java   |  4 +-
 .../james/jmap/draft/methods/MessageAppender.java  | 28 ++++----
 .../james/jmap/draft/methods/MessageSender.java    |  6 +-
 .../james/jmap/draft/methods/SendMDNProcessor.java |  4 +-
 .../methods/SetMessagesCreationProcessor.java      | 16 ++---
 .../james/jmap/draft/methods/ValueWithId.java      |  6 +-
 .../james/jmap/draft/model/EnvelopeUtils.java      |  2 +-
 .../jmap/draft/model/GetMessagesResponse.java      | 14 ++--
 .../model/{Message.java => MessageFullView.java}   | 51 ++++++++-------
 ...MessageFactory.java => MessageViewFactory.java} |  8 +--
 .../jmap/draft/model/SetMessagesResponse.java      | 12 ++--
 .../apache/james/jmap/draft/model/SubMessage.java  |  2 +-
 .../jmap/draft/json/ParsingWritingObjects.java     |  4 +-
 .../jmap/draft/methods/GetMessagesMethodTest.java  | 34 +++++-----
 .../jmap/draft/methods/MessageSenderTest.java      | 16 ++---
 .../methods/SetMessagesCreationProcessorTest.java  | 12 ++--
 .../{MessageTest.java => MessageFullViewTest.java} | 48 +++++++-------
 ...actoryTest.java => MessageViewFactoryTest.java} | 76 +++++++++++-----------
 .../jmap/draft/model/SetMessagesResponseTest.java  |  8 +--
 21 files changed, 186 insertions(+), 185 deletions(-)

diff --git a/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPCommonModule.java b/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPCommonModule.java
index dce8120..275a17f 100644
--- a/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPCommonModule.java
+++ b/server/container/guice/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/JMAPCommonModule.java
@@ -34,8 +34,8 @@ import org.apache.james.jmap.draft.crypto.SignatureHandler;
 import org.apache.james.jmap.draft.crypto.SignedTokenFactory;
 import org.apache.james.jmap.draft.crypto.SignedTokenManager;
 import org.apache.james.jmap.draft.model.MailboxFactory;
-import org.apache.james.jmap.draft.model.MessageFactory;
 import org.apache.james.jmap.draft.model.MessagePreviewGenerator;
+import org.apache.james.jmap.draft.model.MessageViewFactory;
 import org.apache.james.jmap.draft.send.MailSpool;
 import org.apache.james.jmap.draft.utils.HeadersAuthenticationExtractor;
 import org.apache.james.lifecycle.api.StartUpCheck;
@@ -68,7 +68,7 @@ public class JMAPCommonModule extends AbstractModule {
         bind(MailSpool.class).in(Scopes.SINGLETON);
         bind(AutomaticallySentMailDetectorImpl.class).in(Scopes.SINGLETON);
         bind(MailboxFactory.class).in(Scopes.SINGLETON);
-        bind(MessageFactory.class).in(Scopes.SINGLETON);
+        bind(MessageViewFactory.class).in(Scopes.SINGLETON);
         bind(MessagePreviewGenerator.class).in(Scopes.SINGLETON);
         bind(MessageContentExtractor.class).in(Scopes.SINGLETON);
         bind(HeadersAuthenticationExtractor.class).in(Scopes.SINGLETON);
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
index 1b414a0..32ec8bb 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
@@ -32,11 +32,11 @@ import org.apache.james.jmap.draft.json.FieldNamePropertyFilter;
 import org.apache.james.jmap.draft.model.GetMessagesRequest;
 import org.apache.james.jmap.draft.model.GetMessagesResponse;
 import org.apache.james.jmap.draft.model.Keywords;
-import org.apache.james.jmap.draft.model.Message;
-import org.apache.james.jmap.draft.model.MessageFactory;
-import org.apache.james.jmap.draft.model.MessageFactory.MetaDataWithContent;
+import org.apache.james.jmap.draft.model.MessageFullView;
 import org.apache.james.jmap.draft.model.MessageProperties;
 import org.apache.james.jmap.draft.model.MessageProperties.HeaderProperty;
+import org.apache.james.jmap.draft.model.MessageViewFactory;
+import org.apache.james.jmap.draft.model.MessageViewFactory.MetaDataWithContent;
 import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.utils.KeywordsCombiner;
 import org.apache.james.mailbox.MailboxSession;
@@ -65,17 +65,17 @@ public class GetMessagesMethod implements Method {
     private static final Method.Request.Name METHOD_NAME = Method.Request.name("getMessages");
     private static final Method.Response.Name RESPONSE_NAME = Method.Response.name("messages");
     private static final KeywordsCombiner ACCUMULATOR = new KeywordsCombiner();
-    private final MessageFactory messageFactory;
+    private final MessageViewFactory messageViewFactory;
     private final MessageIdManager messageIdManager;
     private final MetricFactory metricFactory;
     private final Keywords.KeywordsFactory keywordsFactory;
 
     @Inject
     @VisibleForTesting GetMessagesMethod(
-            MessageFactory messageFactory,
+            MessageViewFactory messageViewFactory,
             MessageIdManager messageIdManager,
             MetricFactory metricFactory) {
-        this.messageFactory = messageFactory;
+        this.messageViewFactory = messageViewFactory;
         this.messageIdManager = messageIdManager;
         this.metricFactory = metricFactory;
         this.keywordsFactory = Keywords.lenientFactory();
@@ -150,10 +150,10 @@ public class GetMessagesMethod implements Method {
         }
     }
 
-    private Function<MetaDataWithContent, Stream<Message>> toMessage() {
+    private Function<MetaDataWithContent, Stream<MessageFullView>> toMessage() {
         return metaDataWithContent -> {
             try {
-                return Stream.of(messageFactory.fromMetaDataWithContent(metaDataWithContent));
+                return Stream.of(messageViewFactory.fromMetaDataWithContent(metaDataWithContent));
             } catch (Exception e) {
                 LOGGER.error("Can not convert metaData with content to Message for {}", metaDataWithContent.getMessageId(), e);
                 return Stream.of();
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java
index 6057e1f..14f8a28 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MIMEMessageConverter.java
@@ -31,7 +31,7 @@ import java.util.stream.Collectors;
 
 import org.apache.james.jmap.draft.model.CreationMessage;
 import org.apache.james.jmap.draft.model.CreationMessage.DraftEmailer;
-import org.apache.james.jmap.draft.model.MessageFactory;
+import org.apache.james.jmap.draft.model.MessageViewFactory;
 import org.apache.james.mailbox.model.MessageAttachment;
 import org.apache.james.mime4j.codec.DecodeMonitor;
 import org.apache.james.mime4j.codec.EncoderUtil;
@@ -176,7 +176,7 @@ public class MIMEMessageConverter {
     }
 
     private void addMultivaluedHeader(Message.Builder messageBuilder, String fieldName, String multipleValues) {
-        Splitter.on(MessageFactory.JMAP_MULTIVALUED_FIELD_DELIMITER).split(multipleValues)
+        Splitter.on(MessageViewFactory.JMAP_MULTIVALUED_FIELD_DELIMITER).split(multipleValues)
             .forEach(value -> addHeader(messageBuilder, fieldName, value));
     }
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java
index 79a802a..164029d 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageAppender.java
@@ -32,7 +32,7 @@ import org.apache.james.jmap.draft.methods.ValueWithId.CreationMessageEntry;
 import org.apache.james.jmap.draft.model.Attachment;
 import org.apache.james.jmap.draft.model.CreationMessage;
 import org.apache.james.jmap.draft.model.Keywords;
-import org.apache.james.jmap.draft.model.MessageFactory;
+import org.apache.james.jmap.draft.model.MessageViewFactory;
 import org.apache.james.mailbox.AttachmentManager;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
@@ -73,9 +73,9 @@ public class MessageAppender {
         this.mimeMessageConverter = mimeMessageConverter;
     }
 
-    public MessageFactory.MetaDataWithContent appendMessageInMailboxes(CreationMessageEntry createdEntry,
-                                                                       List<MailboxId> targetMailboxes,
-                                                                       MailboxSession session) throws MailboxException {
+    public MessageViewFactory.MetaDataWithContent appendMessageInMailboxes(CreationMessageEntry createdEntry,
+                                                                           List<MailboxId> targetMailboxes,
+                                                                           MailboxSession session) throws MailboxException {
         Preconditions.checkArgument(!targetMailboxes.isEmpty());
         ImmutableList<MessageAttachment> messageAttachments = getMessageAttachments(session, createdEntry.getValue().getAttachments());
         byte[] messageContent = mimeMessageConverter.convert(createdEntry, messageAttachments);
@@ -94,7 +94,7 @@ public class MessageAppender {
             messageIdManager.setInMailboxes(message.getMessageId(), targetMailboxes, session);
         }
 
-        return MessageFactory.MetaDataWithContent.builder()
+        return MessageViewFactory.MetaDataWithContent.builder()
             .uid(message.getUid())
             .keywords(createdEntry.getValue().getKeywords())
             .internalDate(internalDate.toInstant())
@@ -106,11 +106,11 @@ public class MessageAppender {
             .build();
     }
 
-    public MessageFactory.MetaDataWithContent appendMessageInMailbox(org.apache.james.mime4j.dom.Message message,
-                                                                     MessageManager messageManager,
-                                                                     List<MessageAttachment> attachments,
-                                                                     Flags flags,
-                                                                     MailboxSession session) throws MailboxException {
+    public MessageViewFactory.MetaDataWithContent appendMessageInMailbox(org.apache.james.mime4j.dom.Message message,
+                                                                         MessageManager messageManager,
+                                                                         List<MessageAttachment> attachments,
+                                                                         Flags flags,
+                                                                         MailboxSession session) throws MailboxException {
 
 
         byte[] messageContent = asBytes(message);
@@ -121,7 +121,7 @@ public class MessageAppender {
             .withFlags(flags)
             .build(content), session);
 
-        return MessageFactory.MetaDataWithContent.builder()
+        return MessageViewFactory.MetaDataWithContent.builder()
             .uid(appendedMessage.getUid())
             .keywords(Keywords.lenientFactory().fromFlags(flags))
             .internalDate(internalDate.toInstant())
@@ -141,9 +141,9 @@ public class MessageAppender {
         }
     }
 
-    public MessageFactory.MetaDataWithContent appendMessageInMailbox(CreationMessageEntry createdEntry,
-                                                                       MailboxId targetMailbox,
-                                                                       MailboxSession session) throws MailboxException {
+    public MessageViewFactory.MetaDataWithContent appendMessageInMailbox(CreationMessageEntry createdEntry,
+                                                                         MailboxId targetMailbox,
+                                                                         MailboxSession session) throws MailboxException {
         return appendMessageInMailboxes(createdEntry, ImmutableList.of(targetMailbox), session);
     }
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageSender.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageSender.java
index 6c16258..7ec6164 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageSender.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/MessageSender.java
@@ -25,7 +25,7 @@ import javax.inject.Inject;
 import javax.mail.MessagingException;
 import javax.mail.internet.MimeMessage;
 
-import org.apache.james.jmap.draft.model.MessageFactory;
+import org.apache.james.jmap.draft.model.MessageViewFactory;
 import org.apache.james.jmap.draft.send.MailMetadata;
 import org.apache.james.jmap.draft.send.MailSpool;
 import org.apache.james.lifecycle.api.LifecycleUtil;
@@ -48,7 +48,7 @@ public class MessageSender {
         this.mailSpool = mailSpool;
     }
 
-    public void sendMessage(MessageFactory.MetaDataWithContent message,
+    public void sendMessage(MessageViewFactory.MetaDataWithContent message,
                             Envelope envelope,
                             MailboxSession session) throws MessagingException {
         Mail mail = buildMail(message, envelope);
@@ -60,7 +60,7 @@ public class MessageSender {
     }
 
     @VisibleForTesting
-    static Mail buildMail(MessageFactory.MetaDataWithContent message, Envelope envelope) throws MessagingException {
+    static Mail buildMail(MessageViewFactory.MetaDataWithContent message, Envelope envelope) throws MessagingException {
         String name = message.getMessageId().serialize();
         return MailImpl.builder()
             .name(name)
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java
index a740235..241f8f9 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SendMDNProcessor.java
@@ -32,7 +32,7 @@ import javax.mail.MessagingException;
 import org.apache.james.jmap.draft.exceptions.InvalidOriginMessageForMDNException;
 import org.apache.james.jmap.draft.exceptions.MessageNotFoundException;
 import org.apache.james.jmap.draft.model.JmapMDN;
-import org.apache.james.jmap.draft.model.MessageFactory;
+import org.apache.james.jmap.draft.model.MessageViewFactory;
 import org.apache.james.jmap.draft.model.SetError;
 import org.apache.james.jmap.draft.model.SetMessagesRequest;
 import org.apache.james.jmap.draft.model.SetMessagesResponse;
@@ -151,7 +151,7 @@ public class SendMDNProcessor implements SetMessagesProcessor {
         Message mdnAnswer = mdn.generateMDNMessage(originalMessage, mailboxSession);
 
         Flags seen = new Flags(Flags.Flag.SEEN);
-        MessageFactory.MetaDataWithContent metaDataWithContent = messageAppender.appendMessageInMailbox(mdnAnswer,
+        MessageViewFactory.MetaDataWithContent metaDataWithContent = messageAppender.appendMessageInMailbox(mdnAnswer,
             getOutbox(mailboxSession), reportAsAttachment, seen, mailboxSession);
 
         messageSender.sendMessage(metaDataWithContent,
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessor.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessor.java
index 90e4dfb..99da72f 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessor.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessor.java
@@ -40,11 +40,11 @@ import org.apache.james.jmap.draft.methods.ValueWithId.MessageWithId;
 import org.apache.james.jmap.draft.model.CreationMessage;
 import org.apache.james.jmap.draft.model.CreationMessage.DraftEmailer;
 import org.apache.james.jmap.draft.model.EnvelopeUtils;
-import org.apache.james.jmap.draft.model.Message;
-import org.apache.james.jmap.draft.model.MessageFactory;
-import org.apache.james.jmap.draft.model.MessageFactory.MetaDataWithContent;
+import org.apache.james.jmap.draft.model.MessageFullView;
 import org.apache.james.jmap.draft.model.MessageProperties;
 import org.apache.james.jmap.draft.model.MessageProperties.MessageProperty;
+import org.apache.james.jmap.draft.model.MessageViewFactory;
+import org.apache.james.jmap.draft.model.MessageViewFactory.MetaDataWithContent;
 import org.apache.james.jmap.draft.model.SetError;
 import org.apache.james.jmap.draft.model.SetMessagesError;
 import org.apache.james.jmap.draft.model.SetMessagesRequest;
@@ -76,7 +76,7 @@ import com.google.common.collect.ImmutableList;
 public class SetMessagesCreationProcessor implements SetMessagesProcessor {
 
     private static final Logger LOG = LoggerFactory.getLogger(SetMailboxesCreationProcessor.class);
-    private final MessageFactory messageFactory;
+    private final MessageViewFactory messageViewFactory;
     private final SystemMailboxesProvider systemMailboxesProvider;
     private final AttachmentChecker attachmentChecker;
     private final MetricFactory metricFactory;
@@ -88,7 +88,7 @@ public class SetMessagesCreationProcessor implements SetMessagesProcessor {
     
     @VisibleForTesting
     @Inject
-    SetMessagesCreationProcessor(MessageFactory messageFactory,
+    SetMessagesCreationProcessor(MessageViewFactory messageViewFactory,
                                  SystemMailboxesProvider systemMailboxesProvider,
                                  AttachmentChecker attachmentChecker,
                                  MetricFactory metricFactory,
@@ -97,7 +97,7 @@ public class SetMessagesCreationProcessor implements SetMessagesProcessor {
                                  MessageAppender messageAppender,
                                  MessageSender messageSender,
                                  ReferenceUpdater referenceUpdater) {
-        this.messageFactory = messageFactory;
+        this.messageViewFactory = messageViewFactory;
         this.systemMailboxesProvider = systemMailboxesProvider;
         this.attachmentChecker = attachmentChecker;
         this.metricFactory = metricFactory;
@@ -276,7 +276,7 @@ public class SetMessagesCreationProcessor implements SetMessagesProcessor {
     private MessageWithId handleOutboxMessages(CreationMessageEntry entry, MailboxSession session) throws MailboxException, MessagingException {
         assertUserIsSender(session, entry.getValue().getFrom());
         MetaDataWithContent newMessage = messageAppender.appendMessageInMailboxes(entry, toMailboxIds(entry), session);
-        Message jmapMessage = messageFactory.fromMetaDataWithContent(newMessage);
+        MessageFullView jmapMessage = messageViewFactory.fromMetaDataWithContent(newMessage);
         Envelope envelope = EnvelopeUtils.fromMessage(jmapMessage);
         messageSender.sendMessage(newMessage, envelope, session);
         referenceUpdater.updateReferences(entry.getValue().getHeaders(), session);
@@ -294,7 +294,7 @@ public class SetMessagesCreationProcessor implements SetMessagesProcessor {
 
     private MessageWithId handleDraftMessages(CreationMessageEntry entry, MailboxSession session) throws MailboxException, MessagingException {
         MetaDataWithContent newMessage = messageAppender.appendMessageInMailboxes(entry, toMailboxIds(entry), session);
-        Message jmapMessage = messageFactory.fromMetaDataWithContent(newMessage);
+        MessageFullView jmapMessage = messageViewFactory.fromMetaDataWithContent(newMessage);
         return new ValueWithId.MessageWithId(entry.getCreationId(), jmapMessage);
     }
     
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ValueWithId.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ValueWithId.java
index 059de71..cc89d1f 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ValueWithId.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/ValueWithId.java
@@ -22,7 +22,7 @@ package org.apache.james.jmap.draft.methods;
 import org.apache.james.jmap.draft.model.CreationMessage;
 import org.apache.james.jmap.draft.model.CreationMessageId;
 import org.apache.james.jmap.draft.model.JmapMDN;
-import org.apache.james.jmap.draft.model.Message;
+import org.apache.james.jmap.draft.model.MessageFullView;
 import org.apache.james.jmap.draft.model.SetError;
 
 import com.google.common.base.MoreObjects;
@@ -63,8 +63,8 @@ public class ValueWithId<T> {
         }
     }
 
-    public static class MessageWithId extends ValueWithId<Message> {
-        public MessageWithId(CreationMessageId creationId, Message message) {
+    public static class MessageWithId extends ValueWithId<MessageFullView> {
+        public MessageWithId(CreationMessageId creationId, MessageFullView message) {
             super(creationId, message);
         }
     }
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/EnvelopeUtils.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/EnvelopeUtils.java
index a1d96be..69cb4f4 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/EnvelopeUtils.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/EnvelopeUtils.java
@@ -30,7 +30,7 @@ import org.apache.james.util.StreamUtils;
 import com.github.steveash.guavate.Guavate;
 
 public class EnvelopeUtils {
-    public static Envelope fromMessage(Message jmapMessage) {
+    public static Envelope fromMessage(MessageFullView jmapMessage) {
         MaybeSender sender = MaybeSender.of(jmapMessage.getFrom()
             .map(Emailer::toMailAddress)
             .orElseThrow(() -> new RuntimeException("Sender is mandatory")));
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/GetMessagesResponse.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/GetMessagesResponse.java
index 13137a1..1af0eb8 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/GetMessagesResponse.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/GetMessagesResponse.java
@@ -41,7 +41,7 @@ public class GetMessagesResponse implements Method.Response {
     
     @JsonPOJOBuilder(withPrefix = "")
     public static class Builder {
-        private ImmutableList<Message> messages;
+        private ImmutableList<MessageFullView> messages;
         private List<MessageId> expectedMessageIds;
 
         private Builder() {
@@ -49,12 +49,12 @@ public class GetMessagesResponse implements Method.Response {
         }
 
         @JsonIgnore
-        public Builder message(Message message) {
+        public Builder message(MessageFullView message) {
             this.messages = ImmutableList.of(message);
             return this;
         }
 
-        public Builder messages(List<Message> messages) {
+        public Builder messages(List<MessageFullView> messages) {
             this.messages = ImmutableList.copyOf(messages);
             return this;
         }
@@ -71,7 +71,7 @@ public class GetMessagesResponse implements Method.Response {
         
 
         private List<MessageId> messagesNotFound() {
-            Set<MessageId> foundMessageIds = messages.stream().map(Message::getId).collect(Collectors.toSet());
+            Set<MessageId> foundMessageIds = messages.stream().map(MessageFullView::getId).collect(Collectors.toSet());
             return ImmutableList.copyOf(expectedMessageIds.stream()
                 .filter(id -> !foundMessageIds.contains(id))
                 .collect(Collectors.toList()));
@@ -80,16 +80,16 @@ public class GetMessagesResponse implements Method.Response {
     
     
     
-    private final List<Message> messages;
+    private final List<MessageFullView> messages;
     private final List<MessageId> messagesNotFound;
 
-    private GetMessagesResponse(List<Message> messages, List<MessageId> messagesNotFound) {
+    private GetMessagesResponse(List<MessageFullView> messages, List<MessageId> messagesNotFound) {
         this.messages = messages;
         this.messagesNotFound = messagesNotFound;
     }
 
     @JsonSerialize
-    public List<Message> list() {
+    public List<MessageFullView> list() {
         return messages;
     }
     
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/Message.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageFullView.java
similarity index 89%
rename from server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/Message.java
rename to server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageFullView.java
index a702c31..f6576cf 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/Message.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageFullView.java
@@ -42,9 +42,9 @@ import com.google.common.base.Strings;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
-@JsonDeserialize(builder = Message.Builder.class)
+@JsonDeserialize(builder = MessageFullView.Builder.class)
 @JsonFilter(JmapResponseWriterImpl.PROPERTIES_FILTER)
-public class Message {
+public class MessageFullView {
 
     public static Builder builder() {
         return new Builder();
@@ -192,7 +192,7 @@ public class Message {
             return this;
         }
 
-        public Message build() {
+        public MessageFullView build() {
             Preconditions.checkState(id != null, "'id' is mandatory");
             Preconditions.checkState(blobId != null, "'blobId' is mandatory");
             Preconditions.checkState(!Strings.isNullOrEmpty(threadId), "'threadId' is mandatory");
@@ -206,7 +206,7 @@ public class Message {
             Preconditions.checkState(areAttachedMessagesKeysInAttachments(attachments, attachedMessages), "'attachedMessages' keys must be in 'attachements'");
             boolean hasAttachment = hasAttachment(attachments);
 
-            return new Message(id, blobId, threadId, mailboxIds, Optional.ofNullable(inReplyToMessageId),
+            return new MessageFullView(id, blobId, threadId, mailboxIds, Optional.ofNullable(inReplyToMessageId),
                 hasAttachment, headers, Optional.ofNullable(from),
                 to.build(), cc.build(), bcc.build(), replyTo.build(), subject, date, size, preview, textBody, htmlBody, attachments, attachedMessages,
                 keywords.orElse(Keywords.DEFAULT_VALUE));
@@ -252,27 +252,28 @@ public class Message {
     private final ImmutableMap<BlobId, SubMessage> attachedMessages;
     private final Keywords keywords;
 
-    @VisibleForTesting Message(MessageId id,
-                               BlobId blobId,
-                               String threadId,
-                               ImmutableList<MailboxId> mailboxIds,
-                               Optional<String> inReplyToMessageId,
-                               boolean hasAttachment,
-                               ImmutableMap<String, String> headers,
-                               Optional<Emailer> from,
-                               ImmutableList<Emailer> to,
-                               ImmutableList<Emailer> cc,
-                               ImmutableList<Emailer> bcc,
-                               ImmutableList<Emailer> replyTo,
-                               String subject,
-                               Instant date,
-                               Number size,
-                               String preview,
-                               Optional<String> textBody,
-                               Optional<String> htmlBody,
-                               ImmutableList<Attachment> attachments,
-                               ImmutableMap<BlobId, SubMessage> attachedMessages,
-                               Keywords keywords) {
+    @VisibleForTesting
+    MessageFullView(MessageId id,
+                    BlobId blobId,
+                    String threadId,
+                    ImmutableList<MailboxId> mailboxIds,
+                    Optional<String> inReplyToMessageId,
+                    boolean hasAttachment,
+                    ImmutableMap<String, String> headers,
+                    Optional<Emailer> from,
+                    ImmutableList<Emailer> to,
+                    ImmutableList<Emailer> cc,
+                    ImmutableList<Emailer> bcc,
+                    ImmutableList<Emailer> replyTo,
+                    String subject,
+                    Instant date,
+                    Number size,
+                    String preview,
+                    Optional<String> textBody,
+                    Optional<String> htmlBody,
+                    ImmutableList<Attachment> attachments,
+                    ImmutableMap<BlobId, SubMessage> attachedMessages,
+                    Keywords keywords) {
         this.id = id;
         this.blobId = blobId;
         this.threadId = threadId;
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageFactory.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageViewFactory.java
similarity index 97%
rename from server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageFactory.java
rename to server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageViewFactory.java
index a0e0359..4428c9f 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageFactory.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/MessageViewFactory.java
@@ -60,7 +60,7 @@ import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.Multimaps;
 import com.google.common.collect.Sets;
 
-public class MessageFactory {
+public class MessageViewFactory {
 
     public static final String JMAP_MULTIVALUED_FIELD_DELIMITER = "\n";
 
@@ -70,21 +70,21 @@ public class MessageFactory {
     private final HtmlTextExtractor htmlTextExtractor;
 
     @Inject
-    public MessageFactory(BlobManager blobManager, MessagePreviewGenerator messagePreview, MessageContentExtractor messageContentExtractor, HtmlTextExtractor htmlTextExtractor) {
+    public MessageViewFactory(BlobManager blobManager, MessagePreviewGenerator messagePreview, MessageContentExtractor messageContentExtractor, HtmlTextExtractor htmlTextExtractor) {
         this.blobManager = blobManager;
         this.messagePreview = messagePreview;
         this.messageContentExtractor = messageContentExtractor;
         this.htmlTextExtractor = htmlTextExtractor;
     }
 
-    public Message fromMetaDataWithContent(MetaDataWithContent message) throws MailboxException {
+    public MessageFullView fromMetaDataWithContent(MetaDataWithContent message) throws MailboxException {
         org.apache.james.mime4j.dom.Message mimeMessage = parse(message);
         MessageContent messageContent = extractContent(mimeMessage);
         Optional<String> htmlBody = messageContent.getHtmlBody();
         Optional<String> mainTextContent = mainTextContent(messageContent);
         Optional<String> textBody = computeTextBodyIfNeeded(messageContent, mainTextContent);
         String preview = messagePreview.compute(mainTextContent);
-        return Message.builder()
+        return MessageFullView.builder()
                 .id(message.getMessageId())
                 .blobId(BlobId.of(blobManager.toBlobId(message.getMessageId())))
                 .threadId(message.getMessageId().serialize())
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/SetMessagesResponse.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/SetMessagesResponse.java
index 17d332a..d9682d5 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/SetMessagesResponse.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/SetMessagesResponse.java
@@ -50,7 +50,7 @@ public class SetMessagesResponse implements Method.Response {
         private String accountId;
         private String oldState;
         private String newState;
-        private final ImmutableMap.Builder<CreationMessageId, Message> created;
+        private final ImmutableMap.Builder<CreationMessageId, MessageFullView> created;
         private final ImmutableMap.Builder<CreationMessageId, MessageId> mdnSent;
         private final ImmutableList.Builder<MessageId> updated;
         private final ImmutableList.Builder<MessageId> destroyed;
@@ -82,12 +82,12 @@ public class SetMessagesResponse implements Method.Response {
             throw new NotImplementedException("not implemented");
         }
 
-        public Builder created(CreationMessageId creationMessageId, Message message) {
+        public Builder created(CreationMessageId creationMessageId, MessageFullView message) {
             this.created.put(creationMessageId, message);
             return this;
         }
 
-        public Builder created(Map<CreationMessageId, Message> created) {
+        public Builder created(Map<CreationMessageId, MessageFullView> created) {
             this.created.putAll(created);
             return this;
         }
@@ -171,7 +171,7 @@ public class SetMessagesResponse implements Method.Response {
     private final String accountId;
     private final String oldState;
     private final String newState;
-    private final ImmutableMap<CreationMessageId, Message> created;
+    private final ImmutableMap<CreationMessageId, MessageFullView> created;
     private final ImmutableMap<CreationMessageId, MessageId> mdnSent;
     private final ImmutableList<MessageId> updated;
     private final ImmutableList<MessageId> destroyed;
@@ -180,7 +180,7 @@ public class SetMessagesResponse implements Method.Response {
     private final ImmutableMap<MessageId, SetError> notUpdated;
     private final ImmutableMap<MessageId, SetError> notDestroyed;
 
-    @VisibleForTesting SetMessagesResponse(String accountId, String oldState, String newState, ImmutableMap<CreationMessageId, Message> created, ImmutableMap<CreationMessageId, MessageId> mdnSent, ImmutableList<MessageId> updated, ImmutableList<MessageId> destroyed,
+    @VisibleForTesting SetMessagesResponse(String accountId, String oldState, String newState, ImmutableMap<CreationMessageId, MessageFullView> created, ImmutableMap<CreationMessageId, MessageId> mdnSent, ImmutableList<MessageId> updated, ImmutableList<MessageId> destroyed,
                                            ImmutableMap<CreationMessageId, SetError> notCreated, ImmutableMap<CreationMessageId, SetError> mdnNotSent, ImmutableMap<MessageId, SetError> notUpdated, ImmutableMap<MessageId, SetError> notDestroyed) {
         this.accountId = accountId;
         this.oldState = oldState;
@@ -207,7 +207,7 @@ public class SetMessagesResponse implements Method.Response {
         return newState;
     }
 
-    public ImmutableMap<CreationMessageId, Message> getCreated() {
+    public ImmutableMap<CreationMessageId, MessageFullView> getCreated() {
         return created;
     }
 
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/SubMessage.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/SubMessage.java
index cc966b2..1394c82 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/SubMessage.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/SubMessage.java
@@ -129,7 +129,7 @@ public class SubMessage {
             Preconditions.checkState(date != null, "'date' is mandatory");
             ImmutableList<Attachment> attachments = this.attachments.build();
             ImmutableMap<BlobId, SubMessage> attachedMessages = this.attachedMessages.build();
-            Preconditions.checkState(Message.areAttachedMessagesKeysInAttachments(attachments, attachedMessages), "'attachedMessages' keys must be in 'attachements'");
+            Preconditions.checkState(MessageFullView.areAttachedMessagesKeysInAttachments(attachments, attachedMessages), "'attachedMessages' keys must be in 'attachements'");
             return new SubMessage(headers, Optional.ofNullable(from), to.build(), cc.build(), bcc.build(),
                     replyTo.build(), subject, date, textBody, htmlBody,
                     attachments, attachedMessages
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/json/ParsingWritingObjects.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/json/ParsingWritingObjects.java
index 491a7e2..d749817 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/json/ParsingWritingObjects.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/json/ParsingWritingObjects.java
@@ -28,7 +28,7 @@ import org.apache.james.jmap.draft.model.BlobId;
 import org.apache.james.jmap.draft.model.Emailer;
 import org.apache.james.jmap.draft.model.Keyword;
 import org.apache.james.jmap.draft.model.Keywords;
-import org.apache.james.jmap.draft.model.Message;
+import org.apache.james.jmap.draft.model.MessageFullView;
 import org.apache.james.jmap.draft.model.SubMessage;
 import org.apache.james.mailbox.FlagsBuilder;
 import org.apache.james.mailbox.inmemory.InMemoryId;
@@ -71,7 +71,7 @@ public interface ParsingWritingObjects {
         Optional<String> HTML_BODY = Optional.of("<h1>myHtmlBody</h1>");
     }
 
-    Message MESSAGE = Message.builder()
+    MessageFullView MESSAGE = MessageFullView.builder()
             .id(Common.MESSAGE_ID)
             .blobId(Common.BLOB_ID)
             .threadId(Common.THREAD_ID)
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 1585cb1..bedf3a1 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
@@ -36,13 +36,13 @@ import javax.mail.Flags.Flag;
 
 import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.core.Username;
-import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.model.GetMessagesRequest;
 import org.apache.james.jmap.draft.model.GetMessagesResponse;
-import org.apache.james.jmap.draft.model.Message;
-import org.apache.james.jmap.draft.model.MessageFactory;
+import org.apache.james.jmap.draft.model.MessageFullView;
 import org.apache.james.jmap.draft.model.MessagePreviewGenerator;
 import org.apache.james.jmap.draft.model.MessageProperties.MessageProperty;
+import org.apache.james.jmap.draft.model.MessageViewFactory;
+import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
 import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor;
 import org.apache.james.mailbox.BlobManager;
@@ -103,7 +103,7 @@ public class GetMessagesMethodTest {
         MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
         BlobManager blobManager = mock(BlobManager.class);
         when(blobManager.toBlobId(any(MessageId.class))).thenReturn(BlobId.fromString("fake"));
-        MessageFactory messageFactory = new MessageFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
+        MessageViewFactory messageViewFactory = new MessageViewFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
         InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
         mailboxManager = resources.getMailboxManager();
 
@@ -113,7 +113,7 @@ public class GetMessagesMethodTest {
         mailboxManager.createMailbox(inboxPath, session);
         mailboxManager.createMailbox(customMailboxPath, session);
         messageIdManager = resources.getMessageIdManager();
-        testee = new GetMessagesMethod(messageFactory, messageIdManager, new DefaultMetricFactory());
+        testee = new GetMessagesMethod(messageViewFactory, messageIdManager, new DefaultMetricFactory());
 
         messageContent1 = org.apache.james.mime4j.dom.Message.Builder.of()
             .setSubject("message 1 subject")
@@ -176,7 +176,7 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
-            .extracting(Message::getId, Message::getSubject, Message::getTextBody)
+            .extracting(MessageFullView::getId, MessageFullView::getSubject, MessageFullView::getTextBody)
             .containsOnly(
                 Tuple.tuple(message1.getMessageId(), "message 1 subject", Optional.of("my message")),
                 Tuple.tuple(message2.getMessageId(), "message 2 subject", Optional.of("my message")),
@@ -205,7 +205,7 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
-            .extracting(Message::getId, Message::getHtmlBody)
+            .extracting(MessageFullView::getId, MessageFullView::getHtmlBody)
             .containsOnly(Tuple.tuple(message.getMessageId(), Optional.of("my <b>HTML</b> message")));
     }
 
@@ -304,7 +304,7 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
-            .extracting(Message::getId, Message::getTextBody, Message::getHtmlBody)
+            .extracting(MessageFullView::getId, MessageFullView::getTextBody, MessageFullView::getHtmlBody)
             .containsOnly(Tuple.tuple(message.getMessageId(), Optional.of("my HTML message"), Optional.of("my <b>HTML</b> message")));
     }
 
@@ -330,7 +330,7 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
-            .extracting(Message::getId, Message::getTextBody, Message::getHtmlBody)
+            .extracting(MessageFullView::getId, MessageFullView::getTextBody, MessageFullView::getHtmlBody)
             .containsOnly(Tuple.tuple(message.getMessageId(), Optional.empty(), Optional.of("")));
     }
 
@@ -362,7 +362,7 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
-            .extracting(Message::getId, Message::getTextBody, Message::getHtmlBody)
+            .extracting(MessageFullView::getId, MessageFullView::getTextBody, MessageFullView::getHtmlBody)
             .containsOnly(Tuple.tuple(message.getMessageId(), Optional.of("My plain message"), Optional.of("<a>The </a> <strong>HTML</strong> message")));
     }
 
@@ -462,8 +462,8 @@ public class GetMessagesMethodTest {
 
     @Test
     public void processShouldNotFailOnSingleMessageFailure() throws Exception {
-        MessageFactory messageFactory = mock(MessageFactory.class);
-        testee = new GetMessagesMethod(messageFactory, messageIdManager, new DefaultMetricFactory());
+        MessageViewFactory messageViewFactory = mock(MessageViewFactory.class);
+        testee = new GetMessagesMethod(messageViewFactory, messageIdManager, new DefaultMetricFactory());
         MessageManager inbox = mailboxManager.getMailbox(inboxPath, session);
 
         org.apache.james.mime4j.dom.Message messageContent = org.apache.james.mime4j.dom.Message.Builder.of()
@@ -476,8 +476,8 @@ public class GetMessagesMethodTest {
 
         ComposedMessageId message1 = inbox.appendMessage(AppendCommand.from(messageContent), session);
         ComposedMessageId message2 = inbox.appendMessage(AppendCommand.from(messageContent), session);
-        when(messageFactory.fromMetaDataWithContent(any()))
-            .thenReturn(mock(Message.class))
+        when(messageViewFactory.fromMetaDataWithContent(any()))
+            .thenReturn(mock(MessageFullView.class))
             .thenThrow(new RuntimeException());
 
         GetMessagesRequest request = GetMessagesRequest.builder()
@@ -529,7 +529,7 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
-            .extracting(Message::getKeywords)
+            .extracting(MessageFullView::getKeywords)
             .containsOnlyElementsOf(
                     ImmutableList.of(
                         ImmutableMap.of(
@@ -586,7 +586,7 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
-            .extracting(Message::getKeywords)
+            .extracting(MessageFullView::getKeywords)
             .containsOnlyElementsOf(
                     ImmutableList.of(
                         ImmutableMap.of(
@@ -626,7 +626,7 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
-            .extracting(Message::getKeywords)
+            .extracting(MessageFullView::getKeywords)
             .containsOnlyElementsOf(
                     ImmutableList.of(
                         ImmutableMap.of(
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java
index 0c78db1..ee34861 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/MessageSenderTest.java
@@ -36,9 +36,9 @@ import org.apache.james.core.MaybeSender;
 import org.apache.james.jmap.draft.model.EnvelopeUtils;
 import org.apache.james.jmap.draft.model.Keyword;
 import org.apache.james.jmap.draft.model.Keywords;
-import org.apache.james.jmap.draft.model.Message;
-import org.apache.james.jmap.draft.model.MessageFactory;
+import org.apache.james.jmap.draft.model.MessageFullView;
 import org.apache.james.jmap.draft.model.MessagePreviewGenerator;
+import org.apache.james.jmap.draft.model.MessageViewFactory;
 import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
 import org.apache.james.mailbox.BlobManager;
 import org.apache.james.mailbox.MessageUid;
@@ -59,8 +59,8 @@ import com.google.common.collect.ImmutableSet;
 class MessageSenderTest {
 
     private Envelope envelope;
-    private MessageFactory.MetaDataWithContent message;
-    private Message jmapMessage;
+    private MessageViewFactory.MetaDataWithContent message;
+    private MessageFullView jmapMessage;
 
     @BeforeEach
     void setup() throws MailboxException {
@@ -72,7 +72,7 @@ class MessageSenderTest {
         String content = headers
             + "Hello! How are you?";
 
-        message = MessageFactory.MetaDataWithContent.builder()
+        message = MessageViewFactory.MetaDataWithContent.builder()
             .uid(MessageUid.of(2))
             .keywords(Keywords.strictFactory().from(Keyword.SEEN))
             .size(content.length())
@@ -90,14 +90,14 @@ class MessageSenderTest {
         MessageContentExtractor messageContentExtractor = new MessageContentExtractor();
         BlobManager blobManager = mock(BlobManager.class);
         when(blobManager.toBlobId(any(MessageId.class))).thenReturn(BlobId.fromString("fake"));
-        MessageFactory messageFactory = new MessageFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
-        jmapMessage = messageFactory.fromMetaDataWithContent(message);
+        MessageViewFactory messageViewFactory = new MessageViewFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
+        jmapMessage = messageViewFactory.fromMetaDataWithContent(message);
         envelope = EnvelopeUtils.fromMessage(jmapMessage);
     }
 
     @Test
     void buildMailShouldThrowWhenNullMailboxMessage() throws Exception {
-        MessageFactory.MetaDataWithContent message = null;
+        MessageViewFactory.MetaDataWithContent message = null;
         assertThatThrownBy(() -> MessageSender.buildMail(message, envelope)).isInstanceOf(NullPointerException.class);
     }
 
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
index b13a0da..dc9e738 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/methods/SetMessagesCreationProcessorTest.java
@@ -37,8 +37,8 @@ import org.apache.james.jmap.draft.exceptions.MailboxNotOwnedException;
 import org.apache.james.jmap.draft.model.CreationMessage;
 import org.apache.james.jmap.draft.model.CreationMessage.DraftEmailer;
 import org.apache.james.jmap.draft.model.CreationMessageId;
-import org.apache.james.jmap.draft.model.MessageFactory;
 import org.apache.james.jmap.draft.model.MessagePreviewGenerator;
+import org.apache.james.jmap.draft.model.MessageViewFactory;
 import org.apache.james.jmap.draft.model.SetMessagesRequest;
 import org.apache.james.jmap.draft.model.SetMessagesResponse;
 import org.apache.james.jmap.draft.send.MailMetadata;
@@ -100,7 +100,7 @@ public class SetMessagesCreationProcessorTest {
                         .build())
             .build();
 
-    private MessageFactory messageFactory;
+    private MessageViewFactory messageViewFactory;
     private MailSpool mockedMailSpool;
     private SystemMailboxesProvider fakeSystemMailboxesProvider;
     private MailboxSession session;
@@ -127,7 +127,7 @@ public class SetMessagesCreationProcessorTest {
         when(messagePreview.compute(any())).thenReturn("text preview");
         BlobManager blobManager = mock(BlobManager.class);
         when(blobManager.toBlobId(any(MessageId.class))).thenReturn(org.apache.james.mailbox.model.BlobId.fromString("fake"));
-        messageFactory = new MessageFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
+        messageViewFactory = new MessageViewFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
         mockedMailSpool = mock(MailSpool.class);
         mockedAttachmentManager = mock(AttachmentManager.class);
         mockedMailboxManager = mock(MailboxManager.class);
@@ -140,7 +140,7 @@ public class SetMessagesCreationProcessorTest {
         messageAppender = new MessageAppender(mockedMailboxManager, mockMessageIdManager, mockedAttachmentManager, mimeMessageConverter);
         messageSender = new MessageSender(mockedMailSpool);
         referenceUpdater = new ReferenceUpdater(mockMessageIdManager, mockedMailboxManager);
-        sut = new SetMessagesCreationProcessor(messageFactory,
+        sut = new SetMessagesCreationProcessor(messageViewFactory,
             fakeSystemMailboxesProvider,
             new AttachmentChecker(mockedAttachmentManager),
             new NoopMetricFactory(),
@@ -232,7 +232,7 @@ public class SetMessagesCreationProcessorTest {
     @Test
     public void processShouldReturnNonEmptyCreatedWhenRequestHasNonEmptyCreate() throws MailboxException {
         // Given
-        sut = new SetMessagesCreationProcessor(messageFactory, fakeSystemMailboxesProvider, new AttachmentChecker(mockedAttachmentManager), new NoopMetricFactory(), mockedMailboxManager, mockedMailboxIdFactory, messageAppender, messageSender, referenceUpdater);
+        sut = new SetMessagesCreationProcessor(messageViewFactory, fakeSystemMailboxesProvider, new AttachmentChecker(mockedAttachmentManager), new NoopMetricFactory(), mockedMailboxManager, mockedMailboxIdFactory, messageAppender, messageSender, referenceUpdater);
 
         // When
         SetMessagesResponse result = sut.process(createMessageInOutbox, session);
@@ -247,7 +247,7 @@ public class SetMessagesCreationProcessorTest {
     public void processShouldReturnErrorWhenOutboxNotFound() {
         // Given
         TestSystemMailboxesProvider doNotProvideOutbox = new TestSystemMailboxesProvider(Optional::empty, () -> optionalDrafts);
-        SetMessagesCreationProcessor sut = new SetMessagesCreationProcessor(messageFactory, doNotProvideOutbox,
+        SetMessagesCreationProcessor sut = new SetMessagesCreationProcessor(messageViewFactory, doNotProvideOutbox,
             new AttachmentChecker(mockedAttachmentManager), new NoopMetricFactory(), mockedMailboxManager, mockedMailboxIdFactory,
             messageAppender,
             messageSender,
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageFullViewTest.java
similarity index 86%
rename from server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageTest.java
rename to server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageFullViewTest.java
index 23e2b21..3998824 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageFullViewTest.java
@@ -30,71 +30,71 @@ import org.junit.Test;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
-public class MessageTest {
+public class MessageFullViewTest {
 
     
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenIdIsNull() {
-        Message.builder().build();
+        MessageFullView.builder().build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenBlobIdIsNull() {
-        Message.builder().id(TestMessageId.of(1)).build();
+        MessageFullView.builder().id(TestMessageId.of(1)).build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenThreadIdIsNull() {
-        Message.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).build();
+        MessageFullView.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenThreadIdIsEmpty() {
-        Message.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("").build();
+        MessageFullView.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("").build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenMailboxIdsIsNull() {
-        Message.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").build();
+        MessageFullView.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenHeadersIsNull() {
-        Message.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().build();
+        MessageFullView.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenSubjectIsNull() {
-        Message.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of()).build();
+        MessageFullView.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of()).build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenSubjectIsEmpty() {
-        Message.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of())
+        MessageFullView.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of())
             .subject("").build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenSizeIsNull() {
-        Message.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of())
+        MessageFullView.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of())
             .subject("subject").build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenDateIsNull() {
-        Message.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of())
+        MessageFullView.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of())
             .subject("subject").size(123).build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenPreviewIsNull() {
-        Message.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of())
+        MessageFullView.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of())
             .subject("subject").size(123).date(Instant.now()).build();
     }
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenPreviewIsEmpty() {
-        Message.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of())
+        MessageFullView.builder().id(TestMessageId.of(1)).blobId(BlobId.of("blobId")).threadId("threadId").fluentMailboxIds().headers(ImmutableMap.of())
             .subject("subject").size(123).date(Instant.now()).preview("").build();
     }
 
@@ -102,10 +102,10 @@ public class MessageTest {
     public void buildShouldWorkWhenMandatoryFieldsArePresent() {
         Instant currentDate = Instant.now();
         Number messageSize = Number.fromLong(123);
-        Message expected = new Message(TestMessageId.of(1), BlobId.of("blobId"), "threadId", ImmutableList.of(InMemoryId.of(456)), Optional.empty(), false, ImmutableMap.of("key", "value"), Optional.empty(),
+        MessageFullView expected = new MessageFullView(TestMessageId.of(1), BlobId.of("blobId"), "threadId", ImmutableList.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", Optional.empty(), Optional.empty(),
                 ImmutableList.of(), ImmutableMap.of(), Keywords.DEFAULT_VALUE);
-        Message tested = Message.builder()
+        MessageFullView tested = MessageFullView.builder()
                 .id(TestMessageId.of(1))
                 .blobId(BlobId.of("blobId"))
                 .threadId("threadId")
@@ -129,7 +129,7 @@ public class MessageTest {
                 .date(Instant.now())
                 .build();
         ImmutableMap<BlobId, SubMessage> attachedMessages = ImmutableMap.of(BlobId.of("differentBlobId"), simpleMessage);
-        Message.builder()
+        MessageFullView.builder()
             .id(TestMessageId.of(1))
             .blobId(BlobId.of("blobId"))
             .threadId("threadId")
@@ -165,7 +165,7 @@ public class MessageTest {
             .from(Keyword.DRAFT, Keyword.ANSWERED, Keyword.FLAGGED);
 
         Number messageSize = Number.fromLong(123);
-        Message expected = new Message(
+        MessageFullView expected = new MessageFullView(
             TestMessageId.of(1),
             BlobId.of("blobId"),
             "threadId",
@@ -187,7 +187,7 @@ public class MessageTest {
             attachments,
             attachedMessages,
             keywords);
-        Message tested = Message.builder()
+        MessageFullView tested = MessageFullView.builder()
             .id(TestMessageId.of(1))
             .blobId(BlobId.of("blobId"))
             .threadId("threadId")
@@ -214,7 +214,7 @@ public class MessageTest {
 
     @Test(expected = IllegalStateException.class)
     public void buildShouldThrowWhenOneAttachedMessageIsNotInAttachments() throws Exception {
-        Message.builder()
+        MessageFullView.builder()
             .id(TestMessageId.of(1))
             .blobId(BlobId.of("blobId"))
             .threadId("threadId")
@@ -234,7 +234,7 @@ public class MessageTest {
 
     @Test
     public void buildShouldNotThrowWhenOneAttachedMessageIsInAttachments() throws Exception {
-        Message.builder()
+        MessageFullView.builder()
             .id(TestMessageId.of(1))
             .blobId(BlobId.of("blobId"))
             .threadId("threadId")
@@ -259,7 +259,7 @@ public class MessageTest {
 
     @Test
     public void hasAttachmentShouldReturnFalseWhenNoAttachment() throws Exception {
-        Message message = Message.builder()
+        MessageFullView message = MessageFullView.builder()
             .id(TestMessageId.of(1))
             .blobId(BlobId.of("blobId"))
             .threadId("threadId")
@@ -277,7 +277,7 @@ public class MessageTest {
 
     @Test
     public void hasAttachmentShouldReturnFalseWhenAllAttachmentsAreInline() throws Exception {
-        Message message = Message.builder()
+        MessageFullView message = MessageFullView.builder()
             .id(TestMessageId.of(1))
             .blobId(BlobId.of("blobId"))
             .threadId("threadId")
@@ -309,7 +309,7 @@ public class MessageTest {
 
     @Test
     public void hasAttachmentShouldReturnTrueWhenOneAttachmentIsNotInline() throws Exception {
-        Message message = Message.builder()
+        MessageFullView message = MessageFullView.builder()
             .id(TestMessageId.of(1))
             .blobId(BlobId.of("blobId"))
             .threadId("threadId")
@@ -347,7 +347,7 @@ public class MessageTest {
 
     @Test
     public void hasAttachmentShouldReturnTrueWhenAllAttachmentsAreNotInline() throws Exception {
-        Message message = Message.builder()
+        MessageFullView message = MessageFullView.builder()
             .id(TestMessageId.of(1))
             .blobId(BlobId.of("blobId"))
             .threadId("threadId")
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageFactoryTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageViewFactoryTest.java
similarity index 90%
rename from server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageFactoryTest.java
rename to server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageViewFactoryTest.java
index 2b1a7a1..fb5d09c 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageFactoryTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/MessageViewFactoryTest.java
@@ -29,7 +29,7 @@ import java.time.Instant;
 import java.util.Optional;
 
 import org.apache.commons.lang3.StringUtils;
-import org.apache.james.jmap.draft.model.MessageFactory.MetaDataWithContent;
+import org.apache.james.jmap.draft.model.MessageViewFactory.MetaDataWithContent;
 import org.apache.james.jmap.draft.utils.HtmlTextExtractor;
 import org.apache.james.jmap.draft.utils.JsoupHtmlTextExtractor;
 import org.apache.james.mailbox.BlobManager;
@@ -47,12 +47,12 @@ import org.junit.Test;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 
-public class MessageFactoryTest {
+public class MessageViewFactoryTest {
     private static final String FORWARDED = "forwarded";
     private static final InMemoryId MAILBOX_ID = InMemoryId.of(18L);
     private static final Instant INTERNAL_DATE = Instant.parse("2012-02-03T14:30:42Z");
 
-    private MessageFactory messageFactory;
+    private MessageViewFactory messageViewFactory;
 
     @Before
     public void setUp() {
@@ -63,7 +63,7 @@ public class MessageFactoryTest {
 
         BlobManager blobManager = mock(BlobManager.class);
         when(blobManager.toBlobId(any(MessageId.class))).thenReturn(org.apache.james.mailbox.model.BlobId.fromString("blobId"));
-        messageFactory = new MessageFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
+        messageViewFactory = new MessageViewFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
     }
 
     @Test
@@ -79,9 +79,9 @@ public class MessageFactoryTest {
                 .messageId(TestMessageId.of(2))
                 .build();
 
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
         assertThat(testee)
-            .extracting(Message::getPreview, Message::getSize, Message::getSubject, Message::getHeaders, Message::getDate)
+            .extracting(MessageFullView::getPreview, MessageFullView::getSize, MessageFullView::getSubject, MessageFullView::getHeaders, MessageFullView::getDate)
             .containsExactly("(Empty)", Number.ZERO, "", ImmutableMap.of("MIME-Version", "1.0"), INTERNAL_DATE);
     }
 
@@ -97,9 +97,9 @@ public class MessageFactoryTest {
                 .mailboxId(MAILBOX_ID)
                 .messageId(TestMessageId.of(2))
                 .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
         assertThat(testee)
-            .extracting(Message::isIsUnread, Message::isIsFlagged, Message::isIsAnswered, Message::isIsDraft, Message::isIsForwarded)
+            .extracting(MessageFullView::isIsUnread, MessageFullView::isIsFlagged, MessageFullView::isIsAnswered, MessageFullView::isIsDraft, MessageFullView::isIsForwarded)
             .containsExactly(true, true, true, true, true);
     }
 
@@ -145,8 +145,8 @@ public class MessageFactoryTest {
                 .put("MIME-Version", "1.0")
                 .build();
 
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
-        Message expected = Message.builder()
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
+        MessageFullView expected = MessageFullView.builder()
                 .id(TestMessageId.of(2))
                 .blobId(BlobId.of("blobId"))
                 .threadId("2")
@@ -199,8 +199,8 @@ public class MessageFactoryTest {
             .put("To", "user1 <us...@domain>, user2 <us...@domain>")
             .put("MIME-Version", "1.0")
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
-        Message expected = Message.builder()
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
+        MessageFullView expected = MessageFullView.builder()
             .id(TestMessageId.of(2))
             .blobId(BlobId.of("blobId"))
             .threadId("2")
@@ -249,8 +249,8 @@ public class MessageFactoryTest {
             .put("To", "user1 <us...@domain>")
             .put("MIME-Version", "1.0")
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
-        Message expected = Message.builder()
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
+        MessageFullView expected = MessageFullView.builder()
             .id(TestMessageId.of(2))
             .blobId(BlobId.of("blobId"))
             .threadId("2")
@@ -286,7 +286,7 @@ public class MessageFactoryTest {
                 .mailboxId(MAILBOX_ID)
                 .messageId(TestMessageId.of(2))
                 .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
         assertThat(testee.getTextBody()).hasValue("Mail body");
     }
 
@@ -319,7 +319,7 @@ public class MessageFactoryTest {
             .mailboxId(MAILBOX_ID)
             .messageId(TestMessageId.of(2))
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee.getTextBody())
             .isPresent()
@@ -348,7 +348,7 @@ public class MessageFactoryTest {
                 .mailboxId(MAILBOX_ID)
                 .messageId(TestMessageId.of(2))
                 .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
         assertThat(testee.getPreview()).isEqualTo(expectedPreview);
     }
     
@@ -364,7 +364,7 @@ public class MessageFactoryTest {
                 .mailboxId(MAILBOX_ID)
                 .messageId(TestMessageId.of(2))
                 .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
         assertThat(testee.getAttachments()).isEmpty();
     }
     
@@ -399,7 +399,7 @@ public class MessageFactoryTest {
                 .messageId(TestMessageId.of(2))
                 .build();
 
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee.getAttachments()).hasSize(1);
         assertThat(testee.getAttachments().get(0)).isEqualToComparingFieldByField(expectedAttachment);
@@ -423,7 +423,7 @@ public class MessageFactoryTest {
             .messageId(new TestMessageId.Factory().generate())
             .build();
 
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         Emailer user = Emailer.builder().name("user").email("userdomain").allowInvalid().build();
         Emailer user1 = Emailer.builder().name("user1").email("user1domain").allowInvalid().build();
@@ -452,7 +452,7 @@ public class MessageFactoryTest {
             .messageId(new TestMessageId.Factory().generate())
             .build();
 
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee.getFrom()).isEmpty();
     }
@@ -477,7 +477,7 @@ public class MessageFactoryTest {
             .messageId(new TestMessageId.Factory().generate())
             .build();
 
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee.getDate())
             .isEqualTo(Instant.parse("2017-05-17T11:18:52.000Z"));
@@ -503,7 +503,7 @@ public class MessageFactoryTest {
             .messageId(new TestMessageId.Factory().generate())
             .build();
 
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee.getDate())
             .isEqualTo(Instant.parse("2017-05-17T11:18:52.000Z"));
@@ -528,7 +528,7 @@ public class MessageFactoryTest {
             .messageId(new TestMessageId.Factory().generate())
             .build();
 
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee.getDate()).isEqualTo(INTERNAL_DATE);
     }
@@ -546,9 +546,9 @@ public class MessageFactoryTest {
                 .messageId(TestMessageId.of(2))
                 .build();
 
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
         assertThat(testee)
-            .extracting(Message::getPreview, Message::getSize, Message::getSubject, Message::getHeaders, Message::getDate)
+            .extracting(MessageFullView::getPreview, MessageFullView::getSize, MessageFullView::getSubject, MessageFullView::getHeaders, MessageFullView::getDate)
             .containsExactly("(Empty)", Number.fromLong(1010L), "", ImmutableMap.of("MIME-Version", "1.0"), INTERNAL_DATE);
     }
 
@@ -568,7 +568,7 @@ public class MessageFactoryTest {
             .mailboxId(MAILBOX_ID)
             .messageId(TestMessageId.of(2))
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee.getPreview()).isEqualTo("my HTML message");
         assertThat(testee.getTextBody()).hasValue("my HTML message");
@@ -589,7 +589,7 @@ public class MessageFactoryTest {
             .mailboxId(MAILBOX_ID)
             .messageId(TestMessageId.of(2))
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee.getPreview()).isEqualTo(MessagePreviewGenerator.NO_BODY);
         assertThat(testee.getHtmlBody()).contains("");
@@ -621,7 +621,7 @@ public class MessageFactoryTest {
             .mailboxId(MAILBOX_ID)
             .messageId(TestMessageId.of(2))
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee.getPreview()).isEqualTo(expected);
     }
@@ -643,7 +643,7 @@ public class MessageFactoryTest {
             .mailboxId(MAILBOX_ID)
             .messageId(TestMessageId.of(2))
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee.getPreview()).isEqualTo("My plain text");
     }
@@ -662,10 +662,10 @@ public class MessageFactoryTest {
             .mailboxId(MAILBOX_ID)
             .messageId(TestMessageId.of(2))
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee)
-            .extracting(Message::getPreview, Message::getHtmlBody, Message::getTextBody)
+            .extracting(MessageFullView::getPreview, MessageFullView::getHtmlBody, MessageFullView::getTextBody)
             .containsExactly(MessagePreviewGenerator.NO_BODY, Optional.empty(), Optional.of(""));
     }
 
@@ -686,10 +686,10 @@ public class MessageFactoryTest {
             .mailboxId(MAILBOX_ID)
             .messageId(TestMessageId.of(2))
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee)
-            .extracting(Message::getPreview, Message::getHtmlBody, Message::getTextBody)
+            .extracting(MessageFullView::getPreview, MessageFullView::getHtmlBody, MessageFullView::getTextBody)
             .containsExactly(MessagePreviewGenerator.NO_BODY, Optional.of("<html><body></body></html>"), Optional.empty());
     }
 
@@ -722,10 +722,10 @@ public class MessageFactoryTest {
             .mailboxId(MAILBOX_ID)
             .messageId(TestMessageId.of(2))
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
 
         assertThat(testee)
-            .extracting(Message::getPreview, Message::getHtmlBody, Message::getTextBody)
+            .extracting(MessageFullView::getPreview, MessageFullView::getHtmlBody, MessageFullView::getTextBody)
             .containsExactly("My plain message", Optional.of("<html></html>"), Optional.of("My plain message"));
     }
 
@@ -743,7 +743,7 @@ public class MessageFactoryTest {
             .mailboxId(MAILBOX_ID)
             .messageId(TestMessageId.of(2))
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
         assertThat(testee.getKeywords()).containsAllEntriesOf(keywords.asMap());
     }
 
@@ -761,7 +761,7 @@ public class MessageFactoryTest {
             .mailboxId(MAILBOX_ID)
             .messageId(TestMessageId.of(2))
             .build();
-        Message testee = messageFactory.fromMetaDataWithContent(testMail);
+        MessageFullView testee = messageViewFactory.fromMetaDataWithContent(testMail);
         assertThat(testee.getKeywords()).containsAllEntriesOf(keywords.asMap());
     }
 }
diff --git a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/SetMessagesResponseTest.java b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/SetMessagesResponseTest.java
index 4835ddd..aabc4ac 100644
--- a/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/SetMessagesResponseTest.java
+++ b/server/protocols/jmap-draft/src/test/java/org/apache/james/jmap/draft/model/SetMessagesResponseTest.java
@@ -56,8 +56,8 @@ public class SetMessagesResponseTest {
     @Test
     public void builderShouldWork() {
         Instant currentDate = Instant.now();
-        ImmutableMap<CreationMessageId, Message> created = ImmutableMap.of(CreationMessageId.of("user|created|1"),
-            Message.builder()
+        ImmutableMap<CreationMessageId, MessageFullView> created = ImmutableMap.of(CreationMessageId.of("user|created|1"),
+            MessageFullView.builder()
                 .id(TestMessageId.of(1))
                 .blobId(BlobId.of("blobId"))
                 .threadId("threadId")
@@ -110,8 +110,8 @@ public class SetMessagesResponseTest {
         assertThat(emptyBuilder.build()).isEqualToComparingFieldByField(testee);
     }
 
-    private ImmutableMap<CreationMessageId, Message> buildMessage(CreationMessageId creationMessageId, MessageId messageId) {
-        return ImmutableMap.of(creationMessageId, Message.builder()
+    private ImmutableMap<CreationMessageId, MessageFullView> buildMessage(CreationMessageId creationMessageId, MessageId messageId) {
+        return ImmutableMap.of(creationMessageId, MessageFullView.builder()
                 .id(messageId)
                 .blobId(BlobId.of("blobId"))
                 .threadId("threadId")


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org