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]

Reply via email to