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