MAILBOX-357 Use method extraction to make ListeningMessageSearchIndex more readable
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/0e01d39c Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/0e01d39c Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/0e01d39c Branch: refs/heads/master Commit: 0e01d39cbd476bdf8c1b82c4cd5ba11cd974f1b7 Parents: 205f817 Author: Benoit Tellier <[email protected]> Authored: Tue Dec 11 10:09:05 2018 +0700 Committer: Benoit Tellier <[email protected]> Committed: Wed Dec 12 17:50:58 2018 +0700 ---------------------------------------------------------------------- .../search/ListeningMessageSearchIndex.java | 69 ++++++++++++-------- 1 file changed, 40 insertions(+), 29 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/0e01d39c/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 e11dc86..7de8fcc 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 @@ -61,42 +61,53 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex, @Override public void event(Event event) { try { - MailboxSession session = mailboxManager.createSystemSession(event.getUser().asString()); if (event instanceof MailboxEvent) { - MailboxEvent mailboxEvent = (MailboxEvent) event; - Mailbox mailbox = factory.getMailboxMapper(session).findMailboxById(mailboxEvent.getMailboxId()); - - if (event instanceof Added) { - Added added = (Added) event; - - added.getUids() - .stream() - .flatMap(uid -> retrieveMailboxMessage(session, mailbox, uid)) - .forEach(mailboxMessage -> addMessage(session, mailbox, mailboxMessage)); - } else if (event instanceof Expunged) { - Expunged expunged = (Expunged) event; - try { - delete(session, mailbox, expunged.getUids()); - } catch (MailboxException e) { - LOGGER.error("Unable to deleted messages {} from index for mailbox {}", expunged.getUids(), mailbox, e); - } - } else if (event instanceof FlagsUpdated) { - FlagsUpdated flagsUpdated = (FlagsUpdated) event; - - try { - update(session, mailbox, flagsUpdated.getUpdatedFlags()); - } catch (MailboxException e) { - LOGGER.error("Unable to update flags in index for mailbox {}", mailbox, e); - } - } else if (event instanceof MailboxDeletion) { - deleteAll(session, mailbox); - } + handleMailboxEvent(event, + mailboxManager.createSystemSession(event.getUser().asString()), + (MailboxEvent) event); } } catch (MailboxException e) { LOGGER.error("Unable to update index", e); } } + private void handleMailboxEvent(Event event, MailboxSession session, MailboxEvent mailboxEvent) throws MailboxException { + Mailbox mailbox = factory.getMailboxMapper(session).findMailboxById(mailboxEvent.getMailboxId()); + + if (event instanceof Added) { + handleAdded(session, mailbox, (Added) event); + } else if (event instanceof Expunged) { + handleExpunged(session, mailbox, (Expunged) event); + } else if (event instanceof FlagsUpdated) { + handleFlagsUpdated(session, mailbox, (FlagsUpdated) event); + } else if (event instanceof MailboxDeletion) { + deleteAll(session, mailbox); + } + } + + private void handleFlagsUpdated(MailboxSession session, Mailbox mailbox, FlagsUpdated flagsUpdated) { + try { + update(session, mailbox, flagsUpdated.getUpdatedFlags()); + } catch (MailboxException e) { + LOGGER.error("Unable to update flags in index for mailbox {}", mailbox, e); + } + } + + private void handleExpunged(MailboxSession session, Mailbox mailbox, Expunged expunged) { + try { + delete(session, mailbox, expunged.getUids()); + } catch (MailboxException e) { + LOGGER.error("Unable to deleted messages {} from index for mailbox {}", expunged.getUids(), mailbox, e); + } + } + + private void handleAdded(MailboxSession session, Mailbox mailbox, Added added) { + added.getUids() + .stream() + .flatMap(uid -> retrieveMailboxMessage(session, mailbox, uid)) + .forEach(mailboxMessage -> addMessage(session, mailbox, mailboxMessage)); + } + private Stream<MailboxMessage> retrieveMailboxMessage(MailboxSession session, Mailbox mailbox, MessageUid uid) { try { return Stream.of(factory.getMessageMapper(session) --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
