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 653525ce3d93fa88dfd7c8d6c35ecc0456679341
Author: Benoit Tellier <[email protected]>
AuthorDate: Sun Mar 22 18:12:04 2020 +0700

    JAMES-3078 Reactify SetVacation
---
 .../draft/methods/SetVacationResponseMethod.java   | 44 ++++++++++------------
 1 file changed, 19 insertions(+), 25 deletions(-)

diff --git 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetVacationResponseMethod.java
 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetVacationResponseMethod.java
index 215223c..d8952b8 100644
--- 
a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetVacationResponseMethod.java
+++ 
b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/draft/methods/SetVacationResponseMethod.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;
@@ -34,10 +32,12 @@ import 
org.apache.james.jmap.draft.model.SetVacationResponse;
 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 com.google.common.base.Preconditions;
 
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
 public class SetVacationResponseMethod implements Method {
 
     public static final Request.Name METHOD_NAME = 
Request.name("setVacationResponse");
@@ -69,26 +69,20 @@ public class SetVacationResponseMethod 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 SetVacationRequest);
         SetVacationRequest setVacationRequest = (SetVacationRequest) request;
 
-
-        return MDCBuilder.create()
-            .addContext(MDCBuilder.ACTION, "SET_VACATION")
-            .addContext("update", setVacationRequest.getUpdate())
-            .wrapArround(
-                () -> metricFactory.runPublishingTimerMetricLogP99(JMAP_PREFIX 
+ METHOD_NAME.getName(),
-                    () -> process(methodCallId, mailboxSession, 
setVacationRequest)))
-            .get();
+        return metricFactory.runPublishingTimerMetricLogP99(JMAP_PREFIX + 
METHOD_NAME.getName(),
+            () -> process(methodCallId, mailboxSession, setVacationRequest));
     }
 
-    private Stream<JmapResponse> process(MethodCallId methodCallId, 
MailboxSession mailboxSession, SetVacationRequest setVacationRequest) {
+    private Flux<JmapResponse> process(MethodCallId methodCallId, 
MailboxSession mailboxSession, SetVacationRequest setVacationRequest) {
         if (!setVacationRequest.isValid()) {
-            return Stream.of(JmapResponse
+            return Flux.just(JmapResponse
                 .builder()
                 .methodCallId(methodCallId)
                 .error(ErrorResponse.builder()
@@ -104,19 +98,19 @@ public class SetVacationResponseMethod implements Method {
     }
 
 
-    private Stream<JmapResponse> process(MethodCallId methodCallId, AccountId 
accountId, VacationResponse vacationResponse) {
+    private Flux<JmapResponse> process(MethodCallId methodCallId, AccountId 
accountId, VacationResponse vacationResponse) {
         if (vacationResponse.isValid()) {
-            vacationRepository.modifyVacation(accountId, 
vacationResponse.getPatch()).block();
-            notificationRegistry.flush(accountId).block();
-            return Stream.of(JmapResponse.builder()
-                .methodCallId(methodCallId)
-                .responseName(RESPONSE_NAME)
-                .response(SetVacationResponse.builder()
-                    .updatedId(Vacation.ID)
-                    .build())
-                .build());
+            return vacationRepository.modifyVacation(accountId, 
vacationResponse.getPatch())
+                .then(notificationRegistry.flush(accountId))
+                .thenMany(Mono.just(JmapResponse.builder()
+                    .methodCallId(methodCallId)
+                    .responseName(RESPONSE_NAME)
+                    .response(SetVacationResponse.builder()
+                        .updatedId(Vacation.ID)
+                        .build())
+                    .build()));
         } else {
-            return Stream.of(JmapResponse.builder()
+            return Flux.just(JmapResponse.builder()
                 .methodCallId(methodCallId)
                 .responseName(RESPONSE_NAME)
                 .response(SetVacationResponse.builder()


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

Reply via email to