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]

Reply via email to