JAMES-2219 Do only one store read when resolving parent path

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

Branch: refs/heads/master
Commit: 35663c29b523babc1ad96639644df8235694f4bc
Parents: 9c14a96
Author: benwa <[email protected]>
Authored: Thu Nov 16 10:18:56 2017 +0700
Committer: Antoine Duprat <[email protected]>
Committed: Thu Nov 16 14:19:17 2017 +0100

----------------------------------------------------------------------
 .../jmap/methods/SetMailboxesCreationProcessor.java      | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/35663c29/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 39695b1..4dfa901 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
@@ -51,6 +51,7 @@ import org.apache.james.mailbox.model.MailboxId.Factory;
 import org.apache.james.mailbox.model.MailboxPath;
 import org.apache.james.metrics.api.MetricFactory;
 import org.apache.james.metrics.api.TimeMetric;
+import org.apache.james.util.OptionalUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -189,15 +190,15 @@ public class SetMailboxesCreationProcessor implements 
SetMailboxesProcessor {
     }
 
     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));
+        Optional<MailboxId> mailboxId = OptionalUtils.or(
+            readCreationIdAsMailboxId(parentId),
+            Optional.ofNullable(creationIdsToCreatedMailboxId.get(parentId)));
 
         return getMailboxPathFromId(mailboxId, mailboxSession)
-            .orElseGet(() -> getMailboxPathFromId(mailboxIdFromCreationId, 
mailboxSession)
-                .orElseThrow(() -> new 
MailboxParentNotFoundException(parentId)));
+                .orElseThrow(() -> new 
MailboxParentNotFoundException(parentId));
     }
 
-    private Optional<MailboxId> getMailboxIdFromCreationId(MailboxCreationId 
creationId) {
+    private Optional<MailboxId> readCreationIdAsMailboxId(MailboxCreationId 
creationId) {
         try {
             return 
Optional.of(mailboxIdFactory.fromString(creationId.getCreationId()));
         } catch (Exception e) {


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

Reply via email to