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 2020/07/23 07:53:17 UTC

[james-project] 06/18: JAMES-3177 refactor to encapsulate applicable flag logic

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 <ma...@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-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org