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:40 UTC

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

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

Branch: refs/heads/master
Commit: e829c8edacc3839992bef750774cccdd08ee4378
Parents: 7ceb951
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Dec 19 13:31:29 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Jan 8 14:40:28 2019 +0700

----------------------------------------------------------------------
 .../spamassassin/SpamAssassinListenerTest.java  | 22 ++++---
 .../james/mailbox/store/event/EventFactory.java | 63 +++++++++++++++++---
 .../store/event/MailboxEventDispatcher.java     |  6 +-
 .../base/MailboxEventAnalyserTest.java          | 22 +++----
 .../processor/base/SelectedMailboxImplTest.java | 14 ++---
 5 files changed, 85 insertions(+), 42 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/e829c8ed/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
index 0496ac5..ff0db16 100644
--- a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
+++ b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
@@ -37,7 +37,6 @@ import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageMoveEvent;
-import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
@@ -58,14 +57,10 @@ import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
 import org.junit.Before;
 import org.junit.Test;
 
-import com.google.common.collect.ImmutableSortedMap;
-
 public class SpamAssassinListenerTest {
-
     public static final String USER = "user";
     private static final MailboxSession MAILBOX_SESSION = MailboxSessionUtil.create(USER);
     private static final int UID_VALIDITY = 43;
-    private static final MessageUid UID = MessageUid.of(45);
     private static final TestMessageId MESSAGE_ID = TestMessageId.of(45);
 
     private SpamAssassin spamAssassin;
@@ -237,9 +232,11 @@ public class SpamAssassinListenerTest {
     public void eventShouldCallSpamAssassinHamLearningWhenTheMessageIsAddedInInbox() throws Exception {
         SimpleMailboxMessage message = createMessage(inbox);
 
-        ImmutableSortedMap<MessageUid, MessageMetaData> sortedMap = ImmutableSortedMap.of(UID, message.metaData());
-        MailboxListener.Added addedEvent = new EventFactory().added(
-                MAILBOX_SESSION, sortedMap, inbox);
+        MailboxListener.Added addedEvent = new EventFactory().added()
+            .mailboxSession(MAILBOX_SESSION)
+            .mailbox(inbox)
+            .addMessage(message)
+            .build();
 
         listener.event(addedEvent);
 
@@ -250,10 +247,11 @@ public class SpamAssassinListenerTest {
     public void eventShouldNotCallSpamAssassinHamLearningWhenTheMessageIsAddedInAMailboxOtherThanInbox() throws Exception {
         SimpleMailboxMessage message = createMessage(mailbox1);
 
-        MailboxListener.Added addedEvent = new EventFactory().added(
-            MAILBOX_SESSION,
-            ImmutableSortedMap.of(UID, message.metaData()),
-            mailbox1);
+        MailboxListener.Added addedEvent = new EventFactory().added()
+            .mailboxSession(MAILBOX_SESSION)
+            .mailbox(mailbox1)
+            .addMessage(message)
+            .build();
 
         listener.event(addedEvent);
 

http://git-wip-us.apache.org/repos/asf/james-project/blob/e829c8ed/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 a05e561..cd8a38c 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
@@ -21,7 +21,6 @@ package org.apache.james.mailbox.store.event;
 
 import java.util.Collection;
 import java.util.Map;
-import java.util.SortedMap;
 
 import org.apache.james.core.User;
 import org.apache.james.core.quota.QuotaCount;
@@ -39,6 +38,7 @@ import org.apache.james.mailbox.model.MessageMoves;
 import org.apache.james.mailbox.model.QuotaRoot;
 import org.apache.james.mailbox.model.UpdatedFlags;
 import org.apache.james.mailbox.store.mail.model.Mailbox;
+import org.apache.james.mailbox.store.mail.model.MailboxMessage;
 
 import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
@@ -93,6 +93,59 @@ public class EventFactory {
         }
     }
 
+    public abstract static class MessageMetaDataEventBuilder<T extends MessageMetaDataEventBuilder> extends MailboxEventBuilder<T> {
+        protected final ImmutableList.Builder<MessageMetaData> metaData;
+
+        protected MessageMetaDataEventBuilder() {
+            metaData = ImmutableList.builder();
+        }
+
+        protected abstract T backReference();
+
+        public T addMessage(MailboxMessage message) {
+            this.addMetaData(message.metaData());
+            return backReference();
+        }
+
+        public T addMessages(Iterable<MailboxMessage> messages) {
+            this.addMetaData(ImmutableList.copyOf(messages)
+                .stream()
+                .map(MailboxMessage::metaData)
+                .collect(Guavate.toImmutableList()));
+            return backReference();
+        }
+
+        public T addMetaData(MessageMetaData metaData) {
+            this.metaData.add(metaData);
+            return backReference();
+        }
+
+        public T addMetaData(Iterable<MessageMetaData> metaData) {
+            this.metaData.addAll(metaData);
+            return backReference();
+        }
+    }
+
+    public static class AddedBuilder extends MessageMetaDataEventBuilder<AddedBuilder> {
+        @Override
+        protected AddedBuilder backReference() {
+            return this;
+        }
+
+        public MailboxListener.Added build() {
+            mailboxEventChecks();
+
+            return new MailboxListener.Added(
+                sessionId,
+                user,
+                path,
+                mailboxId,
+                metaData.build()
+                    .stream()
+                    .collect(Guavate.toImmutableSortedMap(MessageMetaData::getUid)));
+        }
+    }
+
     public static class MailboxAddedBuilder extends MailboxEventBuilder<MailboxAddedBuilder> {
         @Override
         protected MailboxAddedBuilder backReference() {
@@ -172,12 +225,8 @@ public class EventFactory {
         }
     }
 
-    public MailboxListener.Added added(MailboxSession session, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
-        return added(session.getSessionId(), session.getUser(), uids, mailbox);
-    }
-
-    public MailboxListener.Added added(MailboxSession.SessionId sessionId, User user, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
-        return new MailboxListener.Added(sessionId, user, mailbox.generateAssociatedPath(), mailbox.getMailboxId(), uids);
+    public AddedBuilder added() {
+        return new AddedBuilder();
     }
 
     public MailboxListener.Expunged expunged(MailboxSession session,  Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/e829c8ed/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 ca4076f..6684b8a 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
@@ -83,7 +83,11 @@ public class MailboxEventDispatcher {
      * @param mailbox The mailbox
      */
     public void added(MailboxSession session, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
-        event(eventFactory.added(session, uids, mailbox));
+        event(eventFactory.added()
+            .mailbox(mailbox)
+            .mailboxSession(session)
+            .addMetaData(uids.values())
+            .build());
     }
 
     public void added(MailboxSession session, Mailbox mailbox, MailboxMessage mailboxMessage) {

http://git-wip-us.apache.org/repos/asf/james-project/blob/e829c8ed/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
index 9581044..165ff04 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/MailboxEventAnalyserTest.java
@@ -53,7 +53,6 @@ import org.junit.Before;
 import org.junit.Test;
 
 import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableSortedMap;
 
 public class MailboxEventAnalyserTest {
     private static final MessageUid UID = MessageUid.of(900);
@@ -107,7 +106,6 @@ public class MailboxEventAnalyserTest {
         }
     }
 
-
     private static final MessageUid MESSAGE_UID = MessageUid.of(1);
     private static final MailboxSession MAILBOX_SESSION = MailboxSessionUtil.create("user");
     private static final MailboxSession OTHER_MAILBOX_SESSION = MailboxSessionUtil.create("user");
@@ -116,6 +114,11 @@ public class MailboxEventAnalyserTest {
     private static final TestId MAILBOX_ID = TestId.of(36);
     private static final int UID_VALIDITY = 1024;
     private static final SimpleMailbox DEFAULT_MAILBOX = new SimpleMailbox(MAILBOX_PATH, UID_VALIDITY, MAILBOX_ID);
+    private static final MailboxListener.Added ADDED = new EventFactory().added()
+        .mailboxSession(MAILBOX_SESSION)
+        .mailbox(DEFAULT_MAILBOX)
+        .addMetaData(new MessageMetaData(MessageUid.of(11), 0, new Flags(), 45, new Date(), new DefaultMessageId()))
+        .build();
 
     private SelectedMailboxImpl testee;
     private EventFactory eventFactory;
@@ -164,23 +167,14 @@ public class MailboxEventAnalyserTest {
 
     @Test
     public void testShouldBeNoSizeChangeOnAdded() {
-        MailboxListener.Added mailboxAdded = eventFactory.added(
-            MAILBOX_SESSION,
-            ImmutableSortedMap.of(MessageUid.of(11),
-                new MessageMetaData(MessageUid.of(11), 0, new Flags(), 45, new Date(), new DefaultMessageId())),
-            DEFAULT_MAILBOX);
-        testee.event(mailboxAdded);
+        testee.event(ADDED);
+
         assertThat(testee.isSizeChanged()).isTrue();
     }
 
     @Test
     public void testShouldNoSizeChangeAfterReset() {
-        MailboxListener.Added mailboxAdded = eventFactory.added(
-            MAILBOX_SESSION,
-            ImmutableSortedMap.of(MessageUid.of(11),
-                new MessageMetaData(MessageUid.of(11), 0, new Flags(), 45, new Date(), new DefaultMessageId())),
-            DEFAULT_MAILBOX);
-        testee.event(mailboxAdded);
+        testee.event(ADDED);
         testee.resetEvents();
 
         assertThat(testee.isSizeChanged()).isFalse();

http://git-wip-us.apache.org/repos/asf/james-project/blob/e829c8ed/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
index 437c41f..86a5023 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/base/SelectedMailboxImplTest.java
@@ -26,10 +26,8 @@ import static org.mockito.Mockito.doAnswer;
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.when;
 
-import java.security.SecureRandom;
 import java.util.Date;
 import java.util.Iterator;
-import java.util.TreeMap;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.Executors;
 import java.util.concurrent.ThreadFactory;
@@ -37,12 +35,12 @@ import java.util.concurrent.atomic.AtomicInteger;
 
 import javax.mail.Flags;
 
-import org.apache.james.core.User;
 import org.apache.james.imap.api.ImapSessionUtils;
 import org.apache.james.imap.api.process.ImapSession;
 import org.apache.james.mailbox.MailboxListener;
 import org.apache.james.mailbox.MailboxManager;
 import org.apache.james.mailbox.MailboxSession;
+import org.apache.james.mailbox.MailboxSessionUtil;
 import org.apache.james.mailbox.MessageManager;
 import org.apache.james.mailbox.MessageUid;
 import org.apache.james.mailbox.model.MailboxConstants;
@@ -165,10 +163,10 @@ public class SelectedMailboxImplTest {
     }
 
     private void emitEvent(MailboxListener mailboxListener) {
-        SecureRandom random = new SecureRandom();
-        TreeMap<MessageUid, MessageMetaData> result = new TreeMap<>();
-        result.put(EMITTED_EVENT_UID, new MessageMetaData(EMITTED_EVENT_UID, MOD_SEQ, new Flags(), SIZE, new Date(), new DefaultMessageId()));
-        mailboxListener.event(new EventFactory().added(MailboxSession.SessionId.of(random.nextLong()),
-            mock(User.class), result, mailbox));
+        mailboxListener.event(new EventFactory().added()
+            .mailbox(mailbox)
+            .addMetaData(new MessageMetaData(EMITTED_EVENT_UID, MOD_SEQ, new Flags(), SIZE, new Date(), new DefaultMessageId()))
+            .mailboxSession(MailboxSessionUtil.create("user"))
+            .build());
     }
 }


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