Author: aduprat
Date: Wed Jan 13 10:12:34 2016
New Revision: 1724390

URL: http://svn.apache.org/viewvc?rev=1724390&view=rev
Log:
JAMES-1648 Handle body property - ignore html case for now. 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=1724390&r1=1724389&r2=1724390&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:34 2016
@@ -19,6 +19,7 @@
 
 package org.apache.james.jmap.methods;
 
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
 import java.util.Set;
@@ -50,7 +51,6 @@ 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 {
@@ -93,15 +93,24 @@ public class GetMessagesMethod<Id extend
     }
 
     private Set<MessageProperty> handleSpecificProperties(Set<MessageProperty> 
input) {
-        return ensureContainsId(input);
+        Set<MessageProperty> toAdd = new HashSet<MessageProperty>();
+        Set<MessageProperty> toRemove = new HashSet<MessageProperty>();
+        ensureContainsId(input, toAdd);
+        handleBody(input, toAdd, toRemove);
+        return Sets.union(Sets.difference(input, toRemove), 
toAdd).immutableCopy();
     }
-    
-    private Set<MessageProperty> ensureContainsId(Set<MessageProperty> input) {
+        
+    private void ensureContainsId(Set<MessageProperty> input, 
Set<MessageProperty> toAdd) {
         if (!input.contains(MessageProperty.id)) {
-            return Sets.union(input, ImmutableSet.of(MessageProperty.id))
-                    .immutableCopy();
+            toAdd.add(MessageProperty.id);
+        }
+    }
+    
+    private void handleBody(Set<MessageProperty> input, Set<MessageProperty> 
toAdd, Set<MessageProperty> toRemove) {
+        if (input.contains(MessageProperty.body)) {
+            toAdd.add(MessageProperty.textBody);
+            toRemove.add(MessageProperty.body);
         }
-        return input;
     }
 
     private GetMessagesResponse getMessagesResponse(MailboxSession 
mailboxSession, GetMessagesRequest getMessagesRequest) {

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=1724390&r1=1724389&r2=1724390&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:34 2016
@@ -213,4 +213,26 @@ public class GetMessagesMethodTest {
             .asList()
             .containsOnly(MessageProperty.id, MessageProperty.subject);
     }
+    
+    @Test
+    public void 
processShouldReturnTextBodyWhenBodyInPropertyListAndEmptyHtmlBody() 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))
+                .properties(MessageProperty.body)
+                .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::getProperties)
+            .flatExtracting(Optional::get)
+            .asList()
+            .containsOnly(MessageProperty.id, MessageProperty.textBody);
+    }
 }



---------------------------------------------------------------------
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