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 <btell...@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-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org