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]
