MAILBOX-357 Group messages by ranges when retrieving them in MailboxListener
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/8051692f Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/8051692f Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/8051692f Branch: refs/heads/master Commit: 8051692fecc111962e4e733b5cad87f6125fffe6 Parents: 2dab033 Author: Benoit Tellier <[email protected]> Authored: Wed Dec 12 09:12:03 2018 +0700 Committer: Benoit Tellier <[email protected]> Committed: Wed Dec 12 17:50:58 2018 +0700 ---------------------------------------------------------------------- .../james/mailbox/spamassassin/SpamAssassinListener.java | 11 +++++------ .../store/search/ListeningMessageSearchIndex.java | 10 +++++----- 2 files changed, 10 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/8051692f/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java ---------------------------------------------------------------------- diff --git a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java index 0c2ea77..3c5e937 100644 --- a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java +++ b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java @@ -27,7 +27,6 @@ import javax.inject.Inject; import org.apache.james.mailbox.Event; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; -import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.Role; import org.apache.james.mailbox.SystemMailboxesProvider; import org.apache.james.mailbox.exception.MailboxException; @@ -99,9 +98,9 @@ public class SpamAssassinListener implements SpamEventListener { Mailbox mailbox = mapperFactory.getMailboxMapper(session).findMailboxById(addedEvent.getMailboxId()); MessageMapper messageMapper = mapperFactory.getMessageMapper(session); - List<InputStream> contents = addedEvent.getUids() + List<InputStream> contents = MessageRange.toRanges(addedEvent.getUids()) .stream() - .flatMap(uid -> retrieveMessage(messageMapper, mailbox, uid)) + .flatMap(range -> retrieveMessages(messageMapper, mailbox, range)) .map(Throwing.function(MailboxMessage::getFullContent)) .collect(Guavate.toImmutableList()); spamAssassin.learnHam(contents, event.getUser()); @@ -120,11 +119,11 @@ public class SpamAssassinListener implements SpamEventListener { } } - private Stream<MailboxMessage> retrieveMessage(MessageMapper messageMapper, Mailbox mailbox, MessageUid uid) { + private Stream<MailboxMessage> retrieveMessages(MessageMapper messageMapper, Mailbox mailbox, MessageRange range) { try { - return Iterators.toStream(messageMapper.findInMailbox(mailbox, MessageRange.one(uid), MessageMapper.FetchType.Full, LIMIT)); + return Iterators.toStream(messageMapper.findInMailbox(mailbox, range, MessageMapper.FetchType.Full, LIMIT)); } catch (MailboxException e) { - LOGGER.warn("Can not retrieve message {} {}", mailbox.getMailboxId(), uid.asLong(), e); + LOGGER.warn("Can not retrieve message {} {}", mailbox.getMailboxId(), range.toString(), e); return Stream.empty(); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/8051692f/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java index 7de8fcc..3adaf38 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java @@ -102,19 +102,19 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex, } private void handleAdded(MailboxSession session, Mailbox mailbox, Added added) { - added.getUids() + MessageRange.toRanges(added.getUids()) .stream() - .flatMap(uid -> retrieveMailboxMessage(session, mailbox, uid)) + .flatMap(range -> retrieveMailboxMessages(session, mailbox, range)) .forEach(mailboxMessage -> addMessage(session, mailbox, mailboxMessage)); } - private Stream<MailboxMessage> retrieveMailboxMessage(MailboxSession session, Mailbox mailbox, MessageUid uid) { + private Stream<MailboxMessage> retrieveMailboxMessages(MailboxSession session, Mailbox mailbox, MessageRange range) { try { return Stream.of(factory.getMessageMapper(session) - .findInMailbox(mailbox, MessageRange.one(uid), FetchType.Full, UNLIMITED) + .findInMailbox(mailbox, range, FetchType.Full, UNLIMITED) .next()); } catch (Exception e) { - LOGGER.error("Could not retrieve message {} in mailbox {}", uid.asLong(), mailbox.getMailboxId().serialize(), e); + LOGGER.error("Could not retrieve message {} in mailbox {}", range.toString(), mailbox.getMailboxId().serialize(), e); return Stream.empty(); } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
