You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2020/04/02 04:32:21 UTC
[james-project] 14/15: JAMES-3078 Reactify SetVacation
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 <bt...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org