JAMES-2342 Introduce a builder for MessageMoves

Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/fdc0f83e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/fdc0f83e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/fdc0f83e

Branch: refs/heads/master
Commit: fdc0f83ea1b2e9195458878ce05994f3625341cd
Parents: a986c5e
Author: benwa <[email protected]>
Authored: Wed Mar 7 14:49:17 2018 +0700
Committer: Antoine Duprat <[email protected]>
Committed: Thu Mar 8 11:01:22 2018 +0100

----------------------------------------------------------------------
 .../james/mailbox/model/MessageMoves.java       | 42 +++++++++++++++++++-
 .../mailbox/store/StoreMessageIdManager.java    | 10 ++++-
 2 files changed, 49 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/fdc0f83e/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMoves.java
----------------------------------------------------------------------
diff --git 
a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMoves.java 
b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMoves.java
index db67afc..38e387a 100644
--- a/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMoves.java
+++ b/mailbox/api/src/main/java/org/apache/james/mailbox/model/MessageMoves.java
@@ -18,6 +18,7 @@
  ****************************************************************/
 package org.apache.james.mailbox.model;
 
+import java.util.Arrays;
 import java.util.Collection;
 import java.util.Set;
 
@@ -25,10 +26,49 @@ import com.google.common.collect.ImmutableSet;
 import com.google.common.collect.Sets;
 
 public class MessageMoves {
+
+    public static class Builder {
+        private final ImmutableSet.Builder<MailboxId> previousMailboxIds;
+        private final ImmutableSet.Builder<MailboxId> targetMailboxIds;
+
+        private Builder() {
+            previousMailboxIds = ImmutableSet.builder();
+            targetMailboxIds = ImmutableSet.builder();
+        }
+
+        public Builder previousMailboxIds(Collection<MailboxId> mailboxIds) {
+            previousMailboxIds.addAll(mailboxIds);
+            return this;
+        }
+
+        public Builder previousMailboxIds(MailboxId... mailboxIds) {
+            previousMailboxIds.addAll(Arrays.asList(mailboxIds));
+            return this;
+        }
+
+        public Builder targetMailboxIds(Collection<MailboxId> mailboxIds) {
+            targetMailboxIds.addAll(mailboxIds);
+            return this;
+        }
+
+        public Builder targetMailboxIds(MailboxId... mailboxIds) {
+            targetMailboxIds.addAll(Arrays.asList(mailboxIds));
+            return this;
+        }
+
+        public MessageMoves build() {
+            return new MessageMoves(previousMailboxIds.build(), 
targetMailboxIds.build());
+        }
+    }
+
+    public static Builder builder() {
+        return new Builder();
+    }
+
     private final ImmutableSet<MailboxId> previousMailboxIds;
     private final ImmutableSet<MailboxId> targetMailboxIds;
 
-    public MessageMoves(Collection<MailboxId> previousMailboxIds, 
Collection<MailboxId> targetMailboxIds) {
+    private MessageMoves(Collection<MailboxId> previousMailboxIds, 
Collection<MailboxId> targetMailboxIds) {
         this.previousMailboxIds = ImmutableSet.copyOf(previousMailboxIds);
         this.targetMailboxIds = ImmutableSet.copyOf(targetMailboxIds);
     }

http://git-wip-us.apache.org/repos/asf/james-project/blob/fdc0f83e/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
----------------------------------------------------------------------
diff --git 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
index 4b00807..a4a448c 100644
--- 
a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
+++ 
b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageIdManager.java
@@ -185,7 +185,10 @@ public class StoreMessageIdManager implements 
MessageIdManager {
             return;
         }
 
-        MessageMoves messageMoves = new 
MessageMoves(toMailboxIds(currentMailboxMessages), targetMailboxIds);
+        MessageMoves messageMoves = MessageMoves.builder()
+            .targetMailboxIds(targetMailboxIds)
+            .previousMailboxIds(toMailboxIds(currentMailboxMessages))
+            .build();
 
         if (messageMoves.isChange()) {
             applyMessageMoves(mailboxSession, currentMailboxMessages, 
messageMoves);
@@ -196,7 +199,10 @@ public class StoreMessageIdManager implements 
MessageIdManager {
         MessageIdMapper messageIdMapper = 
mailboxSessionMapperFactory.getMessageIdMapper(mailboxSession);
         List<MailboxMessage> currentMailboxMessages = 
messageIdMapper.find(ImmutableList.of(messageId), MessageMapper.FetchType.Full);
 
-        MessageMoves messageMoves = new 
MessageMoves(toMailboxIds(currentMailboxMessages), 
ImmutableList.of(targetMailboxId));
+        MessageMoves messageMoves = MessageMoves.builder()
+            .previousMailboxIds(toMailboxIds(currentMailboxMessages))
+            .targetMailboxIds(targetMailboxId)
+            .build();
 
         if (messageMoves.isChange()) {
             applyMessageMoveNoMailboxChecks(mailboxSession, 
currentMailboxMessages, messageMoves);


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to