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]
