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/18 08:00:55 UTC
[12/13] james-project git commit: MAILBOX-363 MessageMoveEvent should
not reference full messages
MAILBOX-363 MessageMoveEvent should not reference full messages
It makes more sens to reference only their MessageId
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/9cf3186f
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/9cf3186f
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/9cf3186f
Branch: refs/heads/master
Commit: 9cf3186fe24bde89313593c8b0e387b966ff871a
Parents: d1fdf8b
Author: Benoit Tellier <bt...@linagora.com>
Authored: Mon Dec 17 17:23:24 2018 +0700
Committer: Benoit Tellier <bt...@linagora.com>
Committed: Tue Dec 18 14:49:31 2018 +0700
----------------------------------------------------------------------
.../spamassassin/SpamAssassinListener.java | 14 +++---
.../spamassassin/SpamAssassinListenerTest.java | 49 ++++++++------------
.../mailbox/store/StoreMessageIdManager.java | 3 +-
.../mailbox/store/StoreMessageManager.java | 13 +++---
.../james/mailbox/store/event/EventFactory.java | 7 +--
.../store/event/MailboxEventDispatcher.java | 7 ++-
.../mailbox/store/event/MessageMoveEvent.java | 41 ++++++++--------
.../store/event/MessageMoveEventTest.java | 21 ++-------
8 files changed, 69 insertions(+), 86 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/9cf3186f/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java
----------------------------------------------------------------------
diff --git a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java
index 3c5e937..56b512c 100644
--- a/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java
+++ b/mailbox/plugin/spamassassin/src/main/java/org/apache/james/mailbox/spamassassin/SpamAssassinListener.java
@@ -83,7 +83,7 @@ public class SpamAssassinListener implements SpamEventListener {
try {
MailboxSession session = mailboxManager.createSystemSession(getClass().getCanonicalName());
if (event instanceof MessageMoveEvent) {
- handleMessageMove(event, (MessageMoveEvent) event);
+ handleMessageMove(event, session, (MessageMoveEvent) event);
}
if (event instanceof Added) {
handleAdded(event, session, (Added) event);
@@ -107,14 +107,14 @@ public class SpamAssassinListener implements SpamEventListener {
}
}
- private void handleMessageMove(Event event, MessageMoveEvent messageMoveEvent) {
+ private void handleMessageMove(Event event, MailboxSession session, MessageMoveEvent messageMoveEvent) throws MailboxException {
if (isMessageMovedToSpamMailbox(messageMoveEvent)) {
LOGGER.debug("Spam event detected");
- ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent);
+ ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent, session);
spamAssassin.learnSpam(messages, event.getUser());
}
if (isMessageMovedOutOfSpamMailbox(messageMoveEvent)) {
- ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent);
+ ImmutableList<InputStream> messages = retrieveMessages(messageMoveEvent, session);
spamAssassin.learnHam(messages, event.getUser());
}
}
@@ -138,9 +138,9 @@ public class SpamAssassinListener implements SpamEventListener {
}
}
- private ImmutableList<InputStream> retrieveMessages(MessageMoveEvent messageMoveEvent) {
- return messageMoveEvent.getMessages()
- .values()
+ private ImmutableList<InputStream> retrieveMessages(MessageMoveEvent messageMoveEvent, MailboxSession session) throws MailboxException {
+ return mapperFactory.getMessageIdMapper(session)
+ .find(messageMoveEvent.getMessageIds(), MessageMapper.FetchType.Full)
.stream()
.map(Throwing.function(Message::getFullContent))
.collect(Guavate.toImmutableList());
http://git-wip-us.apache.org/repos/asf/james-project/blob/9cf3186f/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 3fc4cd6..13d1516 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
@@ -59,7 +59,6 @@ import org.apache.james.mailbox.store.mail.model.impl.SimpleMailboxMessage;
import org.junit.Before;
import org.junit.Test;
-import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSortedMap;
public class SpamAssassinListenerTest {
@@ -68,6 +67,7 @@ public class SpamAssassinListenerTest {
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;
private SpamAssassinListener listener;
@@ -105,60 +105,56 @@ public class SpamAssassinListenerTest {
}
@Test
- public void isEventOnSpamMailboxShouldReturnFalseWhenMessageIsMovedToANonSpamMailbox() throws Exception {
+ public void isEventOnSpamMailboxShouldReturnFalseWhenMessageIsMovedToANonSpamMailbox() {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(mailboxId1)
.targetMailboxIds(mailboxId2)
.build())
- .messages(ImmutableMap.of(UID,
- createMessage(mailbox2)))
+ .messageId(MESSAGE_ID)
.build();
assertThat(listener.isMessageMovedToSpamMailbox(messageMoveEvent)).isFalse();
}
@Test
- public void isEventOnSpamMailboxShouldReturnTrueWhenMailboxIsSpam() throws Exception {
+ public void isEventOnSpamMailboxShouldReturnTrueWhenMailboxIsSpam() {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(mailboxId1)
.targetMailboxIds(spamMailboxId)
.build())
- .messages(ImmutableMap.of(UID,
- createMessage(mailbox1)))
+ .messageId(MESSAGE_ID)
.build();
assertThat(listener.isMessageMovedToSpamMailbox(messageMoveEvent)).isTrue();
}
@Test
- public void isEventOnSpamMailboxShouldReturnFalseWhenMailboxIsSpamOtherCase() throws Exception {
+ public void isEventOnSpamMailboxShouldReturnFalseWhenMailboxIsSpamOtherCase() {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(mailboxId1)
.targetMailboxIds(spamCapitalMailboxId)
.build())
- .messages(ImmutableMap.of(UID,
- createMessage(mailbox1)))
+ .messageId(MESSAGE_ID)
.build();
assertThat(listener.isMessageMovedToSpamMailbox(messageMoveEvent)).isFalse();
}
@Test
- public void eventShouldCallSpamAssassinSpamLearningWhenTheEventMatches() throws Exception {
+ public void eventShouldCallSpamAssassinSpamLearningWhenTheEventMatches() {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(mailboxId1)
.targetMailboxIds(spamMailboxId)
.build())
- .messages(ImmutableMap.of(UID,
- createMessage(mailbox1)))
+ .messageId(MESSAGE_ID)
.build();
listener.event(messageMoveEvent);
@@ -167,75 +163,70 @@ public class SpamAssassinListenerTest {
}
@Test
- public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedBetweenNonSpamMailboxes() throws Exception {
+ public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedBetweenNonSpamMailboxes() {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(mailboxId1)
.targetMailboxIds(mailboxId2)
.build())
- .messages(ImmutableMap.of(UID,
- createMessage(mailbox2)))
+ .messageId(MESSAGE_ID)
.build();
assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isFalse();
}
@Test
- public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedOutOfCapitalSpamMailbox() throws Exception {
+ public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedOutOfCapitalSpamMailbox() {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(spamCapitalMailboxId)
.targetMailboxIds(mailboxId2)
.build())
- .messages(ImmutableMap.of(UID,
- createMessage(mailbox2)))
+ .messageId(MESSAGE_ID)
.build();
assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isFalse();
}
@Test
- public void isMessageMovedOutOfSpamMailboxShouldReturnTrueWhenMessageMovedOutOfSpamMailbox() throws Exception {
+ public void isMessageMovedOutOfSpamMailboxShouldReturnTrueWhenMessageMovedOutOfSpamMailbox() {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(spamMailboxId)
.targetMailboxIds(mailboxId2)
.build())
- .messages(ImmutableMap.of(UID,
- createMessage(mailbox2)))
+ .messageId(MESSAGE_ID)
.build();
assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isTrue();
}
@Test
- public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedToTrash() throws Exception {
+ public void isMessageMovedOutOfSpamMailboxShouldReturnFalseWhenMessageMovedToTrash() {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(spamMailboxId)
.targetMailboxIds(trashMailboxId)
.build())
- .messages(ImmutableMap.of(UID,
- createMessage(mailbox2)))
+ .messageId(MESSAGE_ID)
.build();
assertThat(listener.isMessageMovedOutOfSpamMailbox(messageMoveEvent)).isFalse();
}
@Test
- public void eventShouldCallSpamAssassinHamLearningWhenTheEventMatches() throws Exception {
+ public void eventShouldCallSpamAssassinHamLearningWhenTheEventMatches() {
MessageMoveEvent messageMoveEvent = MessageMoveEvent.builder()
.session(MAILBOX_SESSION)
.messageMoves(MessageMoves.builder()
.previousMailboxIds(spamMailboxId)
.targetMailboxIds(mailboxId1)
.build())
- .messages(ImmutableMap.of(UID,
- createMessage(mailbox1)))
+ .messageId(MESSAGE_ID)
.build();
listener.event(messageMoveEvent);
@@ -274,7 +265,7 @@ public class SpamAssassinListenerTest {
int size = 45;
int bodyStartOctet = 25;
byte[] content = "Subject: test\r\n\r\nBody\r\n".getBytes(StandardCharsets.UTF_8);
- SimpleMailboxMessage message = new SimpleMailboxMessage(TestMessageId.of(58), new Date(),
+ SimpleMailboxMessage message = new SimpleMailboxMessage(MESSAGE_ID, new Date(),
size, bodyStartOctet, new SharedByteArrayInputStream(content), new Flags(), new PropertyBuilder(),
mailbox.getMailboxId());
MessageMetaData messageMetaData = mapperFactory.createMessageMapper(null).add(mailbox, message);
http://git-wip-us.apache.org/repos/asf/james-project/blob/9cf3186f/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 0dfda8d..23db5b5 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -70,7 +70,6 @@ import com.github.fge.lambdas.Throwing;
import com.github.fge.lambdas.functions.ThrowingFunction;
import com.github.steveash.guavate.Guavate;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Sets;
@@ -281,7 +280,7 @@ public class StoreMessageIdManager implements MessageIdManager {
addMessageToMailboxes(mailboxMessage, messageMoves.addedMailboxIds(), mailboxSession);
removeMessageFromMailboxes(mailboxMessage, messageMoves.removedMailboxIds(), mailboxSession);
- dispatcher.moved(mailboxSession, messageMoves, ImmutableMap.of(mailboxMessage.getUid(), mailboxMessage));
+ dispatcher.moved(mailboxSession, messageMoves, ImmutableList.of(mailboxMessage.getMessageId()));
}
private void removeMessageFromMailboxes(MailboxMessage message, Set<MailboxId> mailboxesToRemove, MailboxSession mailboxSession) throws MailboxException {
http://git-wip-us.apache.org/repos/asf/james-project/blob/9cf3186f/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
index 5e98042..58f0d08 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
@@ -90,7 +90,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.common.collect.ImmutableList;
-import com.google.common.collect.ImmutableMap;
/**
* Base class for {@link org.apache.james.mailbox.MessageManager}
@@ -735,9 +734,9 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
SortedMap<MessageUid, MessageMetaData> copiedUids = collectMetadata(to.copy(originalRows, session));
- ImmutableMap.Builder<MessageUid, MailboxMessage> messagesMap = ImmutableMap.builder();
+ ImmutableList.Builder<MessageId> messageIds = ImmutableList.builder();
for (MailboxMessage message : originalRows.getEntriesSeen()) {
- messagesMap.put(message.getUid(), immutableMailboxMessageFactory.from(to.getMailboxEntity().getMailboxId(), message));
+ messageIds.add(message.getMessageId());
}
dispatcher.added(session, copiedUids, to.getMailboxEntity());
dispatcher.moved(session,
@@ -745,7 +744,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
.previousMailboxIds(getMailboxEntity().getMailboxId())
.targetMailboxIds(to.getMailboxEntity().getMailboxId(), getMailboxEntity().getMailboxId())
.build(),
- messagesMap.build());
+ messageIds.build());
return copiedUids;
}
@@ -755,9 +754,9 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
MoveResult moveResult = to.move(originalRows, session);
SortedMap<MessageUid, MessageMetaData> moveUids = collectMetadata(moveResult.getMovedMessages());
- ImmutableMap.Builder<MessageUid, MailboxMessage> messagesMap = ImmutableMap.builder();
+ ImmutableList.Builder<MessageId> messageIds = ImmutableList.builder();
for (MailboxMessage message : originalRows.getEntriesSeen()) {
- messagesMap.put(message.getUid(), immutableMailboxMessageFactory.from(to.getMailboxEntity().getMailboxId(), message));
+ messageIds.add(message.getMessageId());
}
dispatcher.added(session, moveUids, to.getMailboxEntity());
dispatcher.expunged(session, collectMetadata(moveResult.getOriginalMessages()), getMailboxEntity());
@@ -766,7 +765,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana
.previousMailboxIds(getMailboxEntity().getMailboxId())
.targetMailboxIds(to.getMailboxEntity().getMailboxId())
.build(),
- messagesMap.build());
+ messageIds.build());
return moveUids;
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/9cf3186f/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 51106d9..fca9602 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
@@ -19,6 +19,7 @@
package org.apache.james.mailbox.store.event;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
@@ -32,12 +33,12 @@ import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.acl.ACLDiff;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageMetaData;
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;
public class EventFactory {
@@ -99,11 +100,11 @@ public class EventFactory {
return new MailboxListener.MailboxACLUpdated(sessionId, user, mailboxPath, aclDiff, mailboxId);
}
- public MessageMoveEvent moved(MailboxSession session, MessageMoves messageMoves, Map<MessageUid, MailboxMessage> messages) {
+ public MessageMoveEvent moved(MailboxSession session, MessageMoves messageMoves, Collection<MessageId> messageIds) {
return MessageMoveEvent.builder()
.user(session.getUser())
.messageMoves(messageMoves)
- .messages(messages)
+ .messageId(messageIds)
.build();
}
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/9cf3186f/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 2d6afd9..4721aa8 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
@@ -20,6 +20,7 @@
package org.apache.james.mailbox.store.event;
import java.time.Instant;
+import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.SortedMap;
@@ -36,6 +37,7 @@ import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.acl.ACLDiff;
import org.apache.james.mailbox.model.MailboxId;
import org.apache.james.mailbox.model.MailboxPath;
+import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageMetaData;
import org.apache.james.mailbox.model.MessageMoves;
import org.apache.james.mailbox.model.Quota;
@@ -163,8 +165,9 @@ public class MailboxEventDispatcher {
listener.event(eventFactory.aclUpdated(session, mailboxPath, aclDiff, mailboxId));
}
- public void moved(MailboxSession session, MessageMoves messageMoves, Map<MessageUid, MailboxMessage> messages) {
- MessageMoveEvent moveEvent = eventFactory.moved(session, messageMoves, messages);
+ public void moved(MailboxSession session, MessageMoves messageMoves, Collection<MessageId> messageIds) {
+ MessageMoveEvent moveEvent = eventFactory.moved(session, messageMoves, messageIds);
+
if (!moveEvent.isNoop()) {
listener.event(moveEvent);
}
http://git-wip-us.apache.org/repos/asf/james-project/blob/9cf3186f/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 4fb7be4..4b73263 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
@@ -18,19 +18,18 @@
****************************************************************/
package org.apache.james.mailbox.store.event;
-import java.util.Map;
+import java.util.Collection;
import org.apache.james.core.User;
import org.apache.james.mailbox.Event;
import org.apache.james.mailbox.MailboxSession;
-import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.model.MailboxId;
+import org.apache.james.mailbox.model.MessageId;
import org.apache.james.mailbox.model.MessageMoves;
-import org.apache.james.mailbox.store.mail.model.MailboxMessage;
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Preconditions;
-import com.google.common.collect.ImmutableMap;
+import com.google.common.collect.ImmutableList;
public class MessageMoveEvent implements Event {
@@ -39,13 +38,12 @@ public class MessageMoveEvent implements Event {
}
public static class Builder {
-
+ private ImmutableList.Builder<MessageId> messageIds;
private User user;
private MessageMoves messageMoves;
- private ImmutableMap.Builder<MessageUid, MailboxMessage> messagesBuilder;
private Builder() {
- messagesBuilder = ImmutableMap.builder();
+ messageIds = ImmutableList.builder();
}
public Builder session(MailboxSession session) {
@@ -63,8 +61,13 @@ public class MessageMoveEvent implements Event {
return this;
}
- public Builder messages(Map<MessageUid, MailboxMessage> messages) {
- this.messagesBuilder.putAll(messages);
+ public Builder messageId(MessageId messageId) {
+ this.messageIds.add(messageId);
+ return this;
+ }
+
+ public Builder messageId(Collection<MessageId> messageIds) {
+ this.messageIds.addAll(messageIds);
return this;
}
@@ -72,25 +75,27 @@ public class MessageMoveEvent implements Event {
Preconditions.checkNotNull(user, "'user' is mandatory");
Preconditions.checkNotNull(messageMoves, "'messageMoves' is mandatory");
- ImmutableMap<MessageUid, MailboxMessage> messages = messagesBuilder.build();
-
- return new MessageMoveEvent(user, messageMoves, messages);
+ return new MessageMoveEvent(user, messageMoves, messageIds.build());
}
}
private final User user;
private final MessageMoves messageMoves;
- private final Map<MessageUid, MailboxMessage> messages;
+ private final Collection<MessageId> messageIds;
@VisibleForTesting
- MessageMoveEvent(User user, MessageMoves messageMoves, Map<MessageUid, MailboxMessage> messages) {
+ MessageMoveEvent(User user, MessageMoves messageMoves, Collection<MessageId> messageIds) {
this.user = user;
this.messageMoves = messageMoves;
- this.messages = messages;
+ this.messageIds = messageIds;
}
public boolean isNoop() {
- return messages.isEmpty();
+ return messageIds.isEmpty();
+ }
+
+ public Collection<MessageId> getMessageIds() {
+ return messageIds;
}
@Override
@@ -102,10 +107,6 @@ public class MessageMoveEvent implements Event {
return messageMoves;
}
- public Map<MessageUid, MailboxMessage> getMessages() {
- return messages;
- }
-
public boolean isMoveTo(MailboxId mailboxId) {
return messageMoves.addedMailboxIds()
.contains(mailboxId);
http://git-wip-us.apache.org/repos/asf/james-project/blob/9cf3186f/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MessageMoveEventTest.java
----------------------------------------------------------------------
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MessageMoveEventTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MessageMoveEventTest.java
index 5d4a68f..e2737ed 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MessageMoveEventTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/event/MessageMoveEventTest.java
@@ -20,23 +20,17 @@ package org.apache.james.mailbox.store.event;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import static org.mockito.Mockito.mock;
-
-import java.util.Map;
import org.apache.james.core.User;
import org.apache.james.mailbox.MailboxSession;
import org.apache.james.mailbox.MailboxSessionUtil;
-import org.apache.james.mailbox.MessageUid;
import org.apache.james.mailbox.model.MessageMoves;
import org.apache.james.mailbox.model.TestId;
-import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.apache.james.mailbox.model.TestMessageId;
import org.assertj.core.api.JUnitSoftAssertions;
import org.junit.Rule;
import org.junit.Test;
-import com.google.common.collect.ImmutableMap;
-
public class MessageMoveEventTest {
@Rule
@@ -76,12 +70,11 @@ public class MessageMoveEventTest {
.targetMailboxIds(TestId.of(2))
.previousMailboxIds(TestId.of(1))
.build();
- Map<MessageUid, MailboxMessage> messages = ImmutableMap.of(MessageUid.of(1), mock(MailboxMessage.class));
MessageMoveEvent event = MessageMoveEvent.builder()
.session(session)
.messageMoves(messageMoves)
- .messages(messages)
+ .messageId(TestMessageId.of(35))
.build();
assertThat(event.isNoop()).isFalse();
@@ -95,17 +88,17 @@ public class MessageMoveEventTest {
.targetMailboxIds(TestId.of(2))
.previousMailboxIds(TestId.of(1))
.build();
- Map<MessageUid, MailboxMessage> messages = ImmutableMap.of(MessageUid.of(1), mock(MailboxMessage.class));
+ TestMessageId messageId = TestMessageId.of(45);
MessageMoveEvent event = MessageMoveEvent.builder()
.session(session)
.messageMoves(messageMoves)
- .messages(messages)
+ .messageId(messageId)
.build();
softly.assertThat(event.getUser()).isEqualTo(User.fromUsername(username));
softly.assertThat(event.getMessageMoves()).isEqualTo(messageMoves);
- softly.assertThat(event.getMessages()).isEqualTo(messages);
+ softly.assertThat(event.getMessageIds()).containsExactly(messageId);
}
@Test
@@ -116,7 +109,6 @@ public class MessageMoveEventTest {
.previousMailboxIds(TestId.of(1))
.targetMailboxIds(TestId.of(2))
.build())
- .messages(ImmutableMap.of(MessageUid.of(1), mock(MailboxMessage.class)))
.build();
assertThat(event.isMoveTo(TestId.of(123))).isFalse();
@@ -131,7 +123,6 @@ public class MessageMoveEventTest {
.previousMailboxIds(TestId.of(1))
.targetMailboxIds(TestId.of(2), mailboxId)
.build())
- .messages(ImmutableMap.of(MessageUid.of(1), mock(MailboxMessage.class)))
.build();
assertThat(event.isMoveTo(mailboxId)).isTrue();
@@ -145,7 +136,6 @@ public class MessageMoveEventTest {
.previousMailboxIds(TestId.of(1))
.targetMailboxIds(TestId.of(2))
.build())
- .messages(ImmutableMap.of(MessageUid.of(1), mock(MailboxMessage.class)))
.build();
assertThat(event.isMoveFrom(TestId.of(123))).isFalse();
@@ -160,7 +150,6 @@ public class MessageMoveEventTest {
.previousMailboxIds(TestId.of(1), mailboxId)
.targetMailboxIds(TestId.of(2))
.build())
- .messages(ImmutableMap.of(MessageUid.of(1), mock(MailboxMessage.class)))
.build();
assertThat(event.isMoveFrom(mailboxId)).isTrue();
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org