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 2018/12/07 01:10:35 UTC
[12/19] james-project git commit: JAMES-2616 Strong Typing SessionId
JAMES-2616 Strong Typing SessionId
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/713c8240
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/713c8240
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/713c8240
Branch: refs/heads/master
Commit: 713c8240f126f5299c6b58df0ced8996e5675a68
Parents: 7406e00
Author: tran tien duc <dt...@linagora.com>
Authored: Mon Dec 3 16:38:08 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Fri Dec 7 07:52:51 2018 +0700
----------------------------------------------------------------------
.../java/org/apache/james/mailbox/Event.java | 6 +-
.../apache/james/mailbox/MailboxListener.java | 31 +++++-----
.../apache/james/mailbox/MailboxSession.java | 43 +++++++++++++-
.../james/mailbox/mock/MockMailboxSession.java | 8 +--
.../spamassassin/SpamAssassinListenerTest.java | 5 +-
.../mailbox/store/SimpleMailboxSession.java | 8 +--
.../mailbox/store/StoreMailboxManager.java | 6 +-
.../james/mailbox/store/event/EventFactory.java | 61 ++++++++++++++------
.../store/event/MailboxEventDispatcher.java | 1 +
.../mailbox/store/event/MessageMoveEvent.java | 13 +++--
.../store/MailboxEventDispatcherTest.java | 4 +-
.../mailbox/store/json/EventSerializerTest.java | 0
.../processor/base/SelectedMailboxImpl.java | 10 +++-
.../james/imap/processor/CopyProcessorTest.java | 9 +--
.../james/imap/processor/MoveProcessorTest.java | 9 +--
.../processor/base/SelectedMailboxImplTest.java | 5 +-
16 files changed, 153 insertions(+), 66 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/mailbox/api/src/main/java/org/apache/james/mailbox/Event.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/Event.java b/mailbox/api/src/main/java/org/apache/james/mailbox/Event.java
index 7282cb9..4e80830 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/Event.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/Event.java
@@ -18,6 +18,8 @@
****************************************************************/
package org.apache.james.mailbox;
+import java.util.Optional;
+
import org.apache.james.core.User;
public interface Event {
@@ -28,7 +30,7 @@ public interface Event {
return getSession().getUser().getCoreUser();
}
- default long getSessionId() {
- return getSession().getSessionId();
+ default Optional<MailboxSession.SessionId> getSessionId() {
+ return Optional.ofNullable(getSession().getSessionId());
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
index 9e9c228..eb80e4b 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxListener.java
@@ -149,8 +149,8 @@ public interface MailboxListener {
}
@Override
- public long getSessionId() {
- return 0;
+ public SessionId getSessionId() {
+ return MailboxSession.SessionId.random();
}
@Override
@@ -198,7 +198,7 @@ public interface MailboxListener {
private final MailboxPath path;
private final MailboxId mailboxId;
private final User user;
- private final long sessionId;
+ private final Optional<MailboxSession.SessionId> sessionId;
@Deprecated
public MailboxEvent(MailboxSession session, MailboxPath path, MailboxId mailboxId) {
@@ -211,11 +211,10 @@ public interface MailboxListener {
.map(MailboxSession.User::getCoreUser)
.orElse(null);
this.sessionId = Optional.ofNullable(session)
- .map(MailboxSession::getSessionId)
- .orElse(0L);
+ .map(MailboxSession::getSessionId);
}
- public MailboxEvent(long sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+ public MailboxEvent(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath path, MailboxId mailboxId) {
this.user = user;
this.path = path;
this.mailboxId = mailboxId;
@@ -253,7 +252,7 @@ public interface MailboxListener {
* @return sessionId
*/
@Override
- public long getSessionId() {
+ public Optional<MailboxSession.SessionId> getSessionId() {
return sessionId;
}
@@ -299,7 +298,7 @@ public interface MailboxListener {
this.totalDeletedSize = totalDeletedSize;
}
- public MailboxDeletion(long sessionId, User user, MailboxPath path, QuotaRoot quotaRoot, QuotaCount deletedMessageCOunt, QuotaSize totalDeletedSize,
+ public MailboxDeletion(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath path, QuotaRoot quotaRoot, QuotaCount deletedMessageCOunt, QuotaSize totalDeletedSize,
MailboxId mailboxId) {
super(sessionId, user, path, mailboxId);
this.quotaRoot = quotaRoot;
@@ -334,7 +333,7 @@ public interface MailboxListener {
super(session, path, mailboxId);
}
- public MailboxAdded(long sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+ public MailboxAdded(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath path, MailboxId mailboxId) {
super(sessionId, user, path, mailboxId);
}
}
@@ -353,7 +352,7 @@ public interface MailboxListener {
super(session, path, mailboxId);
}
- public MailboxRenamed(long sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+ public MailboxRenamed(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath path, MailboxId mailboxId) {
super(sessionId, user, path, mailboxId);
}
@@ -379,7 +378,7 @@ public interface MailboxListener {
this.aclDiff = aclDiff;
}
- public MailboxACLUpdated(long sessionId, User user, MailboxPath path, ACLDiff aclDiff, MailboxId mailboxId) {
+ public MailboxACLUpdated(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath path, ACLDiff aclDiff, MailboxId mailboxId) {
super(sessionId, user, path, mailboxId);
this.aclDiff = aclDiff;
}
@@ -405,7 +404,7 @@ public interface MailboxListener {
super(session, path, mailboxId);
}
- public MessageEvent(long sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+ public MessageEvent(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath path, MailboxId mailboxId) {
super(sessionId, user, path, mailboxId);
}
@@ -424,7 +423,7 @@ public interface MailboxListener {
super(session, path, mailboxId);
}
- public MetaDataHoldingEvent(long sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+ public MetaDataHoldingEvent(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath path, MailboxId mailboxId) {
super(sessionId, user, path, mailboxId);
}
@@ -449,7 +448,7 @@ public interface MailboxListener {
super(session, path, mailboxId);
}
- public Expunged(long sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+ public Expunged(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath path, MailboxId mailboxId) {
super(sessionId, user, path, mailboxId);
}
@@ -477,7 +476,7 @@ public interface MailboxListener {
super(session, path, mailboxId);
}
- public FlagsUpdated(long sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+ public FlagsUpdated(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath path, MailboxId mailboxId) {
super(sessionId, user, path, mailboxId);
}
@@ -499,7 +498,7 @@ public interface MailboxListener {
super(session, path, mailboxId);
}
- public Added(long sessionId, User user, MailboxPath path, MailboxId mailboxId) {
+ public Added(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath path, MailboxId mailboxId) {
super(sessionId, user, path, mailboxId);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
index 50136b9..e2c00f9 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/MailboxSession.java
@@ -23,12 +23,53 @@ import java.util.Collection;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Objects;
+
+import com.google.common.base.MoreObjects;
/**
* Mailbox session.
*/
public interface MailboxSession {
+ class SessionId {
+
+ public static SessionId of(long sessionId) {
+ return new SessionId(sessionId);
+ }
+
+ private final long sessionId;
+
+ private SessionId(long sessionId) {
+ this.sessionId = sessionId;
+ }
+
+ public long getValue() {
+ return sessionId;
+ }
+
+ @Override
+ public final boolean equals(Object o) {
+ if (o instanceof SessionId) {
+ SessionId that = (SessionId) o;
+
+ return Objects.equals(this.sessionId, that.sessionId);
+ }
+ return false;
+ }
+
+ @Override
+ public final int hashCode() {
+ return Objects.hash(sessionId);
+ }
+
+ @Override
+ public String toString() {
+ return MoreObjects.toStringHelper(this)
+ .add("sessionId", sessionId)
+ .toString();
+ }
+ }
/**
* Id which will be used for a System session
@@ -59,7 +100,7 @@ public interface MailboxSession {
*
* @return session id
*/
- long getSessionId();
+ SessionId getSessionId();
/**
* Is this session open?
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
----------------------------------------------------------------------
diff --git a/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java b/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
index 71d32a3..608f0a3 100644
--- a/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
+++ b/mailbox/api/src/test/java/org/apache/james/mailbox/mock/MockMailboxSession.java
@@ -32,15 +32,15 @@ public class MockMailboxSession implements MailboxSession {
private final User user;
private final Map<Object, Object> attrs = new HashMap<>();
private static final Random RANDOM = new Random();
- private final long sessionId;
+ private final SessionId sessionId;
private final SessionType type;
private boolean open;
public MockMailboxSession(String username) {
- this(username, RANDOM.nextLong());
+ this(username, SessionId.of(RANDOM.nextLong()));
}
- public MockMailboxSession(String username, long sessionId) {
+ public MockMailboxSession(String username, SessionId sessionId) {
this.user = new User() {
@Override
@@ -92,7 +92,7 @@ public class MockMailboxSession implements MailboxSession {
}
@Override
- public long getSessionId() {
+ public SessionId getSessionId() {
return sessionId;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/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 19e7755..9f4c7ae 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
@@ -28,6 +28,7 @@ import static org.mockito.Mockito.when;
import java.nio.charset.StandardCharsets;
import java.util.Date;
+import java.util.Optional;
import javax.mail.Flags;
import javax.mail.util.SharedByteArrayInputStream;
@@ -251,7 +252,7 @@ public class SpamAssassinListenerTest {
SimpleMailboxMessage message = createMessage(inboxId);
EventFactory eventFactory = new EventFactory();
AddedImpl addedEvent = eventFactory.new AddedImpl(
- MAILBOX_SESSION.getSessionId(),
+ Optional.of(MAILBOX_SESSION.getSessionId()),
MAILBOX_SESSION.getUser().getCoreUser(),
inbox,
ImmutableSortedMap.of(MessageUid.of(45), new SimpleMessageMetaData(message)),
@@ -267,7 +268,7 @@ public class SpamAssassinListenerTest {
SimpleMailboxMessage message = createMessage(mailboxId1);
EventFactory eventFactory = new EventFactory();
AddedImpl addedEvent = eventFactory.new AddedImpl(
- MAILBOX_SESSION.getSessionId(),
+ Optional.of(MAILBOX_SESSION.getSessionId()),
MAILBOX_SESSION.getUser().getCoreUser(),
mailbox1,
ImmutableSortedMap.of(MessageUid.of(45), new SimpleMessageMetaData(message)),
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
index e24f6ac..3d2101c 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMailboxSession.java
@@ -40,7 +40,7 @@ public class SimpleMailboxSession implements MailboxSession, MailboxSession.User
private final String personalSpace;
- private final long sessionId;
+ private final SessionId sessionId;
private final String userName;
@@ -57,12 +57,12 @@ public class SimpleMailboxSession implements MailboxSession, MailboxSession.User
private final SessionType type;
- public SimpleMailboxSession(long sessionId, String userName, String password,
+ public SimpleMailboxSession(SessionId sessionId, String userName, String password,
List<Locale> localePreferences, char pathSeparator, SessionType type) {
this(sessionId, userName, password, localePreferences, new ArrayList<>(), null, pathSeparator, type);
}
- public SimpleMailboxSession(long sessionId, String userName, String password,
+ public SimpleMailboxSession(SessionId sessionId, String userName, String password,
List<Locale> localePreferences, List<String> sharedSpaces, String otherUsersSpace, char pathSeparator, SessionType type) {
this.sessionId = sessionId;
this.userName = userName;
@@ -88,7 +88,7 @@ public class SimpleMailboxSession implements MailboxSession, MailboxSession.User
}
@Override
- public long getSessionId() {
+ public SessionId getSessionId() {
return sessionId;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
index 7f3d040..b978ed8 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java
@@ -357,7 +357,11 @@ public class StoreMailboxManager implements MailboxManager {
*/
protected MailboxSession createSession(String userName, String password, SessionType type) {
- return new SimpleMailboxSession(randomId(), userName, password, new ArrayList<>(), getDelimiter(), type);
+ return new SimpleMailboxSession(newSessionId(), userName, password, new ArrayList<>(), getDelimiter(), type);
+ }
+
+ private MailboxSession.SessionId newSessionId() {
+ return MailboxSession.SessionId.of(randomId());
}
/**
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/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 483101c..2b8632e 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,12 +21,14 @@ package org.apache.james.mailbox.store.event;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.SortedMap;
import org.apache.james.core.User;
import org.apache.james.core.quota.QuotaCount;
import org.apache.james.core.quota.QuotaSize;
import org.apache.james.mailbox.MailboxListener;
+import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.acl.ACLDiff;
import org.apache.james.mailbox.model.MailboxId;
@@ -53,7 +55,7 @@ public class EventFactory {
private final Map<MessageUid, MailboxMessage> availableMessages;
private final Mailbox mailbox;
- public AddedImpl(long sessionId, User user, Mailbox mailbox, SortedMap<MessageUid, MessageMetaData> uids, Map<MessageUid, MailboxMessage> availableMessages) {
+ public AddedImpl(Optional<MailboxSession.SessionId> sessionId, User user, Mailbox mailbox, SortedMap<MessageUid, MessageMetaData> uids, Map<MessageUid, MailboxMessage> availableMessages) {
super(sessionId, user, new StoreMailboxPath(mailbox), mailbox.getMailboxId());
this.added = ImmutableMap.copyOf(uids);
this.mailbox = mailbox;
@@ -84,7 +86,7 @@ public class EventFactory {
private final Map<MessageUid, MessageMetaData> uids;
private final Mailbox mailbox;
- public ExpungedImpl(long sessionId, User user, Mailbox mailbox, Map<MessageUid, MessageMetaData> uids) {
+ public ExpungedImpl(Optional<MailboxSession.SessionId> sessionId, User user, Mailbox mailbox, Map<MessageUid, MessageMetaData> uids) {
super(sessionId, user, new StoreMailboxPath(mailbox), mailbox.getMailboxId());
this.uids = ImmutableMap.copyOf(uids);
this.mailbox = mailbox;
@@ -113,7 +115,7 @@ public class EventFactory {
private final List<UpdatedFlags> uFlags;
- public FlagsUpdatedImpl(long sessionId, User user, Mailbox mailbox, List<MessageUid> uids, List<UpdatedFlags> uFlags) {
+ public FlagsUpdatedImpl(Optional<MailboxSession.SessionId> sessionId, User user, Mailbox mailbox, List<MessageUid> uids, List<UpdatedFlags> uFlags) {
super(sessionId, user, new StoreMailboxPath(mailbox), mailbox.getMailboxId());
this.uids = ImmutableList.copyOf(uids);
this.uFlags = ImmutableList.copyOf(uFlags);
@@ -140,7 +142,7 @@ public class EventFactory {
public final class MailboxDeletionImpl extends MailboxListener.MailboxDeletion implements MailboxAware {
private final Mailbox mailbox;
- public MailboxDeletionImpl(long sessionId, User user, Mailbox mailbox, QuotaRoot quotaRoot, QuotaCount deletedMessageCount, QuotaSize totalDeletedSize) {
+ public MailboxDeletionImpl(Optional<MailboxSession.SessionId> sessionId, User user, Mailbox mailbox, QuotaRoot quotaRoot, QuotaCount deletedMessageCount, QuotaSize totalDeletedSize) {
super(sessionId, user, new StoreMailboxPath(mailbox), quotaRoot, deletedMessageCount, totalDeletedSize, mailbox.getMailboxId());
this.mailbox = mailbox;
}
@@ -157,7 +159,7 @@ public class EventFactory {
private final Mailbox mailbox;
- public MailboxAddedImpl(long sessionId, User user, Mailbox mailbox) {
+ public MailboxAddedImpl(Optional<MailboxSession.SessionId> sessionId, User user, Mailbox mailbox) {
super(sessionId, user, new StoreMailboxPath(mailbox), mailbox.getMailboxId());
this.mailbox = mailbox;
}
@@ -175,7 +177,7 @@ public class EventFactory {
private final MailboxPath newPath;
private final Mailbox newMailbox;
- public MailboxRenamedEventImpl(long sessionId, User user, MailboxPath oldPath, Mailbox newMailbox) {
+ public MailboxRenamedEventImpl(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath oldPath, Mailbox newMailbox) {
super(sessionId, user, oldPath, newMailbox.getMailboxId());
this.newPath = new StoreMailboxPath(newMailbox);
this.newMailbox = newMailbox;
@@ -192,38 +194,63 @@ public class EventFactory {
}
}
- public MailboxListener.Added added(long sessionId, User user, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox, Map<MessageUid, MailboxMessage> cachedMessages) {
- return new AddedImpl(sessionId, user, mailbox, uids, cachedMessages);
+ public MailboxListener.Added added(Optional<MailboxSession.SessionId> maybeSessionId, User user, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox, Map<MessageUid, MailboxMessage> cachedMessages) {
+ return new AddedImpl(maybeSessionId, user, mailbox, uids, cachedMessages);
}
- public MailboxListener.Expunged expunged(long sessionId, User user, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
+ public MailboxListener.Added added(MailboxSession.SessionId sessionId, User user, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox, Map<MessageUid, MailboxMessage> cachedMessages) {
+ return added(Optional.ofNullable(sessionId), user, uids, mailbox, cachedMessages);
+ }
+
+ public MailboxListener.Expunged expunged(Optional<MailboxSession.SessionId> sessionId, User user, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
return new ExpungedImpl(sessionId, user, mailbox, uids);
}
- public MailboxListener.FlagsUpdated flagsUpdated(long sessionId, User user, List<MessageUid> uids, Mailbox mailbox, List<UpdatedFlags> uflags) {
+ public MailboxListener.Expunged expunged(MailboxSession.SessionId sessionId, User user, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) {
+ return expunged(Optional.ofNullable(sessionId), user, uids, mailbox);
+ }
+
+ public MailboxListener.FlagsUpdated flagsUpdated(Optional<MailboxSession.SessionId> sessionId, User user, List<MessageUid> uids, Mailbox mailbox, List<UpdatedFlags> uflags) {
return new FlagsUpdatedImpl(sessionId, user, mailbox, uids, uflags);
}
- public MailboxListener.MailboxRenamed mailboxRenamed(long sessionId, User user, MailboxPath from, Mailbox to) {
+ public MailboxListener.FlagsUpdated flagsUpdated(MailboxSession.SessionId sessionId, User user, List<MessageUid> uids, Mailbox mailbox, List<UpdatedFlags> uflags) {
+ return flagsUpdated(Optional.ofNullable(sessionId), user, uids, mailbox, uflags);
+ }
+
+ public MailboxListener.MailboxRenamed mailboxRenamed(Optional<MailboxSession.SessionId> sessionId, User user, MailboxPath from, Mailbox to) {
return new MailboxRenamedEventImpl(sessionId, user, from, to);
}
- public MailboxListener.MailboxDeletion mailboxDeleted(long sessionId, User user, Mailbox mailbox, QuotaRoot quotaRoot,
+ public MailboxListener.MailboxRenamed mailboxRenamed(MailboxSession.SessionId sessionId, User user, MailboxPath from, Mailbox to) {
+ return mailboxRenamed(Optional.ofNullable(sessionId), user, from, to);
+ }
+
+ public MailboxListener.MailboxDeletion mailboxDeleted(Optional<MailboxSession.SessionId> sessionId, User user, Mailbox mailbox, QuotaRoot quotaRoot,
QuotaCount deletedMessageCount, QuotaSize totalDeletedSize) {
return new MailboxDeletionImpl(sessionId, user, mailbox, quotaRoot, deletedMessageCount, totalDeletedSize);
}
- public MailboxListener.MailboxAdded mailboxAdded(long sessionId, User user, Mailbox mailbox) {
+ public MailboxListener.MailboxDeletion mailboxDeleted(MailboxSession.SessionId sessionId, User user, Mailbox mailbox, QuotaRoot quotaRoot,
+ QuotaCount deletedMessageCount, QuotaSize totalDeletedSize) {
+ return new MailboxDeletionImpl(Optional.ofNullable(sessionId), user, mailbox, quotaRoot, deletedMessageCount, totalDeletedSize);
+ }
+
+ public MailboxListener.MailboxAdded mailboxAdded(Optional<MailboxSession.SessionId> sessionId, User user, Mailbox mailbox) {
return new MailboxAddedImpl(sessionId, user, mailbox);
}
- public MailboxListener.MailboxACLUpdated aclUpdated(long sessionId, User user, MailboxPath mailboxPath, ACLDiff aclDiff, MailboxId mailboxId) {
- return new MailboxListener.MailboxACLUpdated(sessionId, user, mailboxPath, aclDiff, mailboxId);
+ public MailboxListener.MailboxAdded mailboxAdded(MailboxSession.SessionId sessionId, User user, Mailbox mailbox) {
+ return new MailboxAddedImpl(Optional.ofNullable(sessionId), user, mailbox);
+ }
+
+ public MailboxListener.MailboxACLUpdated aclUpdated(MailboxSession.SessionId sessionId, User user, MailboxPath mailboxPath, ACLDiff aclDiff, MailboxId mailboxId) {
+ return new MailboxListener.MailboxACLUpdated(Optional.ofNullable(sessionId), user, mailboxPath, aclDiff, mailboxId);
}
- public MessageMoveEvent moved(long sessionId, User user, MessageMoves messageMoves, Map<MessageUid, MailboxMessage> messages) {
+ public MessageMoveEvent moved(MailboxSession.SessionId sessionId, User user, MessageMoves messageMoves, Map<MessageUid, MailboxMessage> messages) {
return MessageMoveEvent.builder()
- .sessionId(sessionId)
+ .sessionId(Optional.ofNullable(sessionId))
.user(user)
.messageMoves(messageMoves)
.messages(messages)
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/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 c7df6a5..1ae5ca0 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
@@ -22,6 +22,7 @@ package org.apache.james.mailbox.store.event;
import java.time.Instant;
import java.util.List;
import java.util.Map;
+import java.util.Optional;
import java.util.SortedMap;
import javax.inject.Inject;
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MessageMoveEvent.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MessageMoveEvent.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MessageMoveEvent.java
index 3526af2..5ba1ddf 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MessageMoveEvent.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MessageMoveEvent.java
@@ -19,6 +19,7 @@
package org.apache.james.mailbox.store.event;
import java.util.Map;
+import java.util.Optional;
import org.apache.james.core.User;
import org.apache.james.mailbox.Event;
@@ -40,7 +41,7 @@ public class MessageMoveEvent implements Event {
public static class Builder {
- private long sessionId;
+ private Optional<MailboxSession.SessionId> sessionId;
private User user;
private MessageMoves messageMoves;
private ImmutableMap.Builder<MessageUid, MailboxMessage> messagesBuilder;
@@ -50,12 +51,12 @@ public class MessageMoveEvent implements Event {
}
public Builder session(MailboxSession session) {
- this.sessionId = session.getSessionId();
+ this.sessionId = Optional.ofNullable(session.getSessionId());
this.user = session.getUser().getCoreUser();
return this;
}
- public Builder sessionId(long sessionId) {
+ public Builder sessionId(Optional<MailboxSession.SessionId> sessionId) {
this.sessionId = sessionId;
return this;
}
@@ -86,13 +87,13 @@ public class MessageMoveEvent implements Event {
}
}
- private final long sessionId;
+ private final Optional<MailboxSession.SessionId> sessionId;
private final User user;
private final MessageMoves messageMoves;
private final Map<MessageUid, MailboxMessage> messages;
@VisibleForTesting
- MessageMoveEvent(long sessionId, User user, MessageMoves messageMoves, Map<MessageUid, MailboxMessage> messages) {
+ MessageMoveEvent(Optional<MailboxSession.SessionId> sessionId, User user, MessageMoves messageMoves, Map<MessageUid, MailboxMessage> messages) {
this.sessionId = sessionId;
this.user = user;
this.messageMoves = messageMoves;
@@ -114,7 +115,7 @@ public class MessageMoveEvent implements Event {
}
@Override
- public long getSessionId() {
+ public Optional<MailboxSession.SessionId> getSessionId() {
return sessionId;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/mailbox/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherTest.java
index d67b242..691ec79 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/MailboxEventDispatcherTest.java
@@ -48,7 +48,7 @@ import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableMap;
public class MailboxEventDispatcherTest {
- private static final int sessionId = 10;
+ private static final MailboxSession.SessionId SESSION_ID = MailboxSession.SessionId.of(10);
private static final int MOD_SEQ = -1;
public static final Condition<Event> INSTANCE_OF_EVENT_FLAGS_UPDATED = new Condition<Event>() {
@Override
@@ -64,7 +64,7 @@ public class MailboxEventDispatcherTest {
private MessageResult result;
private Mailbox mailbox;
- private MailboxSession session = new MockMailboxSession("test", sessionId);
+ private MailboxSession session = new MockMailboxSession("test", SESSION_ID);
@Before
public void setUp() throws Exception {
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/json/EventSerializerTest.java
deleted file mode 100644
index e69de29..0000000
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
index 31a43d4..0ebaac5 100644
--- a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
+++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java
@@ -66,7 +66,7 @@ public class SelectedMailboxImpl implements SelectedMailbox, MailboxListener {
private final ImapSession session;
- private final long sessionId;
+ private final MailboxSession.SessionId sessionId;
private final Set<MessageUid> flagUpdateUids = new TreeSet<>();
private final Flags.Flag uninterestingFlag = Flags.Flag.RECENT;
private final Set<MessageUid> expungedUids = new TreeSet<>();
@@ -329,7 +329,7 @@ public class SelectedMailboxImpl implements SelectedMailbox, MailboxListener {
private void mailboxEvent(MailboxEvent mailboxEvent) {
// Check if the event was for the mailbox we are observing
if (mailboxEvent.getMailboxId().equals(getMailboxId())) {
- final long eventSessionId = mailboxEvent.getSessionId();
+ MailboxSession.SessionId eventSessionId = extractSessionId(mailboxEvent);
if (mailboxEvent instanceof MessageEvent) {
final MessageEvent messageEvent = (MessageEvent) mailboxEvent;
if (messageEvent instanceof Added) {
@@ -407,6 +407,12 @@ public class SelectedMailboxImpl implements SelectedMailbox, MailboxListener {
}
}
+ private MailboxSession.SessionId extractSessionId(MailboxEvent mailboxEvent) {
+ return mailboxEvent.getSessionId()
+ .orElseThrow(() -> new RuntimeException(String.format("Event of of mailbox %s does not carry sessionId",
+ mailboxEvent.getMailboxId().serialize())));
+ }
+
@Override
public synchronized int msn(MessageUid uid) {
return uidMsnConverter.getMsn(uid).orElse(NO_SUCH_MESSAGE);
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
index db5e8c4..245f90f 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/CopyProcessorTest.java
@@ -57,6 +57,7 @@ import com.google.common.collect.Lists;
public class CopyProcessorTest {
public static final String TAG = "TAG";
+ private static final MailboxSession.SessionId SESSION_ID_42 = MailboxSession.SessionId.of(42L);
private CopyProcessor testee;
private ImapProcessor mockNextProcessor;
@@ -85,7 +86,7 @@ public class CopyProcessorTest {
MailboxSession.User user = mock(MailboxSession.User.class);
when(user.getUserName()).thenReturn("username");
when(mockMailboxSession.getUser()).thenReturn(user);
- when(mockMailboxSession.getSessionId()).thenReturn(42L);
+ when(mockMailboxSession.getSessionId()).thenReturn(SESSION_ID_42);
when(mockImapSession.getState()).thenReturn(ImapSessionState.SELECTED);
when(mockImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mockMailboxSession);
MailboxPath inbox = MailboxPath.inbox(mockMailboxSession);
@@ -123,7 +124,7 @@ public class CopyProcessorTest {
MailboxSession.User user = mock(MailboxSession.User.class);
when(user.getUserName()).thenReturn("username");
when(mockMailboxSession.getUser()).thenReturn(user);
- when(mockMailboxSession.getSessionId()).thenReturn(42L);
+ when(mockMailboxSession.getSessionId()).thenReturn(SESSION_ID_42);
when(mockImapSession.getState()).thenReturn(ImapSessionState.SELECTED);
when(mockImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mockMailboxSession);
MailboxPath inbox = MailboxPath.inbox(mockMailboxSession);
@@ -160,7 +161,7 @@ public class CopyProcessorTest {
MailboxSession.User user = mock(MailboxSession.User.class);
when(user.getUserName()).thenReturn("username");
when(mockMailboxSession.getUser()).thenReturn(user);
- when(mockMailboxSession.getSessionId()).thenReturn(42L);
+ when(mockMailboxSession.getSessionId()).thenReturn(SESSION_ID_42);
when(mockImapSession.getState()).thenReturn(ImapSessionState.SELECTED);
when(mockImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mockMailboxSession);
MailboxPath inbox = MailboxPath.inbox(mockMailboxSession);
@@ -191,7 +192,7 @@ public class CopyProcessorTest {
MailboxSession.User user = mock(MailboxSession.User.class);
when(user.getUserName()).thenReturn("username");
when(mockMailboxSession.getUser()).thenReturn(user);
- when(mockMailboxSession.getSessionId()).thenReturn(42L);
+ when(mockMailboxSession.getSessionId()).thenReturn(SESSION_ID_42);
when(mockImapSession.getState()).thenReturn(ImapSessionState.SELECTED);
when(mockImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mockMailboxSession);
MailboxPath inbox = MailboxPath.inbox(mockMailboxSession);
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
----------------------------------------------------------------------
diff --git a/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java b/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
index fd9785b..38fb706 100644
--- a/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
+++ b/protocols/imap/src/test/java/org/apache/james/imap/processor/MoveProcessorTest.java
@@ -60,6 +60,7 @@ import com.google.common.collect.Lists;
public class MoveProcessorTest {
public static final String TAG = "TAG";
+ private static final MailboxSession.SessionId SESSION_ID_42 = MailboxSession.SessionId.of(42L);
private MoveProcessor testee;
private ImapProcessor mockNextProcessor;
@@ -102,7 +103,7 @@ public class MoveProcessorTest {
MailboxSession.User user = mock(MailboxSession.User.class);
when(user.getUserName()).thenReturn("username");
when(mockMailboxSession.getUser()).thenReturn(user);
- when(mockMailboxSession.getSessionId()).thenReturn(42L);
+ when(mockMailboxSession.getSessionId()).thenReturn(SESSION_ID_42);
when(mockImapSession.getState()).thenReturn(ImapSessionState.SELECTED);
when(mockImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mockMailboxSession);
MailboxPath inbox = MailboxPath.inbox(mockMailboxSession);
@@ -142,7 +143,7 @@ public class MoveProcessorTest {
MailboxSession.User user = mock(MailboxSession.User.class);
when(user.getUserName()).thenReturn("username");
when(mockMailboxSession.getUser()).thenReturn(user);
- when(mockMailboxSession.getSessionId()).thenReturn(42L);
+ when(mockMailboxSession.getSessionId()).thenReturn(SESSION_ID_42);
when(mockImapSession.getState()).thenReturn(ImapSessionState.SELECTED);
when(mockImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mockMailboxSession);
MailboxPath inbox = MailboxPath.inbox(mockMailboxSession);
@@ -180,7 +181,7 @@ public class MoveProcessorTest {
MailboxSession.User user = mock(MailboxSession.User.class);
when(user.getUserName()).thenReturn("username");
when(mockMailboxSession.getUser()).thenReturn(user);
- when(mockMailboxSession.getSessionId()).thenReturn(42L);
+ when(mockMailboxSession.getSessionId()).thenReturn(SESSION_ID_42);
when(mockImapSession.getState()).thenReturn(ImapSessionState.SELECTED);
when(mockImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mockMailboxSession);
MailboxPath inbox = MailboxPath.inbox(mockMailboxSession);
@@ -211,7 +212,7 @@ public class MoveProcessorTest {
MailboxSession.User user = mock(MailboxSession.User.class);
when(user.getUserName()).thenReturn("username");
when(mockMailboxSession.getUser()).thenReturn(user);
- when(mockMailboxSession.getSessionId()).thenReturn(42L);
+ when(mockMailboxSession.getSessionId()).thenReturn(SESSION_ID_42);
when(mockImapSession.getState()).thenReturn(ImapSessionState.SELECTED);
when(mockImapSession.getAttribute(ImapSessionUtils.MAILBOX_SESSION_ATTRIBUTE_SESSION_KEY)).thenReturn(mockMailboxSession);
MailboxPath inbox = MailboxPath.inbox(mockMailboxSession);
http://git-wip-us.apache.org/repos/asf/james-project/blob/713c8240/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 d05ccf3..dfb1797 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,6 +26,7 @@ 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;
@@ -166,8 +167,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 SimpleMessageMetaData(EMITTED_EVENT_UID, MOD_SEQ, new Flags(), SIZE, new Date(), new DefaultMessageId()));
- mailboxListener.event(new EventFactory().added(0L, mock(User.class), result, mailbox, ImmutableMap.of()));
+ mailboxListener.event(new EventFactory().added(MailboxSession.SessionId.of(random.nextLong()),
+ mock(User.class), result, mailbox, ImmutableMap.of()));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org