JAMES-2257 Message update using old keywords reset DELETED and RECENT flag
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/43578898 Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/43578898 Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/43578898 Branch: refs/heads/master Commit: 4357889865a96fed7ab449fda32587efdb123256 Parents: 2f5f9f8 Author: benwa <btell...@linagora.com> Authored: Tue Dec 12 10:21:58 2017 +0700 Committer: benwa <btell...@linagora.com> Committed: Fri Dec 15 14:03:32 2017 +0700 ---------------------------------------------------------------------- .../org/apache/james/jmap/model/OldKeyword.java | 9 ++++++ .../apache/james/jmap/model/OldKeywordTest.java | 29 ++++++++++++++++++++ 2 files changed, 38 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/43578898/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/OldKeyword.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/OldKeyword.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/OldKeyword.java index f205bb9..151a8f1 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/OldKeyword.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/model/OldKeyword.java @@ -19,6 +19,7 @@ package org.apache.james.jmap.model; +import java.util.Arrays; import java.util.Optional; import javax.mail.Flags; @@ -160,6 +161,14 @@ public class OldKeyword { if (shouldMessageBeMarkSeen) { newStateFlags.add(Flags.Flag.SEEN); } + Arrays.stream(currentFlags.getUserFlags()) + .forEach(newStateFlags::add); + if (currentFlags.contains(Flags.Flag.RECENT)) { + newStateFlags.add(Flags.Flag.RECENT); + } + if (currentFlags.contains(Flags.Flag.DELETED)) { + newStateFlags.add(Flags.Flag.DELETED); + } return newStateFlags; } http://git-wip-us.apache.org/repos/asf/james-project/blob/43578898/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/OldKeywordTest.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/OldKeywordTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/OldKeywordTest.java index 9b4d8b3..bcc079f 100644 --- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/OldKeywordTest.java +++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/OldKeywordTest.java @@ -26,6 +26,7 @@ import java.util.Optional; import javax.mail.Flags; import javax.mail.Flags.Flag; +import org.apache.james.mailbox.FlagsBuilder; import org.junit.Test; import nl.jqno.equalsverifier.EqualsVerifier; @@ -242,4 +243,32 @@ public class OldKeywordTest { assertThat(testee.get().applyToState(new Flags(Flag.SEEN))).isEqualTo(new Flags(Flag.SEEN)); } + + @Test + public void applyStateShouldPreserveRecentFlag() { + Optional<OldKeyword> testee = OldKeyword.builder() + .isUnread(Optional.of(false)) + .isFlagged(Optional.empty()) + .isAnswered(Optional.empty()) + .isDraft(Optional.empty()) + .isForwarded(Optional.empty()) + .computeOldKeyword(); + + assertThat(testee.get().applyToState(new Flags(Flag.RECENT))) + .isEqualTo(new FlagsBuilder().add(Flag.RECENT, Flag.SEEN).build()); + } + + @Test + public void applyStateShouldDeletedFlag() { + Optional<OldKeyword> testee = OldKeyword.builder() + .isUnread(Optional.of(false)) + .isFlagged(Optional.empty()) + .isAnswered(Optional.empty()) + .isDraft(Optional.empty()) + .isForwarded(Optional.empty()) + .computeOldKeyword(); + + assertThat(testee.get().applyToState(new Flags(Flag.DELETED))) + .isEqualTo(new FlagsBuilder().add(Flag.DELETED, Flag.SEEN).build()); + } } \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org