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:29 UTC

[2/8] james-project git commit: JAMES-2219 More functional style for getMailboxNameFromId

JAMES-2219 More functional style for getMailboxNameFromId


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

Branch: refs/heads/master
Commit: 23055a3ff2d836a961b12a6cfef9031ee35f48a0
Parents: 472447d
Author: benwa <bt...@linagora.com>
Authored: Thu Nov 16 09:25:45 2017 +0700
Committer: Antoine Duprat <ad...@linagora.com>
Committed: Thu Nov 16 14:19:16 2017 +0100

----------------------------------------------------------------------
 .../methods/SetMailboxesCreationProcessor.java  | 30 ++++++++++----------
 1 file changed, 15 insertions(+), 15 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/23055a3f/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 d9e4f1f..74f4f02 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
@@ -54,7 +54,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import com.github.fge.lambdas.Throwing;
-import com.github.fge.lambdas.functions.ThrowingFunction;
+import com.github.fge.lambdas.functions.FunctionChainer;
 import com.google.common.annotations.VisibleForTesting;
 
 public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
@@ -168,7 +168,8 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
             MailboxCreationId parentId = mailboxRequest.getParentId().get();
             String parentName = getMailboxNameFromId(parentId, mailboxSession)
                     .orElseGet(Throwing.supplier(() ->
-                        getMailboxNameFromId(creationIdsToCreatedMailboxId.get(parentId), mailboxSession)
+                        getMailboxNameFromId(Optional.ofNullable(creationIdsToCreatedMailboxId.get(parentId)),
+                            mailboxSession)
                             .orElseThrow(() -> new MailboxParentNotFoundException(parentId))
                     ));
 
@@ -178,10 +179,8 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
         return MailboxPath.forUser(mailboxSession.getUser().getUserName(), mailboxRequest.getName());
     }
 
-    private Optional<String> getMailboxNameFromId(MailboxCreationId creationId, MailboxSession mailboxSession) {
-        ThrowingFunction<? super MailboxId, Optional<String>> toName = parentId -> getMailboxNameFromId(parentId, mailboxSession);
-        return getMailboxIdFromCreationId(creationId)
-                .flatMap(Throwing.function(toName).sneakyThrow());
+    private Optional<String> getMailboxNameFromId(MailboxCreationId creationId, MailboxSession mailboxSession) throws MailboxException {
+        return getMailboxNameFromId(getMailboxIdFromCreationId(creationId), mailboxSession);
     }
 
     private Optional<MailboxId> getMailboxIdFromCreationId(MailboxCreationId creationId) {
@@ -193,15 +192,16 @@ public class SetMailboxesCreationProcessor implements SetMailboxesProcessor {
     }
 
     @VisibleForTesting
-    Optional<String> getMailboxNameFromId(MailboxId mailboxId, MailboxSession mailboxSession) throws MailboxException {
-        if (mailboxId == null) {
-            return Optional.empty();
-        }
-        try {
-            return Optional.of(mailboxManager.getMailbox(mailboxId, mailboxSession).getMailboxPath().getName());
-        } catch (MailboxNotFoundException e) {
-            return Optional.empty();
-        }
+    Optional<String> getMailboxNameFromId(Optional<MailboxId> mailboxId, MailboxSession mailboxSession) throws MailboxException {
+        FunctionChainer<MailboxId, Optional<String>> fromMailboxIdToMailboxPath = Throwing.function(id -> {
+            try {
+                return Optional.of(mailboxManager.getMailbox(id, mailboxSession).getMailboxPath().getName());
+            } catch (MailboxNotFoundException e) {
+                return Optional.empty();
+            }
+        });
+        return mailboxId
+            .flatMap(fromMailboxIdToMailboxPath.sneakyThrow());
     }
 
 }


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org