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 rc...@apache.org on 2020/05/04 10:02:01 UTC

[james-project] 14/14: JAMES-3149 Fix GetMessages method accountId handling

This is an automated email from the ASF dual-hosted git repository.

rcordier pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/james-project.git

commit 80d6c1eafe70567641a9186406aaa5bce03457a5
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Apr 28 12:01:06 2020 +0700

    JAMES-3149 Fix GetMessages method accountId handling
---
 .../jmap/draft/methods/GetMessagesMethod.java      |  2 +-
 .../james/jmap/draft/methods/RequestHandler.java   | 22 +++++++++-------------
 2 files changed, 10 insertions(+), 14 deletions(-)

diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
index dafb5a0..59f2731 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetMessagesMethod.java
@@ -114,7 +114,7 @@ public class GetMessagesMethod implements Method {
     }
 
     private Mono<GetMessagesResponse> getMessagesResponse(MailboxSession mailboxSession, GetMessagesRequest getMessagesRequest) {
-        getMessagesRequest.getAccountId().ifPresent((input) -> notImplemented("accountId"));
+        getMessagesRequest.getAccountId().ifPresent(input -> notImplemented("accountId"));
 
         MessageProperties.ReadProfile readProfile = getMessagesRequest.getProperties().computeReadLevel();
         MessageViewFactory<? extends MessageView> factory = messageViewFactory.getFactory(readProfile);
diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/RequestHandler.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/RequestHandler.java
index 2b71839..c895a3a 100644
--- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/RequestHandler.java
+++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/RequestHandler.java
@@ -39,6 +39,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
 
 public class RequestHandler {
 
@@ -75,19 +76,14 @@ public class RequestHandler {
     
     private Function<Method, Flux<JmapResponse>> extractAndProcess(AuthenticatedRequest request) {
         MailboxSession mailboxSession = request.getMailboxSession();
-        return (Method method) -> {
-                    try {
-                        JmapRequest jmapRequest = jmapRequestParser.extractJmapRequest(request, method.requestType());
-                        return method.process(jmapRequest, request.getMethodCallId(), mailboxSession)
-                            .onErrorResume(JmapFieldNotSupportedException.class, e -> errorNotImplemented(e, request));
-                    } catch (IOException e) {
-                        LOGGER.error("Error occured while parsing the request.", e);
-                        if (e.getCause() instanceof JmapFieldNotSupportedException) {
-                            return errorNotImplemented((JmapFieldNotSupportedException) e.getCause(), request);
-                        }
-                        return error(request, generateInvalidArgumentError(e.getMessage()));
-                    }
-                };
+        return (Method method) ->
+            Mono.fromCallable(() -> jmapRequestParser.extractJmapRequest(request, method.requestType()))
+                .flatMapMany(jmapRequest -> method.process(jmapRequest, request.getMethodCallId(), mailboxSession))
+                .onErrorResume(JmapFieldNotSupportedException.class, e -> errorNotImplemented(e, request))
+                .onErrorResume(
+                    e -> e.getCause() instanceof JmapFieldNotSupportedException,
+                    e -> errorNotImplemented((JmapFieldNotSupportedException) e.getCause(), request))
+                .onErrorResume(IOException.class, e -> error(request, generateInvalidArgumentError(e.getMessage())));
     }
 
     public ErrorResponse generateInvalidArgumentError(String description) {


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