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 <[email protected]> Authored: Mon Dec 17 17:23:24 2018 +0700 Committer: Benoit Tellier <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
