JAMES-2183 GetMessages should combine keywords
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/c93ffe68 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/c93ffe68 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/c93ffe68 Branch: refs/heads/master Commit: c93ffe68bf4b3dcdd07a5125cb04f9a0b4aa2c56 Parents: ce13804 Author: quynhn <qngu...@linagora.com> Authored: Fri Oct 13 10:41:48 2017 +0700 Committer: benwa <btell...@linagora.com> Committed: Wed Oct 18 09:00:56 2017 +0700 ---------------------------------------------------------------------- .../org/apache/james/jmap/methods/GetMessagesMethod.java | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/c93ffe68/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java index 47a501a..f0313ed 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/GetMessagesMethod.java @@ -38,11 +38,13 @@ import org.apache.james.jmap.model.MessageFactory; import org.apache.james.jmap.model.MessageFactory.MetaDataWithContent; import org.apache.james.jmap.model.MessageProperties; import org.apache.james.jmap.model.MessageProperties.HeaderProperty; +import org.apache.james.jmap.utils.KeywordsCombiner; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageIdManager; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.FetchGroupImpl; import org.apache.james.mailbox.model.MailboxId; +import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.MessageResult; import org.apache.james.metrics.api.MetricFactory; import org.apache.james.util.MDCBuilder; @@ -63,6 +65,7 @@ public class GetMessagesMethod implements Method { private static final Logger LOGGER = LoggerFactory.getLogger(GetMessagesMethod.class); private static final Method.Request.Name METHOD_NAME = Method.Request.name("getMessages"); private static final Method.Response.Name RESPONSE_NAME = Method.Response.name("messages"); + private static final KeywordsCombiner ACCUMULATOR = new KeywordsCombiner(); private final MessageFactory messageFactory; private final MessageIdManager messageIdManager; private final MetricFactory metricFactory; @@ -167,11 +170,16 @@ public class GetMessagesMethod implements Method { .distinct() .collect(Guavate.toImmutableList()); try { + Keywords keywords = messageResults.stream() + .map(MessageMetaData::getFlags) + .map(keywordsFactory::fromFlags) + .reduce(ACCUMULATOR) + .get(); return Stream.of( MetaDataWithContent.builderFromMessageResult(firstMessageResult) .messageId(firstMessageResult.getMessageId()) .mailboxIds(mailboxIds) - .keywords(keywordsFactory.fromFlags(firstMessageResult.getFlags())) + .keywords(keywords) .build()); } catch (Exception e) { LOGGER.error("Can not convert MessageResults to MetaData with content for messageId " + firstMessageResult.getMessageId() + " in " + mailboxIds, e); --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org