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 ro...@apache.org on 2018/12/12 10:48:18 UTC
james-project git commit: JAMES-2627 Reactor version for vacation
mailet: don't use the Cassandra thread pool to wait for an other Cassandra
request
Repository: james-project
Updated Branches:
refs/heads/master b0687e850 -> e7048f41c
JAMES-2627 Reactor version for vacation mailet: don't use the Cassandra thread pool to wait for an other Cassandra request
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/e7048f41
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/e7048f41
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/e7048f41
Branch: refs/heads/master
Commit: e7048f41c75c6b9f0b9ae4ebcd1fda885de8133b
Parents: b0687e8
Author: Raphael Ouazana <ra...@linagora.com>
Authored: Tue Dec 11 17:12:08 2018 +0100
Committer: Raphael Ouazana <ra...@linagora.com>
Committed: Wed Dec 12 11:46:56 2018 +0100
----------------------------------------------------------------------
server/protocols/jmap/pom.xml | 4 ++++
.../apache/james/jmap/mailet/VacationMailet.java | 17 +++++++++--------
2 files changed, 13 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/james-project/blob/e7048f41/server/protocols/jmap/pom.xml
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/pom.xml b/server/protocols/jmap/pom.xml
index 49cd4d6..5ce01b6 100644
--- a/server/protocols/jmap/pom.xml
+++ b/server/protocols/jmap/pom.xml
@@ -203,6 +203,10 @@
<artifactId>jjwt</artifactId>
</dependency>
<dependency>
+ <groupId>io.projectreactor</groupId>
+ <artifactId>reactor-core</artifactId>
+ </dependency>
+ <dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<scope>test</scope>
http://git-wip-us.apache.org/repos/asf/james-project/blob/e7048f41/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/VacationMailet.java
----------------------------------------------------------------------
diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/VacationMailet.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/VacationMailet.java
index a692d08..ac50d14 100644
--- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/VacationMailet.java
+++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/mailet/VacationMailet.java
@@ -20,7 +20,6 @@
package org.apache.james.jmap.mailet;
import java.time.ZonedDateTime;
-import java.util.concurrent.CompletableFuture;
import javax.inject.Inject;
import javax.mail.MessagingException;
@@ -40,6 +39,9 @@ import org.apache.mailet.base.GenericMailet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import reactor.core.publisher.Flux;
+import reactor.core.publisher.Mono;
+
public class VacationMailet extends GenericMailet {
private static final Logger LOGGER = LoggerFactory.getLogger(VacationMailet.class);
@@ -80,13 +82,12 @@ public class VacationMailet extends GenericMailet {
private void manageVacation(MailAddress recipient, Mail processedMail, ZonedDateTime processingDate) {
AccountId accountId = AccountId.fromString(recipient.toString());
- CompletableFuture<Vacation> vacationFuture = vacationRepository.retrieveVacation(accountId);
- CompletableFuture<Boolean> alreadySentFuture = notificationRegistry.isRegistered(
- AccountId.fromString(recipient.toString()),
- RecipientId.fromMailAddress(processedMail.getMaybeSender().get()));
-
- Pair<Vacation, Boolean> pair = vacationFuture.thenCombine(alreadySentFuture, Pair::of)
- .join();
+ Mono<Vacation> vacation = Mono.fromCompletionStage(vacationRepository.retrieveVacation(accountId));
+ Mono<Boolean> alreadySent = Mono.fromCompletionStage(notificationRegistry.isRegistered(
+ AccountId.fromString(recipient.toString()),
+ RecipientId.fromMailAddress(processedMail.getMaybeSender().get())));
+ Pair<Vacation, Boolean> pair = Flux.combineLatest(vacation, alreadySent, Pair::of)
+ .blockFirst();
sendNotificationIfRequired(recipient, processedMail, processingDate, pair.getKey(), pair.getValue());
}
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org