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