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 <[email protected]>
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: [email protected]
For additional commands, e-mail: [email protected]