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/05/13 12:07:10 UTC

[james-project] 01/15: JAMES-3149 Reactify MailboxMapper::list

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 d90ace71201584a59718128d27101a4198cf28d6
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue May 5 08:40:58 2020 +0700

    JAMES-3149 Reactify MailboxMapper::list
---
 .../cassandra/mail/CassandraMailboxMapper.java     |  7 ++--
 .../CassandraMailboxMapperConcurrencyTest.java     |  4 +--
 .../james/mailbox/jpa/mail/JPAMailboxMapper.java   | 15 ++++-----
 .../jpa/mail/TransactionalMailboxMapper.java       |  4 +--
 .../mailbox/maildir/mail/MaildirMailboxMapper.java | 39 +++++++++++-----------
 .../inmemory/mail/InMemoryMailboxMapper.java       |  6 ++--
 .../inmemory/mail/InMemoryMessageIdMapper.java     | 21 +++++-------
 .../james/mailbox/store/StoreMailboxManager.java   |  4 +--
 .../james/mailbox/store/mail/MailboxMapper.java    |  2 +-
 .../store/mail/model/MailboxMapperTest.java        |  5 +--
 .../mailbox/tools/indexer/ReIndexerPerformer.java  |  5 ++-
 .../adapter/mailbox/MailboxManagementTest.java     | 26 +++++++--------
 12 files changed, 60 insertions(+), 78 deletions(-)

diff --git a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
index a0b4fd4..e84978f 100644
--- a/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
+++ b/mailbox/cassandra/src/main/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapper.java
@@ -20,7 +20,6 @@
 package org.apache.james.mailbox.cassandra.mail;
 
 import java.time.Duration;
-import java.util.List;
 
 import javax.inject.Inject;
 
@@ -276,11 +275,9 @@ public class CassandraMailboxMapper implements MailboxMapper {
     }
 
     @Override
-    public List<Mailbox> list() {
+    public Flux<Mailbox> list() {
         return mailboxDAO.retrieveAllMailboxes()
-            .flatMap(this::toMailboxWithAcl)
-            .collectList()
-            .block();
+            .flatMap(this::toMailboxWithAcl);
     }
 
     @Override
diff --git a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
index 54e7290..35400d8 100644
--- a/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
+++ b/mailbox/cassandra/src/test/java/org/apache/james/mailbox/cassandra/mail/CassandraMailboxMapperConcurrencyTest.java
@@ -70,7 +70,7 @@ class CassandraMailboxMapperConcurrencyTest {
             .operationCount(OPERATION_COUNT)
             .runAcceptingErrorsWithin(Duration.ofMinutes(1));
 
-        assertThat(testee.list()).hasSize(1);
+        assertThat(testee.list().collectList().block()).hasSize(1);
     }
 
     @Test
@@ -85,7 +85,7 @@ class CassandraMailboxMapperConcurrencyTest {
             .operationCount(OPERATION_COUNT)
             .runAcceptingErrorsWithin(Duration.ofMinutes(1));
 
-        List<Mailbox> list = testee.list();
+        List<Mailbox> list = testee.list().collectList().block();
         assertThat(list).hasSize(1);
         assertThat(list.get(0)).isEqualToComparingFieldByField(mailbox);
     }
diff --git a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
index c2d4514..d5bfe96 100644
--- a/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
+++ b/mailbox/jpa/src/main/java/org/apache/james/mailbox/jpa/mail/JPAMailboxMapper.java
@@ -19,8 +19,6 @@
 
 package org.apache.james.mailbox.jpa.mail;
 
-import java.util.List;
-
 import javax.persistence.EntityExistsException;
 import javax.persistence.EntityManagerFactory;
 import javax.persistence.NoResultException;
@@ -46,7 +44,6 @@ import org.apache.james.mailbox.model.search.MailboxQuery;
 import org.apache.james.mailbox.store.MailboxExpressionBackwardCompatibility;
 import org.apache.james.mailbox.store.mail.MailboxMapper;
 
-import com.github.steveash.guavate.Guavate;
 import com.google.common.base.Preconditions;
 
 import reactor.core.publisher.Flux;
@@ -221,14 +218,14 @@ public class JPAMailboxMapper extends JPATransactionalMapper implements MailboxM
     }
 
     @Override
