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]
