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]
