JAMES-2219 Refactor Parent handling while creating mailbox - Avoid needless exception declaration (avoid function wrapping) - Makes finding functions returns MailboxPath (for future ownership enforcing) - Review function extraction logic, and rely more on variables
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/f656a9ec Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/f656a9ec Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/f656a9ec Branch: refs/heads/master Commit: f656a9ec17fed9967169974aa0aa5adb2e95de79 Parents: 23055a3 Author: benwa <[email protected]> Authored: Thu Nov 16 09:54:19 2017 +0700 Committer: Antoine Duprat <[email protected]> Committed: Thu Nov 16 14:19:16 2017 +0100 ---------------------------------------------------------------------- .../methods/SetMailboxesCreationProcessor.java | 28 ++++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/f656a9ec/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java ---------------------------------------------------------------------- diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java index 74f4f02..0f71d2e 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/methods/SetMailboxesCreationProcessor.java @@ -113,7 +113,7 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor { Map<MailboxCreationId, MailboxId> creationIdsToCreatedMailboxId, SetMailboxesResponse.Builder builder) { try { ensureValidMailboxName(mailboxRequest, mailboxSession); - MailboxPath mailboxPath = getMailboxPath(mailboxRequest, creationIdsToCreatedMailboxId, mailboxSession); + MailboxPath mailboxPath = computeMailboxPath(mailboxRequest, creationIdsToCreatedMailboxId, mailboxSession); Optional<MailboxId> mailboxId = mailboxManager.createMailbox(mailboxPath, mailboxSession); Optional<Mailbox> mailbox = mailboxId.flatMap(id -> mailboxFactory.builder() .id(id) @@ -163,24 +163,24 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor { } } - private MailboxPath getMailboxPath(MailboxCreateRequest mailboxRequest, Map<MailboxCreationId, MailboxId> creationIdsToCreatedMailboxId, MailboxSession mailboxSession) throws MailboxException { + private MailboxPath computeMailboxPath(MailboxCreateRequest mailboxRequest, Map<MailboxCreationId, MailboxId> creationIdsToCreatedMailboxId, MailboxSession mailboxSession) throws MailboxException { if (mailboxRequest.getParentId().isPresent()) { MailboxCreationId parentId = mailboxRequest.getParentId().get(); - String parentName = getMailboxNameFromId(parentId, mailboxSession) - .orElseGet(Throwing.supplier(() -> - getMailboxNameFromId(Optional.ofNullable(creationIdsToCreatedMailboxId.get(parentId)), - mailboxSession) - .orElseThrow(() -> new MailboxParentNotFoundException(parentId)) - )); + MailboxPath parentPath = getMailboxPath(creationIdsToCreatedMailboxId, mailboxSession, parentId); return MailboxPath.forUser(mailboxSession.getUser().getUserName(), - parentName + mailboxSession.getPathDelimiter() + mailboxRequest.getName()); + parentPath.getName() + mailboxSession.getPathDelimiter() + mailboxRequest.getName()); } return MailboxPath.forUser(mailboxSession.getUser().getUserName(), mailboxRequest.getName()); } - private Optional<String> getMailboxNameFromId(MailboxCreationId creationId, MailboxSession mailboxSession) throws MailboxException { - return getMailboxNameFromId(getMailboxIdFromCreationId(creationId), mailboxSession); + private MailboxPath getMailboxPath(Map<MailboxCreationId, MailboxId> creationIdsToCreatedMailboxId, MailboxSession mailboxSession, MailboxCreationId parentId) throws MailboxException { + Optional<MailboxId> mailboxId = getMailboxIdFromCreationId(parentId); + Optional<MailboxId> mailboxIdFromCreationId = Optional.ofNullable(creationIdsToCreatedMailboxId.get(parentId)); + + return getMailboxPathFromId(mailboxId, mailboxSession) + .orElseGet(() -> getMailboxPathFromId(mailboxIdFromCreationId, mailboxSession) + .orElseThrow(() -> new MailboxParentNotFoundException(parentId))); } private Optional<MailboxId> getMailboxIdFromCreationId(MailboxCreationId creationId) { @@ -192,10 +192,10 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor { } @VisibleForTesting - Optional<String> getMailboxNameFromId(Optional<MailboxId> mailboxId, MailboxSession mailboxSession) throws MailboxException { - FunctionChainer<MailboxId, Optional<String>> fromMailboxIdToMailboxPath = Throwing.function(id -> { + Optional<MailboxPath> getMailboxPathFromId(Optional<MailboxId> mailboxId, MailboxSession mailboxSession) { + FunctionChainer<MailboxId, Optional<MailboxPath>> fromMailboxIdToMailboxPath = Throwing.function(id -> { try { - return Optional.of(mailboxManager.getMailbox(id, mailboxSession).getMailboxPath().getName()); + return Optional.of(mailboxManager.getMailbox(id, mailboxSession).getMailboxPath()); } catch (MailboxNotFoundException e) { return Optional.empty(); } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
