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