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 ad...@apache.org on 2017/11/16 13:20:31 UTC

[4/8] james-project git commit: JAMES-2219 Refactor Parent handling while creating mailbox

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 <bt...@linagora.com>
Authored: Thu Nov 16 09:54:19 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org