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 3246bb44993b61a4bc05b5b5a1b7b5faff83b3d4
Author: Tran Tien Duc <[email protected]>
AuthorDate: Thu Nov 21 09:30:36 2019 +0700

    JAMES-2987 MessageView interface
---
 .../jmap/draft/model/GetMessagesResponse.java      | 16 ++++++-------
 .../draft/model/message/view/MessageFullView.java  |  2 +-
 .../jmap/draft/model/message/view/MessageView.java | 26 ++++++++++++++++++++++
 .../jmap/draft/methods/GetMessagesMethodTest.java  | 23 +++++++++++++++++--
 4 files changed, 56 insertions(+), 11 deletions(-)

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 8300582..14b813f 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
@@ -23,7 +23,7 @@ import java.util.Set;
 import java.util.stream.Collectors;
 
 import org.apache.james.jmap.draft.methods.Method;
-import org.apache.james.jmap.draft.model.message.view.MessageFullView;
+import org.apache.james.jmap.draft.model.message.view.MessageView;
 import org.apache.james.mailbox.model.MessageId;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
@@ -42,7 +42,7 @@ public class GetMessagesResponse implements Method.Response {
     
     @JsonPOJOBuilder(withPrefix = "")
     public static class Builder {
-        private ImmutableList<MessageFullView> messages;
+        private ImmutableList<MessageView> messages;
         private List<MessageId> expectedMessageIds;
 
         private Builder() {
@@ -50,12 +50,12 @@ public class GetMessagesResponse implements Method.Response 
{
         }
 
         @JsonIgnore
-        public Builder message(MessageFullView message) {
+        public Builder message(MessageView message) {
             this.messages = ImmutableList.of(message);
             return this;
         }
 
-        public Builder messages(List<MessageFullView> messages) {
+        public Builder messages(List<MessageView> messages) {
             this.messages = ImmutableList.copyOf(messages);
             return this;
         }
@@ -72,7 +72,7 @@ public class GetMessagesResponse implements Method.Response {
         
 
         private List<MessageId> messagesNotFound() {
-            Set<MessageId> foundMessageIds = 
messages.stream().map(MessageFullView::getId).collect(Collectors.toSet());
+            Set<MessageId> foundMessageIds = 
messages.stream().map(MessageView::getId).collect(Collectors.toSet());
             return ImmutableList.copyOf(expectedMessageIds.stream()
                 .filter(id -> !foundMessageIds.contains(id))
                 .collect(Collectors.toList()));
@@ -81,16 +81,16 @@ public class GetMessagesResponse implements Method.Response 
{
     
     
     
-    private final List<MessageFullView> messages;
+    private final List<MessageView> messages;
     private final List<MessageId> messagesNotFound;
 
-    private GetMessagesResponse(List<MessageFullView> messages, 
List<MessageId> messagesNotFound) {
+    private GetMessagesResponse(List<MessageView> messages, List<MessageId> 
messagesNotFound) {
         this.messages = messages;
         this.messagesNotFound = messagesNotFound;
     }
 
     @JsonSerialize
-    public List<MessageFullView> list() {
+    public List<MessageView> list() {
         return messages;
     }
     
diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullView.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullView.java
index 4ba4386..a84a271 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullView.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageFullView.java
@@ -50,7 +50,7 @@ import com.google.common.collect.ImmutableMap;
 
 @JsonDeserialize(builder = MessageFullView.Builder.class)
 @JsonFilter(JmapResponseWriterImpl.PROPERTIES_FILTER)
-public class MessageFullView {
+public class MessageFullView implements MessageView {
 
     public static Builder builder() {
         return new Builder();
diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageView.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageView.java
new file mode 100644
index 0000000..53670e4
--- /dev/null
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/model/message/view/MessageView.java
@@ -0,0 +1,26 @@
+/****************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one   *
+ * or more contributor license agreements.  See the NOTICE file *
+ * distributed with this work for additional information        *
+ * regarding copyright ownership.  The ASF licenses this file   *
+ * to you under the Apache License, Version 2.0 (the            *
+ * "License"); you may not use this file except in compliance   *
+ * with the License.  You may obtain a copy of the License at   *
+ *                                                              *
+ *   http://www.apache.org/licenses/LICENSE-2.0                 *
+ *                                                              *
+ * Unless required by applicable law or agreed to in writing,   *
+ * software distributed under the License is distributed on an  *
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY       *
+ * KIND, either express or implied.  See the License for the    *
+ * specific language governing permissions and limitations      *
+ * under the License.                                           *
+ ****************************************************************/
+
+package org.apache.james.jmap.draft.model.message.view;
+
+import org.apache.james.mailbox.model.MessageId;
+
+public interface MessageView {
+    MessageId getId();
+}
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 90316f9..1f9f8db 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
@@ -176,6 +176,8 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
+            .hasOnlyElementsOfType(MessageFullView.class)
+            .extracting(MessageFullView.class::cast)
             .extracting(MessageFullView::getId, MessageFullView::getSubject, 
MessageFullView::getTextBody)
             .containsOnly(
                 Tuple.tuple(message1.getMessageId(), "message 1 subject", 
Optional.of("my message")),
@@ -205,6 +207,8 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
+            .hasOnlyElementsOfType(MessageFullView.class)
+            .extracting(MessageFullView.class::cast)
             .extracting(MessageFullView::getId, MessageFullView::getHtmlBody)
             .containsOnly(Tuple.tuple(message.getMessageId(), Optional.of("my 
<b>HTML</b> message")));
     }
@@ -304,6 +308,8 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
+            .hasOnlyElementsOfType(MessageFullView.class)
+            .extracting(MessageFullView.class::cast)
             .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,6 +336,8 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
+            .hasOnlyElementsOfType(MessageFullView.class)
+            .extracting(MessageFullView.class::cast)
             .extracting(MessageFullView::getId, MessageFullView::getTextBody, 
MessageFullView::getHtmlBody)
             .containsOnly(Tuple.tuple(message.getMessageId(), 
Optional.empty(), Optional.of("")));
     }
@@ -362,6 +370,8 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
+            .hasOnlyElementsOfType(MessageFullView.class)
+            .extracting(MessageFullView.class::cast)
             .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")));
     }
@@ -456,8 +466,11 @@ public class GetMessagesMethodTest {
         Method.Response response = result.get(0).getResponse();
         assertThat(response).isInstanceOf(GetMessagesResponse.class);
         GetMessagesResponse getMessagesResponse = (GetMessagesResponse) 
response;
-        assertThat(getMessagesResponse.list()).hasSize(1);
-        
assertThat(getMessagesResponse.list().get(0).getMailboxIds()).containsOnly(customMailboxId,
 message1.getMailboxId());
+        assertThat(getMessagesResponse.list()).hasSize(1)
+            .hasOnlyElementsOfType(MessageFullView.class)
+            .extracting(MessageFullView.class::cast)
+            .flatExtracting(MessageFullView::getMailboxIds)
+            .containsOnly(customMailboxId, message1.getMailboxId());
     }
 
     @Test
@@ -529,6 +542,8 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
+            .hasOnlyElementsOfType(MessageFullView.class)
+            .extracting(MessageFullView.class::cast)
             .extracting(MessageFullView::getKeywords)
             .containsOnlyElementsOf(
                     ImmutableList.of(
@@ -586,6 +601,8 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
+            .hasOnlyElementsOfType(MessageFullView.class)
+            .extracting(MessageFullView.class::cast)
             .extracting(MessageFullView::getKeywords)
             .containsOnlyElementsOf(
                     ImmutableList.of(
@@ -626,6 +643,8 @@ public class GetMessagesMethodTest {
             .hasOnlyElementsOfType(GetMessagesResponse.class)
             .extracting(GetMessagesResponse.class::cast)
             .flatExtracting(GetMessagesResponse::list)
+            .hasOnlyElementsOfType(MessageFullView.class)
+            .extracting(MessageFullView.class::cast)
             .extracting(MessageFullView::getKeywords)
             .containsOnlyElementsOf(
                     ImmutableList.of(


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to