MAILBOX-364 EventFactory should expose a builder for MailboxAdded 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/8550ce9d
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/8550ce9d
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/8550ce9d

Branch: refs/heads/master
Commit: 8550ce9d2668a11f7371e3a5f21849306a007d5b
Parents: 4d6a372
Author: Benoit Tellier <btell...@linagora.com>
Authored: Wed Dec 19 11:26:09 2018 +0700
Committer: Benoit Tellier <btell...@linagora.com>
Committed: Tue Jan 8 14:40:28 2019 +0700

----------------------------------------------------------------------
 .../james/mailbox/store/event/EventFactory.java | 57 +++++++++++++++++---
 .../store/event/MailboxEventDispatcher.java     |  5 +-
 2 files changed, 55 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/8550ce9d/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 4dfd76c..13c6f9d 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
@@ -41,7 +41,56 @@ import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.model.UpdatedFlags;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
 
+import com.google.common.base.Preconditions;
+
 public class EventFactory {
+    public static class MailboxAddedBuilder {
+        private MailboxPath path;
+        private MailboxId mailboxId;
+        private User user;
+        private MailboxSession.SessionId sessionId;
+
+        public MailboxAddedBuilder mailbox(Mailbox mailbox) {
+            path(mailbox.generateAssociatedPath());
+            mailboxId(mailbox.getMailboxId());
+            return this;
+        }
+
+        public MailboxAddedBuilder mailboxSession(MailboxSession 
mailboxSession) {
+            user(mailboxSession.getUser());
+            sessionId(mailboxSession.getSessionId());
+            return this;
+        }
+
+        public MailboxAddedBuilder mailboxId(MailboxId mailboxId) {
+            this.mailboxId = mailboxId;
+            return this;
+        }
+
+        public MailboxAddedBuilder path(MailboxPath path) {
+            this.path = path;
+            return this;
+        }
+
+        public MailboxAddedBuilder user(User user) {
+            this.user = user;
+            return this;
+        }
+
+        public MailboxAddedBuilder sessionId(MailboxSession.SessionId 
sessionId) {
+            this.sessionId = sessionId;
+            return this;
+        }
+
+        public MailboxListener.MailboxAdded build() {
+            Preconditions.checkState(user != null, "Field `user` is 
compulsory");
+            Preconditions.checkState(mailboxId != null, "Field `mailboxId` is 
compulsory");
+            Preconditions.checkState(path != null, "Field `path` is 
compulsory");
+            Preconditions.checkState(sessionId != null, "Field `sessionId` is 
compulsory");
+
+            return new MailboxListener.MailboxAdded(sessionId, user, path, 
mailboxId);
+        }
+    }
 
     public MailboxListener.Added added(MailboxSession session, 
SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
         return added(session.getSessionId(), session.getUser(), uids, mailbox);
@@ -81,12 +130,8 @@ public class EventFactory {
         return new MailboxListener.MailboxDeletion(sessionId, user, 
mailbox.generateAssociatedPath(), quotaRoot, deletedMessageCount, 
totalDeletedSize, mailbox.getMailboxId());
     }
 
-    public MailboxListener.MailboxAdded mailboxAdded(MailboxSession session, 
Mailbox mailbox) {
-        return mailboxAdded(session.getSessionId(), session.getUser(), 
mailbox);
-    }
-
-    public MailboxListener.MailboxAdded mailboxAdded(MailboxSession.SessionId 
sessionId, User user, Mailbox mailbox) {
-        return new MailboxListener.MailboxAdded(sessionId, user, 
mailbox.generateAssociatedPath(), mailbox.getMailboxId());
+    public MailboxAddedBuilder mailboxAdded() {
+        return new MailboxAddedBuilder();
     }
 
     public MailboxListener.MailboxACLUpdated aclUpdated(MailboxSession 
session, MailboxPath mailboxPath, ACLDiff aclDiff, MailboxId mailboxId) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/8550ce9d/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 3a4b113..fa0b0bc 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
@@ -153,7 +153,10 @@ public class MailboxEventDispatcher {
      * MailboxListener will get triggered then
      */
     public void mailboxAdded(MailboxSession session, Mailbox mailbox) {
-        event(eventFactory.mailboxAdded(session, mailbox));
+        listener.event(eventFactory.mailboxAdded()
+            .mailbox(mailbox)
+            .mailboxSession(session)
+            .build());
     }
 
     public void aclUpdated(MailboxSession session, MailboxPath mailboxPath, 
ACLDiff aclDiff, MailboxId mailboxId) {


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org
For additional commands, e-mail: server-dev-h...@james.apache.org

Reply via email to