This is an automated email from the ASF dual-hosted git repository. btellier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit bf4ad97b144be5e8c53cd43d46e188e549b9b18b Author: Matthieu Baechler <matth...@apache.org> AuthorDate: Tue Jun 16 17:02:49 2020 +0200 JAMES-3177 refactor to encapsulate applicable flag logic --- .../imap/processor/base/SelectedMailboxImpl.java | 44 +++++++++++----------- 1 file changed, 21 insertions(+), 23 deletions(-) diff --git a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java index 88f1ece..6600b84 100644 --- a/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java +++ b/protocols/imap/src/main/java/org/apache/james/imap/processor/base/SelectedMailboxImpl.java @@ -34,6 +34,7 @@ import javax.mail.Flags.Flag; import org.apache.james.imap.api.process.ImapSession; import org.apache.james.imap.api.process.SelectedMailbox; +import org.apache.james.mailbox.FlagsBuilder; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MessageManager; @@ -89,8 +90,17 @@ public class SelectedMailboxImpl implements SelectedMailbox, MailboxListener { return updated; } - public ApplicableFlags update(boolean applicableFlagsChanged) { - return new ApplicableFlags(flags, applicableFlagsChanged); + public ApplicableFlags updateWithNewFlags(Flags newFlags) { + Flags updatedFlags = flags(); + int size = updatedFlags.getUserFlags().length; + + updatedFlags.add(newFlags); + // \RECENT is not a applicable flag in imap so remove it + // from the list + updatedFlags.remove(Flag.RECENT); + + boolean applicableFlagsChanged = size < updatedFlags.getUserFlags().length; + return new ApplicableFlags(updatedFlags, applicableFlagsChanged); } } @@ -415,28 +425,16 @@ public class SelectedMailboxImpl implements SelectedMailbox, MailboxListener { } @VisibleForTesting - static ApplicableFlags updateApplicableFlags(ApplicableFlags applicableFlags, FlagsUpdated messageEvent) { - Flags updatedFlags = applicableFlags.flags(); - int size = updatedFlags.getUserFlags().length; - FlagsUpdated updatedF = messageEvent; - List<UpdatedFlags> flags = updatedF.getUpdatedFlags(); - - for (UpdatedFlags flag : flags) { - updatedFlags.add(flag.getNewFlags()); - - } - - // \RECENT is not a applicable flag in imap so remove it - // from the list - updatedFlags.remove(Flag.RECENT); + static ApplicableFlags updateApplicableFlags(ApplicableFlags applicableFlags, FlagsUpdated flagsUpdated) { + Flags updatedFlags = mergeAllNewFlags(flagsUpdated); + return applicableFlags.updateWithNewFlags(updatedFlags); + } - boolean applicableFlagsChanged; - if (size < updatedFlags.getUserFlags().length) { - applicableFlagsChanged = true; - } else { - applicableFlagsChanged = false; - } - return ApplicableFlags.from(updatedFlags).update(applicableFlagsChanged); + private static Flags mergeAllNewFlags(FlagsUpdated flagsUpdated) { + List<UpdatedFlags> flags = flagsUpdated.getUpdatedFlags(); + FlagsBuilder builder = FlagsBuilder.builder(); + flags.stream().map(UpdatedFlags::getNewFlags).forEach(builder::add); + return builder.build(); } @Override --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org