This is an automated email from the ASF dual-hosted git repository. rcordier pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/james-project.git
commit 35e136ea9a8b27d853d098774d950e077d03b4c9 Author: Benoit Tellier <[email protected]> AuthorDate: Thu May 13 15:18:34 2021 +0700 [REFACTORING] Reactor: favor error suppliers This prevents the exception to be evaluated upon the planning phase of the pipeline, as executions not entering the error clause do not need to evaluate it. Creating exception triggers a stack capture which, if repeated frequently can negatively impact performance. --- .../apache/james/mailbox/cassandra/mail/CassandraACLMapper.java | 8 ++++---- .../apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java | 4 ++-- .../main/java/org/apache/james/vault/DeletedMessageVaultHook.java | 2 +- .../java/org/apache/james/mailbox/store/StoreMailboxManager.java | 2 +- .../jmap/cassandra/access/CassandraAccessTokenRepository.java | 2 +- .../jmap/cassandra/change/CassandraEmailChangeRepository.java | 4 ++-- .../jmap/cassandra/change/CassandraMailboxChangeRepository.java | 4 ++-- .../james/jmap/memory/change/MemoryEmailChangeRepository.java | 2 +- .../james/jmap/memory/change/MemoryMailboxChangeRepository.java | 2 +- .../java/org/apache/james/jmap/http/AuthenticationRoutes.java | 2 +- .../src/main/java/org/apache/james/jmap/http/Authenticator.java | 2 +- 11 files changed, 17 insertions(+), 17 deletions(-) diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java index e91d2aa..97012c3 100644 --- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java +++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraACLMapper.java @@ -77,7 +77,7 @@ public class CassandraACLMapper { return cassandraACLDAOV1.updateACL(cassandraId, command) .flatMap(aclDiff -> userMailboxRightsDAO.update(cassandraId, aclDiff) .thenReturn(aclDiff)) - .switchIfEmpty(Mono.error(new MailboxException("Unable to update ACL"))); + .switchIfEmpty(Mono.error(() -> new MailboxException("Unable to update ACL"))); } @Override @@ -85,7 +85,7 @@ public class CassandraACLMapper { return cassandraACLDAOV1.setACL(cassandraId, mailboxACL) .flatMap(aclDiff -> userMailboxRightsDAO.update(cassandraId, aclDiff) .thenReturn(aclDiff)) - .switchIfEmpty(Mono.defer(() -> Mono.error(new MailboxException("Unable to update ACL")))); + .switchIfEmpty(Mono.error(() -> new MailboxException("Unable to update ACL"))); } public Mono<Void> delete(CassandraId cassandraId) { @@ -125,7 +125,7 @@ public class CassandraACLMapper { .map(ACLUpdated.class::cast) .map(ACLUpdated::getAclDiff) .next() - .switchIfEmpty(Mono.defer(() -> Mono.error(new MailboxException("Unable to update ACL")))); + .switchIfEmpty(Mono.error(() -> new MailboxException("Unable to update ACL"))); } @Override @@ -136,7 +136,7 @@ public class CassandraACLMapper { .map(ACLUpdated.class::cast) .map(ACLUpdated::getAclDiff) .next() - .switchIfEmpty(Mono.defer(() -> Mono.error(new MailboxException("Unable to set ACL")))); + .switchIfEmpty(Mono.error(() -> new MailboxException("Unable to set ACL"))); } @Override diff --git a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java index edadc5c..a18c3c5 100644 --- a/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java +++ b/mailbox/maildir/src/main/java/org/apache/james/mailbox/maildir/mail/MaildirMailboxMapper.java @@ -95,7 +95,7 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail } return true; }) - .switchIfEmpty(Mono.error(new MailboxNotFoundException(mailbox.generateAssociatedPath()))) + .switchIfEmpty(Mono.error(() -> new MailboxNotFoundException(mailbox.generateAssociatedPath()))) .then(); } @@ -130,7 +130,7 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail return list() .filter(mailbox -> mailbox.getMailboxId().equals(id)) .next() - .switchIfEmpty(Mono.error(new MailboxNotFoundException(id))); + .switchIfEmpty(Mono.error(() -> new MailboxNotFoundException(id))); } @Override diff --git a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/DeletedMessageVaultHook.java b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/DeletedMessageVaultHook.java index 30c03e2..7e5bbc5 100644 --- a/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/DeletedMessageVaultHook.java +++ b/mailbox/plugin/deleted-messages-vault/src/main/java/org/apache/james/vault/DeletedMessageVaultHook.java @@ -123,7 +123,7 @@ public class DeletedMessageVaultHook implements PreDeletionHook { return mapperFactory.getMessageIdMapper(session) .findReactive(ImmutableList.of(deletedMessageMailboxContext.getMessageId()), MessageMapper.FetchType.Full) .next() - .switchIfEmpty(Mono.error(new RuntimeException("Cannot find " + deletedMessageMailboxContext.getMessageId()))) + .switchIfEmpty(Mono.error(() -> new RuntimeException("Cannot find " + deletedMessageMailboxContext.getMessageId()))) .flatMap(mailboxMessage -> Mono.fromCallable(() -> Pair.of(mailboxMessage, deletedMessageConverter.convert(deletedMessageMailboxContext, mailboxMessage, ZonedDateTime.ofInstant(clock.instant(), ZoneOffset.UTC))))) diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java index 6837272..5de99f6 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java @@ -427,7 +427,7 @@ public class StoreMailboxManager implements MailboxManager { mailboxMapper.execute(() -> block(mailboxMapper.findMailboxByPath(mailboxPath) .flatMap(mailbox -> doDeleteMailbox(mailboxMapper, mailbox, session)) - .switchIfEmpty(Mono.error(new MailboxNotFoundException(mailboxPath))))); + .switchIfEmpty(Mono.error(() -> new MailboxNotFoundException(mailboxPath))))); } @Override diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepository.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepository.java index 81c29c6..2a19d5a 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepository.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/access/CassandraAccessTokenRepository.java @@ -59,6 +59,6 @@ public class CassandraAccessTokenRepository implements AccessTokenRepository { Preconditions.checkNotNull(accessToken); return cassandraAccessTokenDAO.getUsernameFromToken(accessToken) - .switchIfEmpty(Mono.error(new InvalidAccessToken(accessToken))); + .switchIfEmpty(Mono.error(() -> new InvalidAccessToken(accessToken))); } } diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepository.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepository.java index deb4eba..13d3c7c 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepository.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraEmailChangeRepository.java @@ -67,7 +67,7 @@ public class CassandraEmailChangeRepository implements EmailChangeRepository { } return emailChangeRepositoryDAO.getChangesSince(accountId, state) - .switchIfEmpty(Flux.error(new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) + .switchIfEmpty(Flux.error(() -> new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) .filter(change -> !change.isDelegated()) .filter(change -> !change.getState().equals(state)) .collect(new EmailChanges.Builder.EmailChangeCollector(state, maxChanges.orElse(defaultLimit))); @@ -85,7 +85,7 @@ public class CassandraEmailChangeRepository implements EmailChangeRepository { } return emailChangeRepositoryDAO.getChangesSince(accountId, state) - .switchIfEmpty(Flux.error(new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) + .switchIfEmpty(Flux.error(() -> new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) .filter(change -> !change.getState().equals(state)) .collect(new EmailChanges.Builder.EmailChangeCollector(state, maxChanges.orElse(defaultLimit))); } diff --git a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepository.java b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepository.java index ce2b5b9..98c5046 100644 --- a/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepository.java +++ b/server/data/data-jmap-cassandra/src/main/java/org/apache/james/jmap/cassandra/change/CassandraMailboxChangeRepository.java @@ -67,7 +67,7 @@ public class CassandraMailboxChangeRepository implements MailboxChangeRepository } return mailboxChangeRepositoryDAO.getChangesSince(accountId, state) - .switchIfEmpty(Flux.error(new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) + .switchIfEmpty(Flux.error(() -> new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) .filter(change -> !change.isDelegated()) .filter(change -> !change.getState().equals(state)) .collect(new MailboxChanges.MailboxChangesBuilder.MailboxChangeCollector(state, maxChanges.orElse(defaultLimit))); @@ -85,7 +85,7 @@ public class CassandraMailboxChangeRepository implements MailboxChangeRepository } return mailboxChangeRepositoryDAO.getChangesSince(accountId, state) - .switchIfEmpty(Flux.error(new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) + .switchIfEmpty(Flux.error(() -> new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) .filter(change -> !change.getState().equals(state)) .collect(new MailboxChanges.MailboxChangesBuilder.MailboxChangeCollector(state, maxChanges.orElse(defaultLimit))); } diff --git a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepository.java b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepository.java index 58d595b..9636693 100644 --- a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepository.java +++ b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryEmailChangeRepository.java @@ -120,7 +120,7 @@ public class MemoryEmailChangeRepository implements EmailChangeRepository { private Mono<EmailChange> findByState(AccountId accountId, State state) { return Flux.fromIterable(emailChangeMap.get(accountId)) .filter(change -> change.getState().equals(state)) - .switchIfEmpty(Mono.error(new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) + .switchIfEmpty(Mono.error(() -> new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) .single(); } } diff --git a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepository.java b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepository.java index b034b9b..9198922 100644 --- a/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepository.java +++ b/server/data/data-jmap/src/main/java/org/apache/james/jmap/memory/change/MemoryMailboxChangeRepository.java @@ -101,7 +101,7 @@ public class MemoryMailboxChangeRepository implements MailboxChangeRepository { private Mono<MailboxChange> findByState(AccountId accountId, State state) { return Flux.fromIterable(mailboxChangeMap.get(accountId)) .filter(change -> change.getState().equals(state)) - .switchIfEmpty(Mono.error(new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) + .switchIfEmpty(Mono.error(() -> new ChangeNotFoundException(state, String.format("State '%s' could not be found", state.getValue())))) .single(); } diff --git a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/AuthenticationRoutes.java b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/AuthenticationRoutes.java index b939cb8..0ae3ce9 100644 --- a/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/AuthenticationRoutes.java +++ b/server/protocols/jmap-draft/src/main/java/org/apache/james/jmap/http/AuthenticationRoutes.java @@ -213,7 +213,7 @@ public class AuthenticationRoutes implements JMAPRoutes { throw new BadRequestException("Request can't be deserialized", e); } }) - .switchIfEmpty(Mono.error(new BadRequestException("Empty body"))); + .switchIfEmpty(Mono.error(() -> new BadRequestException("Empty body"))); } private Mono<Void> handleContinuationTokenRequest(ContinuationTokenRequest request, HttpServerResponse resp) { diff --git a/server/protocols/jmap/src/main/java/org/apache/james/jmap/http/Authenticator.java b/server/protocols/jmap/src/main/java/org/apache/james/jmap/http/Authenticator.java index cfd1bcb..cb751ee 100644 --- a/server/protocols/jmap/src/main/java/org/apache/james/jmap/http/Authenticator.java +++ b/server/protocols/jmap/src/main/java/org/apache/james/jmap/http/Authenticator.java @@ -56,7 +56,7 @@ public class Authenticator { Flux.fromIterable(authMethods) .concatMap(auth -> auth.createMailboxSession(request)) .next() - .switchIfEmpty(Mono.error(noAuthSupplied())))); + .switchIfEmpty(Mono.error(this::noAuthSupplied)))); } private NoAuthorizationSuppliedException noAuthSupplied() { --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
