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

Reply via email to