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:42 UTC
[23/47] james-project git commit: MAILBOX-364 EventFactory should
expose a builder for FlagsUpdated event
MAILBOX-364 EventFactory should expose a builder for FlagsUpdated 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/886ad168
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/886ad168
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/886ad168
Branch: refs/heads/master
Commit: 886ad168872a4cc894c45fa4cb1e0b5b40e1c182
Parents: 8550ce9
Author: Benoit Tellier <bt...@linagora.com>
Authored: Wed Dec 19 11:51:43 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Jan 8 14:40:28 2019 +0700
----------------------------------------------------------------------
.../james/mailbox/store/event/EventFactory.java | 87 ++++++++++----
.../store/event/MailboxEventDispatcher.java | 8 +-
.../base/MailboxEventAnalyserTest.java | 120 +++++++++----------
3 files changed, 130 insertions(+), 85 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/886ad168/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 13c6f9d..e87f967 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.List;
import java.util.Map;
import java.util.SortedMap;
@@ -41,57 +40,103 @@ 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.github.steveash.guavate.Guavate;
import com.google.common.base.Preconditions;
+import com.google.common.collect.ImmutableList;
public class EventFactory {
- public static class MailboxAddedBuilder {
- private MailboxPath path;
- private MailboxId mailboxId;
- private User user;
- private MailboxSession.SessionId sessionId;
+ public abstract static class MailboxEventBuilder<T extends MailboxEventBuilder> {
+ protected MailboxPath path;
+ protected MailboxId mailboxId;
+ protected User user;
+ protected MailboxSession.SessionId sessionId;
- public MailboxAddedBuilder mailbox(Mailbox mailbox) {
+ abstract T backReference();
+
+ public T mailbox(Mailbox mailbox) {
path(mailbox.generateAssociatedPath());
mailboxId(mailbox.getMailboxId());
- return this;
+ return backReference();
}
- public MailboxAddedBuilder mailboxSession(MailboxSession mailboxSession) {
+ public T mailboxSession(MailboxSession mailboxSession) {
user(mailboxSession.getUser());
sessionId(mailboxSession.getSessionId());
- return this;
+ return backReference();
}
- public MailboxAddedBuilder mailboxId(MailboxId mailboxId) {
+ public T mailboxId(MailboxId mailboxId) {
this.mailboxId = mailboxId;
- return this;
+ return backReference();
}
- public MailboxAddedBuilder path(MailboxPath path) {
+ public T path(MailboxPath path) {
this.path = path;
- return this;
+ return backReference();
}
- public MailboxAddedBuilder user(User user) {
+ public T user(User user) {
this.user = user;
- return this;
+ return backReference();
}
- public MailboxAddedBuilder sessionId(MailboxSession.SessionId sessionId) {
+ public T sessionId(MailboxSession.SessionId sessionId) {
this.sessionId = sessionId;
- return this;
+ return backReference();
}
- public MailboxListener.MailboxAdded build() {
+ 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");
Preconditions.checkState(sessionId != null, "Field `sessionId` is compulsory");
+ }
+ }
+
+ public static class MailboxAddedBuilder extends MailboxEventBuilder<MailboxAddedBuilder> {
+ @Override
+ MailboxAddedBuilder backReference() {
+ return this;
+ }
+
+ public MailboxListener.MailboxAdded build() {
+ mailboxEventChecks();
return new MailboxListener.MailboxAdded(sessionId, user, path, mailboxId);
}
}
+ public static class FlagsUpdatedBuilder extends MailboxEventBuilder<FlagsUpdatedBuilder> {
+ private final ImmutableList.Builder<UpdatedFlags> updatedFlags;
+
+ public FlagsUpdatedBuilder() {
+ updatedFlags = ImmutableList.builder();
+ }
+
+ public FlagsUpdatedBuilder updatedFags(Iterable<UpdatedFlags> updatedFlags) {
+ this.updatedFlags.addAll(updatedFlags);
+ return this;
+ }
+
+ public FlagsUpdatedBuilder updatedFags(UpdatedFlags updatedFlags) {
+ this.updatedFlags.add(updatedFlags);
+ return this;
+ }
+
+ @Override
+ FlagsUpdatedBuilder backReference() {
+ return this;
+ }
+
+ public MailboxListener.FlagsUpdated build() {
+ mailboxEventChecks();
+
+ ImmutableList<UpdatedFlags> updatedFlags = this.updatedFlags.build();
+
+ return new MailboxListener.FlagsUpdated(sessionId, user, path, mailboxId, updatedFlags);
+ }
+ }
+
public MailboxListener.Added added(MailboxSession session, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
return added(session.getSessionId(), session.getUser(), uids, mailbox);
}
@@ -108,8 +153,8 @@ public class EventFactory {
return new MailboxListener.Expunged(sessionId, user, mailbox.generateAssociatedPath(), mailbox.getMailboxId(), uids);
}
- public MailboxListener.FlagsUpdated flagsUpdated(MailboxSession session, Mailbox mailbox, List<UpdatedFlags> uflags) {
- return new MailboxListener.FlagsUpdated(session.getSessionId(), session.getUser(), mailbox.generateAssociatedPath(), mailbox.getMailboxId(), uflags);
+ public FlagsUpdatedBuilder flagsUpdated() {
+ return new FlagsUpdatedBuilder();
}
public MailboxListener.MailboxRenamed mailboxRenamed(MailboxSession session, MailboxPath from, Mailbox to) {
http://git-wip-us.apache.org/repos/asf/james-project/blob/886ad168/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 fa0b0bc..aabd204 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
@@ -125,7 +125,11 @@ public class MailboxEventDispatcher {
* registered MailboxListener will get triggered then
*/
public void flagsUpdated(MailboxSession session, Mailbox mailbox, List<UpdatedFlags> uflags) {
- event(eventFactory.flagsUpdated(session, mailbox, uflags));
+ event(eventFactory.flagsUpdated()
+ .mailbox(mailbox)
+ .mailboxSession(session)
+ .updatedFags(uflags)
+ .build());
}
public void flagsUpdated(MailboxSession session, Mailbox mailbox, UpdatedFlags uflags) {
@@ -153,7 +157,7 @@ public class MailboxEventDispatcher {
* MailboxListener will get triggered then
*/
public void mailboxAdded(MailboxSession session, Mailbox mailbox) {
- listener.event(eventFactory.mailboxAdded()
+ event(eventFactory.mailboxAdded()
.mailbox(mailbox)
.mailboxSession(session)
.build());
http://git-wip-us.apache.org/repos/asf/james-project/blob/886ad168/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 1dc277a..9581044 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
@@ -56,6 +56,25 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSortedMap;
public class MailboxEventAnalyserTest {
+ private static final MessageUid UID = MessageUid.of(900);
+ private static final UpdatedFlags ADD_RECENT_UPDATED_FLAGS = UpdatedFlags.builder()
+ .uid(UID)
+ .modSeq(-1)
+ .oldFlags(new Flags())
+ .newFlags(new Flags(Flags.Flag.RECENT))
+ .build();
+ private static final UpdatedFlags ADD_ANSWERED_UPDATED_FLAGS = UpdatedFlags.builder()
+ .uid(UID)
+ .modSeq(-1)
+ .oldFlags(new Flags())
+ .newFlags(new Flags(Flags.Flag.ANSWERED))
+ .build();
+ private static final UpdatedFlags NOOP_UPDATED_FLAGS = UpdatedFlags.builder()
+ .uid(UID)
+ .modSeq(-1)
+ .oldFlags(new Flags())
+ .newFlags(new Flags())
+ .build();
public static class SingleMessageResultIterator implements MessageResultIterator {
private final MessageResult messageResult;
@@ -169,15 +188,12 @@ public class MailboxEventAnalyserTest {
@Test
public void testShouldNotSetUidWhenNoSystemFlagChange() {
- MailboxListener.FlagsUpdated update = eventFactory.flagsUpdated(
- MAILBOX_SESSION,
- DEFAULT_MAILBOX,
- ImmutableList.of(UpdatedFlags.builder()
- .uid(MessageUid.of(90))
- .modSeq(-1)
- .oldFlags(new Flags())
- .newFlags(new Flags())
- .build()));
+ MailboxListener.FlagsUpdated update = new EventFactory().flagsUpdated()
+ .mailboxSession(MAILBOX_SESSION)
+ .mailbox(DEFAULT_MAILBOX)
+ .updatedFags(NOOP_UPDATED_FLAGS)
+ .build();
+
testee.event(update);
assertThat(testee.flagUpdateUids()).isEmpty();
@@ -185,36 +201,27 @@ public class MailboxEventAnalyserTest {
@Test
public void testShouldSetUidWhenSystemFlagChange() {
- MessageUid uid = MessageUid.of(900);
-
- MailboxListener.FlagsUpdated update = eventFactory.flagsUpdated(
- OTHER_MAILBOX_SESSION,
- DEFAULT_MAILBOX,
- ImmutableList.of(UpdatedFlags.builder()
- .uid(uid)
- .modSeq(-1)
- .oldFlags(new Flags())
- .newFlags(new Flags(Flags.Flag.ANSWERED))
- .build()));
+ MailboxListener.FlagsUpdated update = new EventFactory().flagsUpdated()
+ .mailboxSession(OTHER_MAILBOX_SESSION)
+ .mailbox(DEFAULT_MAILBOX)
+ .updatedFags(ADD_ANSWERED_UPDATED_FLAGS)
+ .build();
+
testee.event(update);
- assertThat(testee.flagUpdateUids().iterator()).containsExactly(uid);
+ assertThat(testee.flagUpdateUids().iterator()).containsExactly(UID);
}
@Test
public void testShouldClearFlagUidsUponReset() {
- MessageUid uid = MessageUid.of(900);
SelectedMailboxImpl analyser = this.testee;
-
- MailboxListener.FlagsUpdated update = eventFactory.flagsUpdated(
- MAILBOX_SESSION,
- DEFAULT_MAILBOX,
- ImmutableList.of(UpdatedFlags.builder()
- .uid(uid)
- .modSeq(-1)
- .oldFlags(new Flags())
- .newFlags(new Flags(Flags.Flag.ANSWERED))
- .build()));
+
+ MailboxListener.FlagsUpdated update = new EventFactory().flagsUpdated()
+ .mailboxSession(MAILBOX_SESSION)
+ .mailbox(DEFAULT_MAILBOX)
+ .updatedFags(ADD_ANSWERED_UPDATED_FLAGS)
+ .build();
+
analyser.event(update);
analyser.event(update);
analyser.deselect();
@@ -224,35 +231,27 @@ public class MailboxEventAnalyserTest {
@Test
public void testShouldSetUidWhenSystemFlagChangeDifferentSessionInSilentMode() {
- MessageUid uid = MessageUid.of(900);
-
- MailboxListener.FlagsUpdated update = eventFactory.flagsUpdated(
- OTHER_MAILBOX_SESSION,
- DEFAULT_MAILBOX,
- ImmutableList.of(UpdatedFlags.builder()
- .uid(uid)
- .modSeq(-1)
- .oldFlags(new Flags())
- .newFlags(new Flags(Flags.Flag.ANSWERED))
- .build()));
+ MailboxListener.FlagsUpdated update = new EventFactory().flagsUpdated()
+ .mailboxSession(OTHER_MAILBOX_SESSION)
+ .mailbox(DEFAULT_MAILBOX)
+ .updatedFags(ADD_ANSWERED_UPDATED_FLAGS)
+ .build();
+
testee.event(update);
testee.setSilentFlagChanges(true);
testee.event(update);
- assertThat(testee.flagUpdateUids().iterator()).containsExactly(uid);
+ assertThat(testee.flagUpdateUids().iterator()).containsExactly(UID);
}
@Test
public void testShouldNotSetUidWhenSystemFlagChangeSameSessionInSilentMode() {
- MailboxListener.FlagsUpdated update = eventFactory.flagsUpdated(
- MAILBOX_SESSION,
- DEFAULT_MAILBOX,
- ImmutableList.of(UpdatedFlags.builder()
- .uid(MessageUid.of(345))
- .modSeq(-1)
- .oldFlags(new Flags())
- .newFlags(new Flags())
- .build()));
+ MailboxListener.FlagsUpdated update = new EventFactory().flagsUpdated()
+ .mailboxSession(MAILBOX_SESSION)
+ .mailbox(DEFAULT_MAILBOX)
+ .updatedFags(NOOP_UPDATED_FLAGS)
+ .build();
+
testee.event(update);
testee.setSilentFlagChanges(true);
testee.event(update);
@@ -262,15 +261,12 @@ public class MailboxEventAnalyserTest {
@Test
public void testShouldNotSetUidWhenOnlyRecentFlagUpdated() {
- MailboxListener.FlagsUpdated update = eventFactory.flagsUpdated(
- MAILBOX_SESSION,
- DEFAULT_MAILBOX,
- ImmutableList.of(UpdatedFlags.builder()
- .uid(MessageUid.of(886))
- .modSeq(-1)
- .oldFlags(new Flags())
- .newFlags(new Flags(Flags.Flag.RECENT))
- .build()));
+ MailboxListener.FlagsUpdated update = new EventFactory().flagsUpdated()
+ .mailboxSession(MAILBOX_SESSION)
+ .mailbox(DEFAULT_MAILBOX)
+ .updatedFags(ADD_RECENT_UPDATED_FLAGS)
+ .build();
+
testee.event(update);
assertThat(testee.flagUpdateUids().iterator()).isEmpty();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org