JAMES-1981 Don't fire event when no uid on expunge or flags update
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/699e9ffd Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/699e9ffd Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/699e9ffd Branch: refs/heads/master Commit: 699e9ffd921db84575b0fdedcf5fdb5dee06a8fd Parents: ec191b4 Author: Antoine Duprat <[email protected]> Authored: Wed Mar 29 14:23:36 2017 +0200 Committer: benwa <[email protected]> Committed: Thu Mar 30 08:21:04 2017 +0700 ---------------------------------------------------------------------- .../store/event/MailboxEventDispatcher.java | 8 +++++-- .../store/MailboxEventDispatcherTest.java | 22 ++++++++++++++++++++ 2 files changed, 28 insertions(+), 2 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/699e9ffd/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 e6fb0d5..0d64ed9 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 @@ -89,7 +89,9 @@ public class MailboxEventDispatcher { * @param mailbox The mailbox */ public void expunged(MailboxSession session, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) { - listener.event(eventFactory.expunged(session, uids, mailbox)); + if (!uids.isEmpty()) { + listener.event(eventFactory.expunged(session, uids, mailbox)); + } } public void expunged(MailboxSession session, MessageMetaData messageMetaData, Mailbox mailbox) { @@ -104,7 +106,9 @@ public class MailboxEventDispatcher { * registered MailboxListener will get triggered then */ public void flagsUpdated(MailboxSession session, List<MessageUid> uids, Mailbox mailbox, List<UpdatedFlags> uflags) { - listener.event(eventFactory.flagsUpdated(session, uids, mailbox, uflags)); + if (!uids.isEmpty()) { + listener.event(eventFactory.flagsUpdated(session, uids, mailbox, uflags)); + } } public void flagsUpdated(MailboxSession session, MessageUid uid, Mailbox mailbox, UpdatedFlags uflags) { http://git-wip-us.apache.org/repos/asf/james-project/blob/699e9ffd/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 179d2f6..52d99be 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 @@ -24,6 +24,7 @@ import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; import javax.mail.Flags; +import javax.mail.Flags.Flag; import org.apache.james.mailbox.FlagsBuilder; import org.apache.james.mailbox.MailboxListener; @@ -32,6 +33,7 @@ import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.mock.MockMailboxSession; import org.apache.james.mailbox.model.MailboxConstants; import org.apache.james.mailbox.model.MailboxPath; +import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.MessageResult; import org.apache.james.mailbox.model.TestId; import org.apache.james.mailbox.model.UpdatedFlags; @@ -44,6 +46,7 @@ import org.junit.Before; import org.junit.Test; import com.google.common.collect.ImmutableList; +import com.google.common.collect.ImmutableMap; public class MailboxEventDispatcherTest { private static final int sessionId = 10; @@ -365,4 +368,23 @@ public class MailboxEventDispatcherTest { assertThat(event.getUpdatedFlags().get(0).systemFlagIterator()) .containsOnly(Flags.Flag.SEEN, Flags.Flag.RECENT, Flags.Flag.ANSWERED); } + + @Test + public void expungedShouldNotFireEventWhenEmptyMap() { + dispatcher.expunged(session, ImmutableMap.<MessageUid, MessageMetaData> of(), mailbox); + assertThat(collector.getEvents()).isEmpty(); + } + + @Test + public void flagsUpdatedShouldNotFireEventWhenEmptyIdList() { + UpdatedFlags updatedFlags = UpdatedFlags.builder() + .uid(MessageUid.of(1)) + .modSeq(2) + .oldFlags(new Flags(Flag.RECENT)) + .newFlags(new Flags(Flag.ANSWERED)) + .build(); + + dispatcher.flagsUpdated(session, ImmutableList.<MessageUid> of(), mailbox, ImmutableList.of(updatedFlags)); + assertThat(collector.getEvents()).isEmpty(); + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
