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