-    public List<Mailbox> list() throws MailboxException {
+    public Flux<Mailbox> list() {
         try {
-            return getEntityManager().createNamedQuery("listMailboxes", JPAMailbox.class).getResultList()
-                .stream()
-                .map(JPAMailbox::toMailbox)
-                .collect(Guavate.toImmutableList());
+            return Flux.fromIterable(getEntityManager()
+                    .createNamedQuery("listMailboxes", JPAMailbox.class)
+                    .getResultList())
+                .map(JPAMailbox::toMailbox);
         } catch (PersistenceException e) {
-            throw new MailboxException("Delete of mailboxes failed", e);
+            return Flux.error(new MailboxException("Delete of mailboxes failed", e));
         } 
     }
 
diff --git a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java
index 787db5b..f876158 100644
--- a/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java
+++ b/mailbox/jpa/src/test/java/org/apache/james/mailbox/jpa/mail/TransactionalMailboxMapper.java
@@ -19,8 +19,6 @@
 
 package org.apache.james.mailbox.jpa.mail;
 
-import java.util.List;
-
 import org.apache.commons.lang3.NotImplementedException;
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.acl.ACLDiff;
@@ -102,7 +100,7 @@ public class TransactionalMailboxMapper implements MailboxMapper {
     }
 
     @Override
-    public List<Mailbox> list() throws MailboxException {
+    public Flux<Mailbox> list() {
         return wrapped.list();
     }
 
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 05d9799..f5af09c 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
@@ -22,8 +22,10 @@ import java.io.File;
 import java.io.FilenameFilter;
 import java.io.IOException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.List;
 import java.util.regex.Pattern;
+import java.util.stream.Stream;
 
 import org.apache.commons.io.FileUtils;
 import org.apache.james.core.Username;
@@ -51,6 +53,10 @@ import org.apache.james.mailbox.store.transaction.NonTransactionalMapper;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
+import com.github.fge.lambdas.Throwing;
+import com.github.steveash.guavate.Guavate;
+import com.google.common.collect.ImmutableList;
+
 import reactor.core.publisher.Flux;
 import reactor.core.publisher.Mono;
 
@@ -119,9 +125,10 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail
         if (id == null) {
             throw new MailboxNotFoundException("null");
         }
-        return list().stream()
+        return list()
             .filter(mailbox -> mailbox.getMailboxId().equals(id))
-            .findAny()
+            .next()
+            .blockOptional()
             .orElseThrow(() -> new MailboxNotFoundException(id));
     }
     
@@ -256,22 +263,14 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail
     }
 
     @Override
-    public List<Mailbox> list() throws MailboxException {
-       File maildirRoot = maildirStore.getMaildirRoot();
-       List<Mailbox> mailboxList = new ArrayList<>();
-
-       if (maildirStore.getMaildirLocation().endsWith("/" + MaildirStore.PATH_DOMAIN + "/" + MaildirStore.PATH_USER)) {
-           File[] domains = maildirRoot.listFiles();
-           for (File domain : domains) {
-               File[] users = domain.listFiles();
-               visitUsersForMailboxList(domain, users, mailboxList);
-           }
-           return mailboxList;
-       }
-
-        File[] users = maildirRoot.listFiles();
-        visitUsersForMailboxList(null, users, mailboxList);
-        return mailboxList;
+    public Flux<Mailbox> list() {
+        File maildirRoot = maildirStore.getMaildirRoot();
+        return Mono.fromCallable(maildirStore::getMaildirLocation)
+            .filter(dir -> dir.endsWith("/" + MaildirStore.PATH_DOMAIN + "/" + MaildirStore.PATH_USER))
+            .map(ignored -> Arrays.stream(maildirRoot.listFiles())
+                .flatMap(Throwing.<File, Stream<Mailbox>>function(domain -> visitUsersForMailboxList(domain, domain.listFiles()).stream()).sneakyThrow()))
+            .switchIfEmpty(Mono.fromCallable(() -> visitUsersForMailboxList(null, maildirRoot.listFiles()).stream()))
+            .flatMapIterable(mailboxes -> mailboxes.collect(Guavate.toImmutableList()));
     }
 
     @Override
@@ -279,7 +278,8 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail
 
     }
 
