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

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

commit 30f600aa1704541b2fda91435958662ec4107a56
Author: Benoit Tellier <[email protected]>
AuthorDate: Sun Mar 22 18:08:52 2020 +0700

    JAMES-3078 Reactify GetVacation
---
 .../draft/methods/GetVacationResponseMethod.java   | 32 +++++++++++-----------
 1 file changed, 16 insertions(+), 16 deletions(-)

diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetVacationResponseMethod.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetVacationResponseMethod.java
index 18c3017..1b11bd3 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetVacationResponseMethod.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/GetVacationResponseMethod.java
@@ -19,8 +19,6 @@
 
 package org.apache.james.jmap.draft.methods;
 
-import java.util.stream.Stream;
-
 import javax.inject.Inject;
 
 import org.apache.james.jmap.api.vacation.AccountId;
@@ -32,11 +30,13 @@ import org.apache.james.jmap.draft.model.MethodCallId;
 import org.apache.james.jmap.draft.model.VacationResponse;
 import org.apache.james.mailbox.MailboxSession;
 import org.apache.james.metrics.api.MetricFactory;
-import org.apache.james.util.MDCBuilder;
 import org.apache.james.util.date.ZonedDateTimeProvider;
 
 import com.google.common.base.Preconditions;
 
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
 public class GetVacationResponseMethod implements Method {
 
     public static final Request.Name METHOD_NAME = 
Request.name("getVacationResponse");
@@ -64,27 +64,27 @@ public class GetVacationResponseMethod implements Method {
     }
 
     @Override
-    public Stream<JmapResponse> processToStream(JmapRequest request, 
MethodCallId methodCallId, MailboxSession mailboxSession) {
+    public Flux<JmapResponse> process(JmapRequest request, MethodCallId 
methodCallId, MailboxSession mailboxSession) {
         Preconditions.checkNotNull(request);
         Preconditions.checkNotNull(methodCallId);
         Preconditions.checkNotNull(mailboxSession);
         Preconditions.checkArgument(request instanceof GetVacationRequest);
 
+        return 
Flux.from(metricFactory.runPublishingTimerMetricLogP99(JMAP_PREFIX + 
METHOD_NAME.getName(),
+            process(mailboxSession)
+                .flatMapMany(response -> Flux.just(JmapResponse.builder()
+                    .methodCallId(methodCallId)
+                    .responseName(RESPONSE_NAME)
+                    .response(response)
+                    .build()))));
+    }
 
-        return MDCBuilder.create()
-            .addContext(MDCBuilder.ACTION, "VACATION")
-            .wrapArround(
-                () -> metricFactory.runPublishingTimerMetricLogP99(JMAP_PREFIX 
+ METHOD_NAME.getName(),
-                    () -> Stream.of(JmapResponse.builder()
-                        .methodCallId(methodCallId)
-                        .responseName(RESPONSE_NAME)
-                        .response(process(mailboxSession))
-                        .build())))
-            .get();
+    private Mono<GetVacationResponse> process(MailboxSession mailboxSession) {
+        return 
vacationRepository.retrieveVacation(AccountId.fromUsername(mailboxSession.getUser()))
+            .map(vacation -> asVacationResponse(mailboxSession, vacation));
     }
 
-    private GetVacationResponse process(MailboxSession mailboxSession) {
-        Vacation vacation = 
vacationRepository.retrieveVacation(AccountId.fromUsername(mailboxSession.getUser())).block();
+    private GetVacationResponse asVacationResponse(MailboxSession 
mailboxSession, Vacation vacation) {
         return GetVacationResponse.builder()
             .accountId(mailboxSession.getUser().asString())
             .vacationResponse(VacationResponse.builder()


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

Reply via email to