MAILBOX-357 Improve SpamAssassinListener with method extraction
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f1cf2452 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f1cf2452 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f1cf2452 Branch: refs/heads/master Commit: f1cf245245b7c190ddd3743cef0b65c36a2f47b2 Parents: 0e01d39 Author: Benoit Tellier <[email protected]> Authored: Tue Dec 11 10:14:05 2018 +0700 Committer: Benoit Tellier <[email protected]> Committed: Wed Dec 12 17:50:58 2018 +0700 ---------------------------------------------------------------------- .../spamassassin/SpamAssassinListener.java | 50 +++++++++++--------- 1 file changed, 28 insertions(+), 22 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/f1cf2452/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 8ac45e1..0c2ea77 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 @@ -84,36 +84,42 @@ public class SpamAssassinListener implements SpamEventListener { try { MailboxSession session = mailboxManager.createSystemSession(getClass().getCanonicalName()); if (event instanceof MessageMoveEvent) { - MessageMoveEvent messageMoveEvent = (MessageMoveEvent) event; - if (isMessageMovedToSpamMailbox(messageMoveEvent)) { - LOGGER.debug("Spam event detected"); - ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent); - spamAssassin.learnSpam(messages, event.getUser()); - } - if (isMessageMovedOutOfSpamMailbox(messageMoveEvent)) { - ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent); - spamAssassin.learnHam(messages, event.getUser()); - } + handleMessageMove(event, (MessageMoveEvent) event); } if (event instanceof Added) { - Added addedEvent = (Added) event; - if (isAppendedToInbox(addedEvent)) { - Mailbox mailbox = mapperFactory.getMailboxMapper(session).findMailboxById(addedEvent.getMailboxId()); - MessageMapper messageMapper = mapperFactory.getMessageMapper(session); - - List<InputStream> contents = addedEvent.getUids() - .stream() - .flatMap(uid -> retrieveMessage(messageMapper, mailbox, uid)) - .map(Throwing.function(MailboxMessage::getFullContent)) - .collect(Guavate.toImmutableList()); - spamAssassin.learnHam(contents, event.getUser()); - } + handleAdded(event, session, (Added) event); } } catch (MailboxException e) { LOGGER.warn("Error while processing SPAM listener", e); } } + private void handleAdded(Event event, MailboxSession session, Added addedEvent) throws MailboxException { + if (isAppendedToInbox(addedEvent)) { + Mailbox mailbox = mapperFactory.getMailboxMapper(session).findMailboxById(addedEvent.getMailboxId()); + MessageMapper messageMapper = mapperFactory.getMessageMapper(session); + + List<InputStream> contents = addedEvent.getUids() + .stream() + .flatMap(uid -> retrieveMessage(messageMapper, mailbox, uid)) + .map(Throwing.function(MailboxMessage::getFullContent)) + .collect(Guavate.toImmutableList()); + spamAssassin.learnHam(contents, event.getUser()); + } + } + + private void handleMessageMove(Event event, MessageMoveEvent messageMoveEvent) { + if (isMessageMovedToSpamMailbox(messageMoveEvent)) { + LOGGER.debug("Spam event detected"); + ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent); + spamAssassin.learnSpam(messages, event.getUser()); + } + if (isMessageMovedOutOfSpamMailbox(messageMoveEvent)) { + ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent); + spamAssassin.learnHam(messages, event.getUser()); + } + } + private Stream<MailboxMessage> retrieveMessage(MessageMapper messageMapper, Mailbox mailbox, MessageUid uid) { try { return Iterators.toStream(messageMapper.findInMailbox(mailbox, MessageRange.one(uid), MessageMapper.FetchType.Full, LIMIT)); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