-    private void visitUsersForMailboxList(File domain, File[] users, List<Mailbox> mailboxList) throws MailboxException {
+    private List<Mailbox> visitUsersForMailboxList(File domain, File[] users) throws MailboxException {
+        ImmutableList.Builder<Mailbox> mailboxList = ImmutableList.builder();
         String userName = null;
         
         for (File user: users) {
@@ -309,6 +309,7 @@ public class MaildirMailboxMapper extends NonTransactionalMapper implements Mail
                 mailboxList.add(maildirStore.loadMailbox(session, mailboxPath));
             }
         }
+        return mailboxList.build();
     }
 
     @Override
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
index 77db71d..1606798 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxMapper.java
@@ -18,8 +18,6 @@
  ****************************************************************/
 package org.apache.james.mailbox.inmemory.mail;
 
-import java.util.ArrayList;
-import java.util.List;
 import java.util.Optional;
 import java.util.concurrent.ConcurrentHashMap;
 import java.util.concurrent.atomic.AtomicLong;
@@ -139,8 +137,8 @@ public class InMemoryMailboxMapper implements MailboxMapper {
     }
 
     @Override
-    public List<Mailbox> list() throws MailboxException {
-        return new ArrayList<>(mailboxesByPath.values());
+    public Flux<Mailbox> list() {
+        return Flux.fromIterable(mailboxesByPath.values());
     }
 
     @Override
diff --git a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java
index bc34599..5e18dad 100644
--- a/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java
+++ b/mailbox/memory/src/main/java/org/apache/james/mailbox/inmemory/mail/InMemoryMessageIdMapper.java
@@ -40,6 +40,7 @@ import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.apache.james.mailbox.store.mail.MessageIdMapper;
 import org.apache.james.mailbox.store.mail.MessageMapper;
 import org.apache.james.mailbox.store.mail.model.MailboxMessage;
+import org.apache.james.util.streams.Iterators;
 
 import com.github.fge.lambdas.Throwing;
 import com.github.steveash.guavate.Guavate;
@@ -57,19 +58,13 @@ public class InMemoryMessageIdMapper implements MessageIdMapper {
 
     @Override
     public List<MailboxMessage> find(Collection<MessageId> messageIds, MessageMapper.FetchType fetchType) {
-        try {
-            return mailboxMapper.list()
-                .stream()
-                .flatMap(Throwing.function(mailbox ->
-                    ImmutableList.copyOf(
-                        messageMapper.findInMailbox(mailbox, MessageRange.all(), fetchType, UNLIMITED))
-                        .stream()))
-                .filter(message -> messageIds.contains(message.getMessageId()))
-                .collect(Guavate.toImmutableList());
-        } catch (MailboxException e) {
-            throw new RuntimeException(e);
-        }
-
+        return mailboxMapper.list()
+            .flatMap(Throwing.function(mailbox ->
+                Iterators.toFlux(
+                    messageMapper.findInMailbox(mailbox, MessageRange.all(), fetchType, UNLIMITED))))
+            .filter(message -> messageIds.contains(message.getMessageId()))
+            .collect(Guavate.toImmutableList())
+            .block();
     }
 
     @Override
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 bb68c0d..901bda5 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
@@ -751,10 +751,10 @@ public class StoreMailboxManager implements MailboxManager {
     public List<MailboxPath> list(MailboxSession session) throws MailboxException {
         return mailboxSessionMapperFactory.getMailboxMapper(session)
             .list()
-            .stream()
             .map(Mailbox::generateAssociatedPath)
             .distinct()
-            .collect(Guavate.toImmutableList());
+            .collect(Guavate.toImmutableList())
+            .block();
     }
 
     @Override
diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
index cbf5d03..c5aaf7e 100644
--- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
+++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MailboxMapper.java
@@ -138,5 +138,5 @@ public interface MailboxMapper extends Mapper {
     /**
      * Return a unmodifable {@link List} of all {@link Mailbox}
      */
-    List<Mailbox> list() throws MailboxException;
+    Flux<Mailbox> list() throws MailboxException;
 }
\ No newline at end of file
diff --git a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
index 998a862..749dbf3 100644
--- a/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
+++ b/mailbox/store/src/test/java/org/apache/james/mailbox/store/mail/model/MailboxMapperTest.java
@@ -25,7 +25,6 @@ import static org.assertj.core.api.Assertions.assertThat;
 import static org.assertj.core.api.Assertions.assertThatThrownBy;
 
 import java.util.List;
-import java.util.stream.Stream;
 
 import org.apache.james.core.Username;
 import org.apache.james.mailbox.exception.MailboxException;
@@ -42,8 +41,6 @@ import org.apache.james.mailbox.store.mail.MailboxMapper;
 import org.junit.jupiter.api.BeforeEach;
 import org.junit.jupiter.api.Test;
 
-import com.google.common.collect.ImmutableList;
-
 /**
  * Generic purpose tests for your implementation MailboxMapper.
  * 
@@ -159,7 +156,7 @@ public abstract class MailboxMapperTest {
     @Test
     void listShouldRetrieveAllMailbox() throws MailboxException {
         createAll();
-        List<Mailbox> mailboxes = mailboxMapper.list();
+        List<Mailbox> mailboxes = mailboxMapper.list().collectList().block();
 
         assertMailboxes(mailboxes)
             .containOnly(benwaInboxMailbox, benwaWorkMailbox, benwaWorkTodoMailbox, benwaPersoMailbox, benwaWorkDoneMailbox, 
diff --git a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
index 8e06511..e5640b5 100644
--- a/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
+++ b/mailbox/tools/indexer/src/main/java/org/apache/mailbox/tools/indexer/ReIndexerPerformer.java
@@ -52,7 +52,6 @@ import com.google.common.collect.ImmutableList;
 public class ReIndexerPerformer {
     private static final Logger LOGGER = LoggerFactory.getLogger(ReIndexerPerformer.class);
 
-    private static final int NO_LIMIT = 0;
     private static final int SINGLE_MESSAGE = 1;
     private static final String RE_INDEXING = "re-indexing";
     private static final Username RE_INDEXER_PERFORMER_USER = Username.of(RE_INDEXING);
@@ -111,8 +110,8 @@ public class ReIndexerPerformer {
         MailboxSession mailboxSession = mailboxManager.createSystemSession(RE_INDEXER_PERFORMER_USER);
         LOGGER.info("Starting a full reindex");
         Stream<MailboxId> mailboxIds = mailboxSessionMapperFactory.getMailboxMapper(mailboxSession).list()
-            .stream()
-            .map(Mailbox::getMailboxId);
+            .map(Mailbox::getMailboxId)
+            .toStream();
 
         try {
             return reIndex(mailboxIds, reprocessingContext);
diff --git a/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java b/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
index 9cf51e8..d38bbc7 100644
--- a/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
+++ b/server/container/mailbox-jmx/src/test/java/org/apache/james/adapter/mailbox/MailboxManagementTest.java
@@ -69,42 +69,42 @@ public class MailboxManagementTest {
     void deleteMailboxesShouldDeleteMailboxes() throws Exception {
         mapperFactory.createMailboxMapper(session).create(MailboxPath.forUser(USER, "name"), UID_VALIDITY);
         mailboxManagerManagement.deleteMailboxes(USER.asString());
-        assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).isEmpty();
     }
 
     @Test
     void deleteMailboxesShouldDeleteInbox() throws Exception {
         mapperFactory.createMailboxMapper(session).create(MailboxPath.inbox(USER), UID_VALIDITY);
         mailboxManagerManagement.deleteMailboxes(USER.asString());
-        assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).isEmpty();
     }
 
     @Test
     void deleteMailboxesShouldDeleteMailboxesChildren() throws Exception {
         mapperFactory.createMailboxMapper(session).create(MailboxPath.forUser(USER, "INBOX.test"), UID_VALIDITY);
         mailboxManagerManagement.deleteMailboxes(USER.asString());
-        assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).isEmpty();
     }
 
     @Test
     void deleteMailboxesShouldNotDeleteMailboxesBelongingToNotPrivateNamespace() throws Exception {
         Mailbox mailbox = mapperFactory.createMailboxMapper(session).create(new MailboxPath("#top", USER, "name"), UID_VALIDITY);
         mailboxManagerManagement.deleteMailboxes(USER.asString());
-        assertThat(mapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox);
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).containsExactly(mailbox);
     }
 
     @Test
     void deleteMailboxesShouldNotDeleteMailboxesBelongingToOtherUsers() throws Exception {
         Mailbox mailbox = mapperFactory.createMailboxMapper(session).create(MailboxPath.forUser(Username.of("userbis"), "name"), UID_VALIDITY);
         mailboxManagerManagement.deleteMailboxes(USER.asString());
-        assertThat(mapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox);
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).containsExactly(mailbox);
     }
 
     @Test
     void deleteMailboxesShouldDeleteMailboxesWithEmptyNames() throws Exception {
         mapperFactory.createMailboxMapper(session).create(MailboxPath.forUser(USER, ""), UID_VALIDITY);
         mailboxManagerManagement.deleteMailboxes(USER.asString());
-        assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).isEmpty();
     }
 
     @Test
@@ -125,13 +125,13 @@ public class MailboxManagementTest {
         mapperFactory.createMailboxMapper(session).create(MailboxPath.forUser(USER, "INBOX"), UID_VALIDITY);
         mapperFactory.createMailboxMapper(session).create(MailboxPath.forUser(USER, "INBOX.test"), UID_VALIDITY);
         mailboxManagerManagement.deleteMailboxes(USER.asString());
-        assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).isEmpty();
     }
 
     @Test
     void createMailboxShouldCreateAMailbox() throws Exception {
         mailboxManagerManagement.createMailbox(MailboxConstants.USER_NAMESPACE, USER.asString(), "name");
-        assertThat(mapperFactory.createMailboxMapper(session).list()).hasSize(1);
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).hasSize(1);
         assertThat(mapperFactory.createMailboxMapper(session)
                 .findMailboxByPath(MailboxPath.forUser(USER, "name"))
                 .blockOptional())
@@ -153,7 +153,7 @@ public class MailboxManagementTest {
         MailboxPath path = MailboxPath.forUser(USER, "name");
         Mailbox mailbox = mapperFactory.createMailboxMapper(session).create(path, UID_VALIDITY);
 
-        assertThat(mapperFactory.createMailboxMapper(session).list()).containsExactly(mailbox);
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).containsExactly(mailbox);
     }
 
     @Test
@@ -220,28 +220,28 @@ public class MailboxManagementTest {
     void deleteMailboxShouldDeleteGivenMailbox() throws Exception {
         mapperFactory.createMailboxMapper(session).create(MailboxPath.forUser(USER, "name"), UID_VALIDITY);
         mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER.asString(), "name");
-        assertThat(mapperFactory.createMailboxMapper(session).list()).isEmpty();
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).isEmpty();
     }
 
     @Test
     void deleteMailboxShouldNotDeleteGivenMailboxIfWrongNamespace() throws Exception {
         Mailbox mailbox = mapperFactory.createMailboxMapper(session).create(new MailboxPath("#top", USER, "name"), UID_VALIDITY);
         mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER.asString(), "name");
-        assertThat(mapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox);
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).containsOnly(mailbox);
     }
 
     @Test
     void deleteMailboxShouldNotDeleteGivenMailboxIfWrongUser() throws Exception {
         Mailbox mailbox = mapperFactory.createMailboxMapper(session).create(MailboxPath.forUser(Username.of("userbis"), "name"), UID_VALIDITY);
         mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER.asString(), "name");
-        assertThat(mapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox);
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).containsOnly(mailbox);
     }
 
     @Test
     void deleteMailboxShouldNotDeleteGivenMailboxIfWrongName() throws Exception {
         Mailbox mailbox = mapperFactory.createMailboxMapper(session).create(MailboxPath.forUser(USER, "wrong_name"), UID_VALIDITY);
         mailboxManagerManagement.deleteMailbox(MailboxConstants.USER_NAMESPACE, USER.asString(), "name");
-        assertThat(mapperFactory.createMailboxMapper(session).list()).containsOnly(mailbox);
+        assertThat(mapperFactory.createMailboxMapper(session).list().collectList().block()).containsOnly(mailbox);
     }
 
     @Test


---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org