You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/01/08 08:00:44 UTC

[25/47] james-project git commit: MAILBOX-364 EventFactory should expose a builder for Expunged event

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 <bt...@linagora.com>
Authored: Wed Dec 19 13:35:05 2018 +0700
Committer: Benoit Tellier <bt...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org