MAILBOX-364 EventFactory should expose a builder for Expunged event
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/2c46d620 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/2c46d620 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/2c46d620 Branch: refs/heads/master Commit: 2c46d620f1687b4ec7d72a0c137e384eac1f3038 Parents: e829c8e Author: Benoit Tellier <btell...@linagora.com> Authored: Wed Dec 19 13:35:05 2018 +0700 Committer: Benoit Tellier <btell...@linagora.com> Committed: Tue Jan 8 14:40:28 2019 +0700 ---------------------------------------------------------------------- .../james/mailbox/store/event/EventFactory.java | 38 ++++++++++++++------ .../store/event/MailboxEventDispatcher.java | 6 +++- 2 files changed, 33 insertions(+), 11 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/2c46d620/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java index cd8a38c..0205560 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java @@ -20,7 +20,6 @@ package org.apache.james.mailbox.store.event; import java.util.Collection; -import java.util.Map; import org.apache.james.core.User; import org.apache.james.core.quota.QuotaCount; @@ -43,6 +42,7 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage; import com.github.steveash.guavate.Guavate; import com.google.common.base.Preconditions; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableSortedMap; public class EventFactory { public abstract static class MailboxEventBuilder<T extends MailboxEventBuilder> { @@ -124,6 +124,12 @@ public class EventFactory { this.metaData.addAll(metaData); return backReference(); } + + protected ImmutableSortedMap<MessageUid, MessageMetaData> metaDataAsMap() { + return metaData.build() + .stream() + .collect(Guavate.toImmutableSortedMap(MessageMetaData::getUid)); + } } public static class AddedBuilder extends MessageMetaDataEventBuilder<AddedBuilder> { @@ -140,9 +146,25 @@ public class EventFactory { user, path, mailboxId, - metaData.build() - .stream() - .collect(Guavate.toImmutableSortedMap(MessageMetaData::getUid))); + metaDataAsMap()); + } + } + + public static class ExpungedBuilder extends MessageMetaDataEventBuilder<ExpungedBuilder> { + @Override + protected ExpungedBuilder backReference() { + return this; + } + + public MailboxListener.Expunged build() { + mailboxEventChecks(); + + return new MailboxListener.Expunged( + sessionId, + user, + path, + mailboxId, + metaDataAsMap()); } } @@ -229,12 +251,8 @@ public class EventFactory { return new AddedBuilder(); } - public MailboxListener.Expunged expunged(MailboxSession session, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) { - return expunged(session.getSessionId(), session.getUser(), uids, mailbox); - } - - public MailboxListener.Expunged expunged(MailboxSession.SessionId sessionId, User user, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) { - return new MailboxListener.Expunged(sessionId, user, mailbox.generateAssociatedPath(), mailbox.getMailboxId(), uids); + public ExpungedBuilder expunged() { + return new ExpungedBuilder(); } public FlagsUpdatedBuilder flagsUpdated() { http://git-wip-us.apache.org/repos/asf/james-project/blob/2c46d620/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java index 6684b8a..122394f 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java @@ -114,7 +114,11 @@ public class MailboxEventDispatcher { * @param mailbox The mailbox */ public void expunged(MailboxSession session, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) { - event(eventFactory.expunged(session, uids, mailbox)); + event(eventFactory.expunged() + .mailbox(mailbox) + .mailboxSession(session) + .addMetaData(uids.values()) + .build()); } public void expunged(MailboxSession session, MessageMetaData messageMetaData, Mailbox mailbox) { --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org