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

Branch: refs/heads/master
Commit: 7ceb951cba15df620a63f28d5dfd313527aaa430
Parents: 886ad16
Author: Benoit Tellier <btell...@linagora.com>
Authored: Wed Dec 19 12:03:00 2018 +0700
Committer: Benoit Tellier <btell...@linagora.com>
Committed: Tue Jan 8 14:40:28 2019 +0700

----------------------------------------------------------------------
 .../james/mailbox/store/event/EventFactory.java | 53 +++++++++++++++-----
 .../store/event/MailboxEventDispatcher.java     |  8 ++-
 .../event/MailboxAnnotationListenerTest.java    | 18 +++----
 3 files changed, 56 insertions(+), 23 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/7ceb951c/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 e87f967..a05e561 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
@@ -51,7 +51,7 @@ public class EventFactory {
         protected User user;
         protected MailboxSession.SessionId sessionId;
 
-        abstract T backReference();
+        protected abstract T backReference();
 
         public T mailbox(Mailbox mailbox) {
             path(mailbox.generateAssociatedPath());
@@ -85,7 +85,7 @@ public class EventFactory {
             return backReference();
         }
 
-        void mailboxEventChecks() {
+        protected void mailboxEventChecks() {
             Preconditions.checkState(user != null, "Field `user` is 
compulsory");
             Preconditions.checkState(mailboxId != null, "Field `mailboxId` is 
compulsory");
             Preconditions.checkState(path != null, "Field `path` is 
compulsory");
@@ -95,7 +95,7 @@ public class EventFactory {
 
     public static class MailboxAddedBuilder extends 
MailboxEventBuilder<MailboxAddedBuilder> {
         @Override
-        MailboxAddedBuilder backReference() {
+        protected MailboxAddedBuilder backReference() {
             return this;
         }
 
@@ -106,6 +106,41 @@ public class EventFactory {
         }
     }
 
+    public static class MailboxDeletionBuilder extends 
MailboxEventBuilder<MailboxDeletionBuilder> {
+        private QuotaRoot quotaRoot;
+        private QuotaCount deletedMessageCount;
+        private QuotaSize totalDeletedSize;
+
+        @Override
+        protected MailboxDeletionBuilder backReference() {
+            return this;
+        }
+
+        public MailboxDeletionBuilder quotaRoot(QuotaRoot quotaRoot) {
+            this.quotaRoot = quotaRoot;
+            return this;
+        }
+
+        public MailboxDeletionBuilder deletedMessageCount(QuotaCount 
deletedMessageCount) {
+            this.deletedMessageCount = deletedMessageCount;
+            return this;
+        }
+
+        public MailboxDeletionBuilder totalDeletedSize(QuotaSize 
totalDeletedSize) {
+            this.totalDeletedSize = totalDeletedSize;
+            return this;
+        }
+
+        public MailboxListener.MailboxDeletion build() {
+            mailboxEventChecks();
+            Preconditions.checkState(quotaRoot != null, "Field `quotaRoot` is 
compulsory");
+            Preconditions.checkState(deletedMessageCount != null, "Field 
`deletedMessageCount` is compulsory");
+            Preconditions.checkState(totalDeletedSize != null, "Field 
`totalDeletedSize` is compulsory");
+
+            return new MailboxListener.MailboxDeletion(sessionId, user, path, 
quotaRoot, deletedMessageCount, totalDeletedSize, mailboxId);
+        }
+    }
+
     public static class FlagsUpdatedBuilder extends 
MailboxEventBuilder<FlagsUpdatedBuilder> {
         private final ImmutableList.Builder<UpdatedFlags> updatedFlags;
 
@@ -124,7 +159,7 @@ public class EventFactory {
         }
 
         @Override
-        FlagsUpdatedBuilder backReference() {
+        protected FlagsUpdatedBuilder backReference() {
             return this;
         }
 
@@ -165,14 +200,8 @@ public class EventFactory {
         return new MailboxListener.MailboxRenamed(sessionId, user, from, 
to.getMailboxId(), to.generateAssociatedPath());
     }
 
-    public MailboxListener.MailboxDeletion mailboxDeleted(MailboxSession 
session, Mailbox mailbox, QuotaRoot quotaRoot,
-                                                          QuotaCount 
deletedMessageCount, QuotaSize totalDeletedSize) {
-        return mailboxDeleted(session.getSessionId(), session.getUser(), 
mailbox, quotaRoot, deletedMessageCount, totalDeletedSize);
-    }
-
-    public MailboxListener.MailboxDeletion 
mailboxDeleted(MailboxSession.SessionId sessionId, User user, Mailbox mailbox, 
QuotaRoot quotaRoot,
-                                                          QuotaCount 
deletedMessageCount, QuotaSize totalDeletedSize) {
-        return new MailboxListener.MailboxDeletion(sessionId, user, 
mailbox.generateAssociatedPath(), quotaRoot, deletedMessageCount, 
totalDeletedSize, mailbox.getMailboxId());
+    public MailboxDeletionBuilder mailboxDeleted() {
+        return new MailboxDeletionBuilder();
     }
 
     public MailboxAddedBuilder mailboxAdded() {

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ceb951c/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 aabd204..ca4076f 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
@@ -149,7 +149,13 @@ public class MailboxEventDispatcher {
      * MailboxListener will get triggered then
      */
     public void mailboxDeleted(MailboxSession session, Mailbox mailbox, 
QuotaRoot quotaRoot, QuotaCount deletedMessageCount, QuotaSize 
totalDeletedSize) {
-        event(eventFactory.mailboxDeleted(session, mailbox, quotaRoot, 
deletedMessageCount, totalDeletedSize));
+        event(eventFactory.mailboxDeleted()
+            .mailboxSession(session)
+            .mailbox(mailbox)
+            .quotaRoot(quotaRoot)
+            .deletedMessageCount(deletedMessageCount)
+            .totalDeletedSize(totalDeletedSize)
+            .build());
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/james-project/blob/7ceb951c/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
index 1ccca6a..cb6f7e1 100644
--- 
a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
+++ 
b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MailboxAnnotationListenerTest.java
@@ -42,8 +42,6 @@ import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.model.TestId;
 import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
 import org.apache.james.mailbox.store.mail.AnnotationMapper;
-import org.apache.james.mailbox.store.mail.model.Mailbox;
-import org.apache.james.mailbox.store.mail.model.impl.SimpleMailbox;
 import org.junit.Before;
 import org.junit.Test;
 import org.mockito.Mock;
@@ -69,8 +67,6 @@ public class MailboxAnnotationListenerTest {
     @Mock private AnnotationMapper annotationMapper;
     @Mock private MailboxId mailboxId;
 
-    private Mailbox mailbox;
-    private EventFactory eventFactory;
     private MailboxAnnotationListener listener;
     private MailboxListener.MailboxEvent deleteEvent;
     private MailboxSession mailboxSession;
@@ -80,13 +76,15 @@ public class MailboxAnnotationListenerTest {
         MockitoAnnotations.initMocks(this);
         mailboxSession = MailboxSessionUtil.create("test");
         listener = new MailboxAnnotationListener(mailboxSessionMapperFactory, 
mailboxManager);
-        eventFactory = new EventFactory();
-        mailbox = new SimpleMailbox(MailboxPath.forUser("user", "name"), 
UID_VALIDITY, mailboxId);
 
-        QuotaRoot quotaRoot = QuotaRoot.quotaRoot("root", Optional.empty());
-        QuotaCount quotaCount = QuotaCount.count(123);
-        QuotaSize quotaSize = QuotaSize.size(456);
-        deleteEvent = eventFactory.mailboxDeleted(mailboxSession, mailbox, 
quotaRoot, quotaCount, quotaSize);
+        deleteEvent = new EventFactory().mailboxDeleted()
+            .mailboxSession(mailboxSession)
+            .mailboxId(mailboxId)
+            .path(MailboxPath.forUser("user", "name"))
+            .quotaRoot(QuotaRoot.quotaRoot("root", Optional.empty()))
+            .deletedMessageCount(QuotaCount.count(123))
+            .totalDeletedSize(QuotaSize.size(456))
+            .build();
 
         
when(mailboxManager.createSystemSession(deleteEvent.getUser().asString()))
             .thenReturn(mailboxSession);


---------------------------------------------------------------------
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