Author: aduprat Date: Wed Jan 13 10:12:28 2016 New Revision: 1724389 URL: http://svn.apache.org/viewvc?rev=1724389&view=rev Log: JAMES-1648 Handle id case. Contributed by Ouazana <raphael.ouaz...@linagora.com>
Modified: james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java Modified: james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java?rev=1724389&r1=1724388&r2=1724389&view=diff ============================================================================== --- james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java (original) +++ james/project/trunk/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java Wed Jan 13 10:12:28 2016 @@ -21,6 +21,7 @@ package org.apache.james.jmap.methods; import java.util.Iterator; import java.util.List; +import java.util.Set; import java.util.function.Function; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -34,6 +35,7 @@ import org.apache.james.jmap.model.GetMe import org.apache.james.jmap.model.GetMessagesResponse; import org.apache.james.jmap.model.Message; import org.apache.james.jmap.model.MessageId; +import org.apache.james.jmap.model.MessageProperty; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageRange; @@ -48,6 +50,8 @@ import org.javatuples.Pair; import com.github.fge.lambdas.Throwing; import com.google.common.annotations.VisibleForTesting; import com.google.common.base.Preconditions; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; public class GetMessagesMethod<Id extends MailboxId> implements Method { @@ -84,10 +88,22 @@ public class GetMessagesMethod<Id extend return Stream.of(JmapResponse.builder().clientId(clientId) .response(getMessagesResponse(mailboxSession, getMessagesRequest)) .responseName(RESPONSE_NAME) - .properties(getMessagesRequest.getProperties()) + .properties(getMessagesRequest.getProperties().map(this::handleSpecificProperties)) .build()); } + private Set<MessageProperty> handleSpecificProperties(Set<MessageProperty> input) { + return ensureContainsId(input); + } + + private Set<MessageProperty> ensureContainsId(Set<MessageProperty> input) { + if (!input.contains(MessageProperty.id)) { + return Sets.union(input, ImmutableSet.of(MessageProperty.id)) + .immutableCopy(); + } + return input; + } + private GetMessagesResponse getMessagesResponse(MailboxSession mailboxSession, GetMessagesRequest getMessagesRequest) { getMessagesRequest.getAccountId().ifPresent(GetMessagesMethod::notImplemented); Modified: james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java URL: http://svn.apache.org/viewvc/james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java?rev=1724389&r1=1724388&r2=1724389&view=diff ============================================================================== --- james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java (original) +++ james/project/trunk/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java Wed Jan 13 10:12:28 2016 @@ -26,6 +26,7 @@ import java.io.ByteArrayInputStream; import java.util.Date; import java.util.List; import java.util.Locale; +import java.util.Optional; import java.util.stream.Collectors; import org.apache.commons.lang.NotImplementedException; @@ -185,13 +186,10 @@ public class GetMessagesMethodTest { List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList()); assertThat(result).hasSize(1) - .extracting(JmapResponse::getResponse) - .hasOnlyElementsOfType(GetMessagesResponse.class) - .extracting(GetMessagesResponse.class::cast) - .flatExtracting(GetMessagesResponse::list) - .extracting(message -> message.getId().getUid(), Message::getSubject) - .containsOnly( - Tuple.tuple(message1Uid, "message 1 subject")); + .extracting(JmapResponse::getProperties) + .flatExtracting(Optional::get) + .asList() + .containsOnly(MessageProperty.id); } @Test @@ -210,37 +208,9 @@ public class GetMessagesMethodTest { List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList()); assertThat(result).hasSize(1) - .extracting(JmapResponse::getResponse) - .hasOnlyElementsOfType(GetMessagesResponse.class) - .extracting(GetMessagesResponse.class::cast) - .flatExtracting(GetMessagesResponse::list) - .extracting(message -> message.getId().getUid(), Message::getSubject) - .containsOnly( - Tuple.tuple(message1Uid, "message 1 subject")); + .extracting(JmapResponse::getProperties) + .flatExtracting(Optional::get) + .asList() + .containsOnly(MessageProperty.id, MessageProperty.subject); } - - @Test - public void processShouldReturnAllFieldsWhenUndefinedPropertyList() throws MailboxException { - MessageManager inbox = mailboxManager.getMailbox(inboxPath, session); - Date now = new Date(); - ByteArrayInputStream message1Content = new ByteArrayInputStream("Subject: message 1 subject\r\n\r\nmy message".getBytes(Charsets.UTF_8)); - long message1Uid = inbox.appendMessage(message1Content, now, session, false, null); - - GetMessagesRequest request = GetMessagesRequest.builder() - .ids(new MessageId(ROBERT, inboxPath, message1Uid)) - .build(); - - GetMessagesMethod<InMemoryId> testee = new GetMessagesMethod<>(mailboxSessionMapperFactory, mailboxSessionMapperFactory); - List<JmapResponse> result = testee.process(request, clientId, session).collect(Collectors.toList()); - - assertThat(result).hasSize(1) - .extracting(JmapResponse::getResponse) - .hasOnlyElementsOfType(GetMessagesResponse.class) - .extracting(GetMessagesResponse.class::cast) - .flatExtracting(GetMessagesResponse::list) - .extracting(message -> message.getId().getUid(), Message::getSubject) - .containsOnly( - Tuple.tuple(message1Uid, "message 1 subject")); - } - } --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org