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