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 2019/03/20 11:54:33 UTC

[james-project] 25/33: JAMES-2684 Provide an explicit staged-factory for InMemoryIntegrationResources

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 506988131c4abe8de03ba04a5e8f3d9eebfb2211
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Tue Mar 19 12:02:15 2019 +0700

    JAMES-2684 Provide an explicit staged-factory for InMemoryIntegrationResources
    
    Note that the factory is mutable but is only used through stages thus we
    ensure all methods are called.
    
    A convenient default method had been added.
---
 .../ElasticSearchIntegrationTest.java              |   9 +-
 .../search/LuceneMessageSearchIndexTest.java       |   9 +-
 .../inmemory/InMemoryCombinationManagerTest.java   |   2 +-
 .../InMemoryMessageIdManagerStorageTest.java       |   2 +-
 .../inmemory/InMemoryMessageManagerTest.java       |   2 +-
 .../inmemory/MemoryMailboxManagerProvider.java     |   8 +-
 .../mail/InMemoryMailboxManagerAttachmentTest.java |  14 +-
 .../manager/InMemoryIntegrationResources.java      | 235 ++++++++++++++++-----
 .../InMemoryMessageIdManagerSideEffectTest.java    |   7 +-
 .../InMemoryQuotaMailboxMessageManagerTest.java    |   2 +-
 .../james/vault/DeletedMessageVaultHookTest.java   |  11 +-
 ...lasticSearchQuotaSearchTestSystemExtension.java |   2 +-
 .../MemoryQuotaSearchTestSystemExtension.java      |   2 +-
 .../spamassassin/SpamAssassinListenerTest.java     |   2 +-
 .../store/search/SimpleMessageSearchIndexTest.java |   9 +-
 .../mailbox/tools/copier/MailboxCopierTest.java    |   2 +-
 .../tools/indexer/MessageIdReIndexerImplTest.java  |   2 +-
 .../mailbox/tools/indexer/ReIndexerImplTest.java   |   2 +-
 .../host/ElasticSearchHostSystem.java              |   7 +-
 .../inmemory/host/InMemoryHostSystem.java          |   8 +-
 .../lucenesearch/host/LuceneSearchHostSystem.java  |   9 +-
 .../rabbitmq/host/RabbitMQEventBusHostSystem.java  |   9 +-
 .../adapter/mailbox/MailboxManagementTest.java     |   2 +-
 .../mailets/delivery/MailboxAppenderTest.java      |   2 +-
 .../james/transport/matchers/IsOverQuotaTest.java  |   2 +-
 .../DefaultMailboxesProvisioningFilterTest.java    |   2 +-
 .../event/PropagateLookupRightListenerTest.java    |   2 +-
 .../jmap/mailet/filter/JMAPFilteringExtension.java |   2 +-
 .../james/jmap/methods/GetMailboxesMethodTest.java |   2 +-
 .../james/jmap/methods/GetMessagesMethodTest.java  |   2 +-
 .../james/jmap/model/MailboxFactoryTest.java       |   2 +-
 .../james/jmap/send/PostDequeueDecoratorTest.java  |   2 +-
 .../apache/james/jmap/utils/MailboxUtilsTest.java  |   2 +-
 .../apache/james/pop3server/POP3ServerTest.java    |  12 +-
 .../routes/DeletedMessagesVaultRoutesTest.java     |   2 +-
 .../routes/ElasticSearchQuotaSearchExtension.java  |   2 +-
 .../webadmin/routes/ReindexingRoutesTest.java      |   2 +-
 .../routes/ScanningQuotaSearchExtension.java       |   2 +-
 .../webadmin/routes/UserMailboxesRoutesTest.java   |   2 +-
 39 files changed, 304 insertions(+), 95 deletions(-)

diff --git a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
index 3e4b13e..0599280 100644
--- a/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
+++ b/mailbox/elasticsearch/src/test/java/org/apache/james/mailbox/elasticsearch/ElasticSearchIntegrationTest.java
@@ -100,7 +100,12 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
         InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
         ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass());
 
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory()
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.factory()
+            .preProvisionnedFakeAuthenticator()
+            .fakeAuthorizator()
+            .inVmEventBus()
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
             .listeningSearchIndex(preInstanciationStage -> new ElasticSearchListeningMessageSearchIndex(
                 preInstanciationStage.getMapperFactory(),
                 new ElasticSearchIndexer(client,
@@ -114,6 +119,8 @@ public class ElasticSearchIntegrationTest extends AbstractMessageSearchIndexTest
                     MailboxElasticSearchConstants.MESSAGE_TYPE),
                 new MessageToElasticSearchJson(textExtractor, ZoneId.of("Europe/Paris"), IndexAttachments.YES),
                 preInstanciationStage.getSessionProvider()))
+            .noPreDeletionHooks()
+            .storeQuotaManager()
             .create();
 
         storeMailboxManager = resources.getMailboxManager();
diff --git a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
index 9f509c9..ff34854 100644
--- a/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
+++ b/mailbox/lucene/src/test/java/org/apache/james/mailbox/lucene/search/LuceneMessageSearchIndexTest.java
@@ -37,11 +37,18 @@ public class LuceneMessageSearchIndexTest extends AbstractMessageSearchIndexTest
 
     @Override
     protected void initializeMailboxManager() {
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory()
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.factory()
+            .preProvisionnedFakeAuthenticator()
+            .fakeAuthorizator()
+            .inVmEventBus()
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
             .listeningSearchIndex(Throwing.function(preInstanciationStage -> new LuceneMessageSearchIndex(
                 preInstanciationStage.getMapperFactory(), new InMemoryId.Factory(), new RAMDirectory(),
                 new InMemoryMessageId.Factory(),
                 preInstanciationStage.getSessionProvider())))
+            .noPreDeletionHooks()
+            .storeQuotaManager()
             .create();
 
         storeMailboxManager = resources.getMailboxManager();
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
index 222aa82..3aa7c86 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryCombinationManagerTest.java
@@ -33,7 +33,7 @@ public class InMemoryCombinationManagerTest extends AbstractCombinationManagerTe
     
     @Override
     public CombinationManagerTestSystem createTestingData() {
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory().create();
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
 
         return new InMemoryCombinationManagerTestSystem(
             resources.getMailboxManager(),
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
index c1bed67..9f0087a 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageIdManagerStorageTest.java
@@ -34,7 +34,7 @@ public class InMemoryMessageIdManagerStorageTest extends AbstractMessageIdManage
     
     @Override
     protected MessageIdManagerTestSystem createTestingData() {
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory().create();
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
 
         StoreMailboxManager mailboxManager = resources.getMailboxManager();
         return new MessageIdManagerTestSystem(
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTest.java
index 86162ce..fddfc18 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/InMemoryMessageManagerTest.java
@@ -33,7 +33,7 @@ public class InMemoryMessageManagerTest extends AbstractMessageManagerTest {
     
     @Override
     protected MessageManagerTestSystem createTestSystem() {
-        return new InMemoryMessageManagerTestSystem(new InMemoryIntegrationResources.Factory().create().getMailboxManager());
+        return new InMemoryMessageManagerTestSystem(InMemoryIntegrationResources.defaultResources().getMailboxManager());
     }
 
 }
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerProvider.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerProvider.java
index e65b5d0..11b200d 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerProvider.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/MemoryMailboxManagerProvider.java
@@ -29,9 +29,15 @@ public class MemoryMailboxManagerProvider {
     private static final int LIMIT_ANNOTATION_SIZE = 30;
 
     public static InMemoryMailboxManager provideMailboxManager(Set<PreDeletionHook> preDeletionHooks) {
-        return new InMemoryIntegrationResources.Factory()
+        return InMemoryIntegrationResources.factory()
+            .preProvisionnedFakeAuthenticator()
+            .fakeAuthorizator()
+            .inVmEventBus()
             .annotationLimits(LIMIT_ANNOTATIONS, LIMIT_ANNOTATION_SIZE)
+            .defaultMessageParser()
+            .scanningSearchIndex()
             .preDeletionHooks(preDeletionHooks)
+            .storeQuotaManager()
             .create()
             .getMailboxManager();
     }
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
index e3c3b6d..bfa9e32 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/mail/InMemoryMailboxManagerAttachmentTest.java
@@ -45,10 +45,18 @@ public class InMemoryMailboxManagerAttachmentTest extends AbstractMailboxManager
         when(failingMessageParser.retrieveAttachments(any(InputStream.class)))
             .thenThrow(new RuntimeException("Message parser set to fail"));
 
-        mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
-        parseFailingMailboxManager = new InMemoryIntegrationResources.Factory()
+        mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
+        parseFailingMailboxManager = InMemoryIntegrationResources.factory()
+            .preProvisionnedFakeAuthenticator()
+            .fakeAuthorizator()
+            .inVmEventBus()
+            .defaultAnnotationLimits()
             .messageParser(failingMessageParser)
-            .create().getMailboxManager();
+            .scanningSearchIndex()
+            .noPreDeletionHooks()
+            .storeQuotaManager()
+            .create()
+            .getMailboxManager();
 
         super.setUp();
     }
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
index 8431f3b..df917f5 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
@@ -68,85 +68,207 @@ import org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
 import org.apache.james.metrics.api.NoopMetricFactory;
 
 import com.github.steveash.guavate.Guavate;
+import com.google.common.base.Preconditions;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableSet;
 
 public class InMemoryIntegrationResources implements IntegrationResources<StoreMailboxManager> {
-    public static class Factory {
+
+    public interface Stages {
+        interface RequireAuthenticator {
+            RequireAuthorizator authenticator(Authenticator authenticator);
+
+            default RequireAuthorizator preProvisionnedFakeAuthenticator() {
+                FakeAuthenticator fakeAuthenticator = new FakeAuthenticator();
+                fakeAuthenticator.addUser(ManagerTestProvisionner.USER, ManagerTestProvisionner.USER_PASS);
+                fakeAuthenticator.addUser(ManagerTestProvisionner.OTHER_USER, ManagerTestProvisionner.OTHER_USER_PASS);
+
+                return authenticator(fakeAuthenticator);
+            }
+        }
+
+        interface RequireAuthorizator {
+            RequireEventBus authorizator(Authorizator authorizator);
+
+            default RequireEventBus fakeAuthorizator() {
+                return authorizator(FakeAuthorizator.defaultReject());
+            }
+        }
+
+        interface RequireEventBus {
+            RequireAnnotationLimits eventBus(EventBus eventBus);
+
+            default RequireAnnotationLimits inVmEventBus() {
+                return eventBus(new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory())));
+            }
+        }
+
+        interface RequireAnnotationLimits {
+            RequireMessageParser annotationLimits(int limitAnnotationCount, int limitAnnotationSize);
+
+            default RequireMessageParser defaultAnnotationLimits() {
+                return annotationLimits(MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE);
+            }
+        }
+
+        interface RequireMessageParser {
+            RequireSearchIndex messageParser(MessageParser messageParser);
+
+            default RequireSearchIndex defaultMessageParser() {
+                return messageParser(new MessageParser());
+            }
+        }
+
+        interface RequireSearchIndex {
+            RequirePreDeletionHooks searchIndex(Function<MailboxManagerPreInstanciationStage, MessageSearchIndex> searchIndex);
+
+            RequirePreDeletionHooks listeningSearchIndex(Function<MailboxManagerPreInstanciationStage, ListeningMessageSearchIndex> searchIndex);
+
+            default RequirePreDeletionHooks scanningSearchIndex() {
+                return searchIndex(stage -> new SimpleMessageSearchIndex(stage.mapperFactory, stage.mapperFactory, new DefaultTextExtractor()));
+            }
+        }
+
+        interface RequirePreDeletionHooks {
+            RequireQuotaManager preDeletionHooksFactories(Collection<Function<MailboxManagerPreInstanciationStage, PreDeletionHook>> preDeletionHooks);
+
+            default RequireQuotaManager preDeletionHookFactory(Function<MailboxManagerPreInstanciationStage, PreDeletionHook> preDeletionHook) {
+                return preDeletionHooksFactories(ImmutableList.of(preDeletionHook));
+            }
+
+            default RequireQuotaManager preDeletionHook(PreDeletionHook preDeletionHook) {
+                return preDeletionHookFactory(toFactory(preDeletionHook));
+            }
+
+            default RequireQuotaManager preDeletionHooks(Collection<PreDeletionHook> preDeletionHooks) {
+                return preDeletionHooksFactories(preDeletionHooks.stream()
+                    .map(RequirePreDeletionHooks::toFactory)
+                    .collect(Guavate.toImmutableList()));
+            }
+
+            default RequireQuotaManager noPreDeletionHooks() {
+                return preDeletionHooksFactories(ImmutableList.of());
+            }
+
+            static Function<MailboxManagerPreInstanciationStage, PreDeletionHook> toFactory(PreDeletionHook preDeletionHook) {
+                return any -> preDeletionHook;
+            }
+        }
+
+        interface RequireQuotaManager {
+            FinalStage quotaManager(Function<BaseQuotaComponentsStage, QuotaManager> quotaManager);
+
+            default FinalStage storeQuotaManager() {
+                return quotaManager(stage -> new StoreQuotaManager(stage.currentQuotaManager, stage.maxQuotaManager));
+            }
+
+            default FinalStage quotaManager(QuotaManager quotaManager) {
+                return quotaManager(stage -> quotaManager);
+            }
+        }
+
+        interface FinalStage {
+            InMemoryIntegrationResources create();
+        }
+    }
+
+    public static Stages.RequireAuthenticator factory() {
+        return new Factory();
+    }
+
+    public static InMemoryIntegrationResources defaultResources() {
+        return factory()
+            .preProvisionnedFakeAuthenticator()
+            .fakeAuthorizator()
+            .inVmEventBus()
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
+            .scanningSearchIndex()
+            .noPreDeletionHooks()
+            .storeQuotaManager()
+            .create();
+    }
+
+    public static class Factory implements Stages.RequireAuthenticator, Stages.RequireAuthorizator, Stages.RequireEventBus,
+        Stages.RequireAnnotationLimits, Stages.RequireMessageParser, Stages.RequireSearchIndex, Stages.RequirePreDeletionHooks,
+        Stages.RequireQuotaManager, Stages.FinalStage {
+
         private Optional<Authenticator> authenticator;
         private Optional<Authorizator> authorizator;
         private Optional<EventBus> eventBus;
         private Optional<Integer> limitAnnotationCount;
-        private Optional<QuotaManager> quotaManager;
+        private Optional<Function<BaseQuotaComponentsStage, QuotaManager>> quotaManager;
         private Optional<Integer> limitAnnotationSize;
         private Optional<MessageParser> messageParser;
-        private Optional<Function<MailboxManagerPreInstanciationStage, MessageSearchIndex>> searchIndexInstanciator;
-        private ImmutableSet.Builder<Function<MailboxManagerPreInstanciationStage, PreDeletionHook>> preDeletionHooksInstanciators;
+        private Optional<Function<MailboxManagerPreInstanciationStage, MessageSearchIndex>> searchIndexFactory;
+        private ImmutableSet.Builder<Function<MailboxManagerPreInstanciationStage, PreDeletionHook>> preDeletionHooksFactories;
         private ImmutableList.Builder<MailboxListener.GroupMailboxListener> listenersToBeRegistered;
 
-        public Factory() {
+        private Factory() {
             this.authenticator = Optional.empty();
             this.authorizator = Optional.empty();
             this.eventBus = Optional.empty();
             this.limitAnnotationCount = Optional.empty();
             this.limitAnnotationSize = Optional.empty();
-            this.searchIndexInstanciator = Optional.empty();
+            this.searchIndexFactory = Optional.empty();
             this.messageParser = Optional.empty();
             this.quotaManager = Optional.empty();
-            this.preDeletionHooksInstanciators = ImmutableSet.builder();
+            this.preDeletionHooksFactories = ImmutableSet.builder();
             this.listenersToBeRegistered = ImmutableList.builder();
         }
 
+        @Override
         public Factory messageParser(MessageParser messageParser) {
             this.messageParser = Optional.of(messageParser);
             return this;
         }
 
-        public Factory quotaManager(QuotaManager quotaManager) {
+        @Override
+        public Factory quotaManager(Function<BaseQuotaComponentsStage, QuotaManager> quotaManager) {
             this.quotaManager = Optional.of(quotaManager);
             return this;
         }
 
+        @Override
         public Factory authenticator(Authenticator authenticator) {
             this.authenticator = Optional.of(authenticator);
             return this;
         }
 
+        @Override
         public Factory authorizator(Authorizator authorizator) {
             this.authorizator = Optional.of(authorizator);
             return this;
         }
 
+        @Override
         public Factory eventBus(EventBus eventBus) {
             this.eventBus = Optional.of(eventBus);
             return this;
         }
 
+        @Override
         public Factory annotationLimits(int limitAnnotationCount, int limitAnnotationSize) {
             this.limitAnnotationCount = Optional.of(limitAnnotationCount);
             this.limitAnnotationSize = Optional.of(limitAnnotationSize);
             return this;
         }
 
-        public Factory preDeletionHooks(Collection<PreDeletionHook> preDeletionHooks) {
-            this.preDeletionHooksInstanciators.addAll(preDeletionHooks.stream()
-                .map(this::toFactory)
-                .collect(Guavate.toImmutableList()));
-            return this;
-        }
-
-        public Factory preDeletionHook(Function<MailboxManagerPreInstanciationStage, PreDeletionHook> preDeletionHook) {
-            this.preDeletionHooksInstanciators.add(preDeletionHook);
+        @Override
+        public Factory preDeletionHooksFactories(Collection<Function<MailboxManagerPreInstanciationStage, PreDeletionHook>> preDeletionHooks) {
+            this.preDeletionHooksFactories.addAll(preDeletionHooks);
             return this;
         }
 
+        @Override
         public Factory searchIndex(Function<MailboxManagerPreInstanciationStage, MessageSearchIndex> searchIndex) {
-            this.searchIndexInstanciator = Optional.of(searchIndex);
+            this.searchIndexFactory = Optional.of(searchIndex);
             return this;
         }
 
+        @Override
         public Factory listeningSearchIndex(Function<MailboxManagerPreInstanciationStage, ListeningMessageSearchIndex> searchIndex) {
-            this.searchIndexInstanciator = Optional.of(stage -> {
+            this.searchIndexFactory = Optional.of(stage -> {
                 ListeningMessageSearchIndex listeningMessageSearchIndex = searchIndex.apply(stage);
                 listenersToBeRegistered.add(listeningMessageSearchIndex);
                 return listeningMessageSearchIndex;
@@ -154,72 +276,84 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
             return this;
         }
 
-        private Function<MailboxManagerPreInstanciationStage, PreDeletionHook> toFactory(PreDeletionHook preDeletionHook) {
-            return any -> preDeletionHook;
-        }
-
+        @Override
         public InMemoryIntegrationResources create() {
+            Preconditions.checkState(authenticator.isPresent());
+            Preconditions.checkState(authorizator.isPresent());
+            Preconditions.checkState(eventBus.isPresent());
+            Preconditions.checkState(quotaManager.isPresent());
+            Preconditions.checkState(limitAnnotationSize.isPresent());
+            Preconditions.checkState(limitAnnotationCount.isPresent());
+            Preconditions.checkState(searchIndexFactory.isPresent());
+            Preconditions.checkState(messageParser.isPresent());
+
             InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new InMemoryMailboxSessionMapperFactory();
-            EventBus eventBus = this.eventBus.orElseGet(() -> new InVMEventBus(new InVmEventDelivery(new NoopMetricFactory())));
+
             GroupMembershipResolver groupMembershipResolver = new SimpleGroupMembershipResolver();
-            StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), groupMembershipResolver, eventBus);
+            StoreRightManager storeRightManager = new StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(), groupMembershipResolver, eventBus.get());
+
             StoreMailboxAnnotationManager annotationManager = new StoreMailboxAnnotationManager(mailboxSessionMapperFactory,
-                storeRightManager, limitAnnotationCount.orElse(MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX),
-                limitAnnotationSize.orElse(MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE));
+                storeRightManager, limitAnnotationCount.get(), limitAnnotationSize.get());
 
-            SessionProvider sessionProvider = new SessionProvider(
-                authenticator.orElse(defaultAuthenticator()),
-                authorizator.orElse(FakeAuthorizator.defaultReject()));
+            SessionProvider sessionProvider = new SessionProvider(authenticator.get(), authorizator.get());
 
             InMemoryPerUserMaxQuotaManager maxQuotaManager = new InMemoryPerUserMaxQuotaManager();
             DefaultUserQuotaRootResolver quotaRootResolver = new DefaultUserQuotaRootResolver(sessionProvider, mailboxSessionMapperFactory);
             InMemoryCurrentQuotaManager currentQuotaManager = new InMemoryCurrentQuotaManager(new CurrentQuotaCalculator(mailboxSessionMapperFactory, quotaRootResolver), sessionProvider);
-            QuotaManager quotaManager = this.quotaManager.orElseGet(() -> new StoreQuotaManager(currentQuotaManager, maxQuotaManager));
-            ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver, eventBus, quotaManager);
+            QuotaManager quotaManager = this.quotaManager.get().apply(new BaseQuotaComponentsStage(maxQuotaManager, currentQuotaManager));
+            ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver, eventBus.get(), quotaManager);
             QuotaComponents quotaComponents = new QuotaComponents(maxQuotaManager, quotaManager, quotaRootResolver, listeningCurrentQuotaUpdater);
 
             MailboxManagerPreInstanciationStage preInstanciationStage = new MailboxManagerPreInstanciationStage(mailboxSessionMapperFactory, sessionProvider);
-
-            MessageSearchIndex index = searchIndexInstanciator
-                .orElse(stage -> new SimpleMessageSearchIndex(stage.mapperFactory, stage.mapperFactory, new DefaultTextExtractor()))
-                .apply(preInstanciationStage);
+            MessageSearchIndex index = searchIndexFactory.get().apply(preInstanciationStage);
 
             InMemoryMailboxManager manager = new InMemoryMailboxManager(
                 mailboxSessionMapperFactory,
                 sessionProvider,
                 new JVMMailboxPathLocker(),
-                messageParser.orElse(new MessageParser()),
+                messageParser.get(),
                 new InMemoryMessageId.Factory(),
-                eventBus,
+                eventBus.get(),
                 annotationManager,
                 storeRightManager,
                 quotaComponents,
                 index,
                 createHooks(preInstanciationStage));
 
-            eventBus.register(listeningCurrentQuotaUpdater);
-            eventBus.register(new MailboxAnnotationListener(mailboxSessionMapperFactory, sessionProvider));
+            eventBus.get().register(listeningCurrentQuotaUpdater);
+            eventBus.get().register(new MailboxAnnotationListener(mailboxSessionMapperFactory, sessionProvider));
 
-            listenersToBeRegistered.build().forEach(eventBus::register);
+            listenersToBeRegistered.build().forEach(eventBus.get()::register);
 
             return new InMemoryIntegrationResources(manager, storeRightManager, new InMemoryMessageId.Factory(), currentQuotaManager, quotaRootResolver, maxQuotaManager, quotaManager, index);
         }
 
-        FakeAuthenticator defaultAuthenticator() {
-            FakeAuthenticator fakeAuthenticator = new FakeAuthenticator();
-            fakeAuthenticator.addUser(ManagerTestProvisionner.USER, ManagerTestProvisionner.USER_PASS);
-            fakeAuthenticator.addUser(ManagerTestProvisionner.OTHER_USER, ManagerTestProvisionner.OTHER_USER_PASS);
-            return fakeAuthenticator;
-        }
-
-        PreDeletionHooks createHooks(MailboxManagerPreInstanciationStage preInstanciationStage) {
-            return new PreDeletionHooks(preDeletionHooksInstanciators.build()
+        private PreDeletionHooks createHooks(MailboxManagerPreInstanciationStage preInstanciationStage) {
+            return new PreDeletionHooks(preDeletionHooksFactories.build()
                 .stream()
                 .map(biFunction -> biFunction.apply(preInstanciationStage))
                 .collect(Guavate.toImmutableSet()));
         }
     }
 
+    public static class BaseQuotaComponentsStage {
+        private final InMemoryPerUserMaxQuotaManager maxQuotaManager;
+        private final InMemoryCurrentQuotaManager currentQuotaManager;
+
+        public BaseQuotaComponentsStage(InMemoryPerUserMaxQuotaManager maxQuotaManager, InMemoryCurrentQuotaManager currentQuotaManager) {
+            this.maxQuotaManager = maxQuotaManager;
+            this.currentQuotaManager = currentQuotaManager;
+        }
+
+        public InMemoryPerUserMaxQuotaManager getMaxQuotaManager() {
+            return maxQuotaManager;
+        }
+
+        public InMemoryCurrentQuotaManager getCurrentQuotaManager() {
+            return currentQuotaManager;
+        }
+    }
+
     public static class MailboxManagerPreInstanciationStage {
         private final InMemoryMailboxSessionMapperFactory mapperFactory;
         private final SessionProvider sessionProvider;
@@ -238,7 +372,6 @@ public class InMemoryIntegrationResources implements IntegrationResources<StoreM
         }
     }
 
-
     private final InMemoryMailboxManager mailboxManager;
     private final StoreRightManager storeRightManager;
     private final MessageId.Factory messageIdFactory;
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java
index 60121d4..9595fbf 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryMessageIdManagerSideEffectTest.java
@@ -41,8 +41,13 @@ public class InMemoryMessageIdManagerSideEffectTest extends AbstractMessageIdMan
     protected MessageIdManagerTestSystem createTestSystem(QuotaManager quotaManager, EventBus eventBus, Set<PreDeletionHook> preDeletionHooks) {
         InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
 
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory()
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.factory()
+            .preProvisionnedFakeAuthenticator()
+            .fakeAuthorizator()
             .eventBus(eventBus)
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
+            .scanningSearchIndex()
             .preDeletionHooks(preDeletionHooks)
             .quotaManager(quotaManager)
             .create();
diff --git a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryQuotaMailboxMessageManagerTest.java b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryQuotaMailboxMessageManagerTest.java
index d24943d..0547189 100644
--- a/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryQuotaMailboxMessageManagerTest.java
+++ b/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryQuotaMailboxMessageManagerTest.java
@@ -32,7 +32,7 @@ public class InMemoryQuotaMailboxMessageManagerTest extends QuotaMessageManagerT
 
     @Override
     protected IntegrationResources<StoreMailboxManager> createResources() {
-        return new InMemoryIntegrationResources.Factory().create();
+        return InMemoryIntegrationResources.defaultResources();
     }
 
 }
\ No newline at end of file
diff --git a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
index c9d5bba..6d6c479 100644
--- a/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
+++ b/mailbox/plugin/deleted-messages-vault/src/test/java/org/apache/james/vault/DeletedMessageVaultHookTest.java
@@ -98,8 +98,15 @@ class DeletedMessageVaultHookTest {
 
         DeletedMessageConverter deletedMessageConverter = new DeletedMessageConverter();
 
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory()
-            .preDeletionHook(preInstanciationStage -> new DeletedMessageVaultHook(preInstanciationStage.getSessionProvider(), messageVault, deletedMessageConverter, preInstanciationStage.getMapperFactory(), clock))
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.factory()
+            .preProvisionnedFakeAuthenticator()
+            .fakeAuthorizator()
+            .inVmEventBus()
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
+            .scanningSearchIndex()
+            .preDeletionHookFactory(preInstanciationStage -> new DeletedMessageVaultHook(preInstanciationStage.getSessionProvider(), messageVault, deletedMessageConverter, preInstanciationStage.getMapperFactory(), clock))
+            .storeQuotaManager()
             .create();
 
         mailboxManager = resources.getMailboxManager();
diff --git a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java
index 31b4c04..d7cd8e8 100644
--- a/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java
+++ b/mailbox/plugin/quota-search-elasticsearch/src/test/java/org/apache/james/quota/search/elasticsearch/ElasticSearchQuotaSearchTestSystemExtension.java
@@ -62,7 +62,7 @@ public class ElasticSearchQuotaSearchTestSystemExtension implements ParameterRes
             Client client = QuotaSearchIndexCreationUtil.prepareDefaultClient(
                 new TestingClientProvider(embeddedElasticSearch.getNode()).get(), ElasticSearchConfiguration.DEFAULT_CONFIGURATION);
 
-            InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory().create();
+            InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
 
             MemoryUsersRepository usersRepository = MemoryUsersRepository.withVirtualHosting();
 
diff --git a/mailbox/plugin/quota-search-scanning/src/test/java/org/apache/james/quota/search/scanning/MemoryQuotaSearchTestSystemExtension.java b/mailbox/plugin/quota-search-scanning/src/test/java/org/apache/james/quota/search/scanning/MemoryQuotaSearchTestSystemExtension.java
index 1be43df..325a237 100644
--- a/mailbox/plugin/quota-search-scanning/src/test/java/org/apache/james/quota/search/scanning/MemoryQuotaSearchTestSystemExtension.java
+++ b/mailbox/plugin/quota-search-scanning/src/test/java/org/apache/james/quota/search/scanning/MemoryQuotaSearchTestSystemExtension.java
@@ -44,7 +44,7 @@ public class MemoryQuotaSearchTestSystemExtension implements ParameterResolver {
     @Override
     public Object resolveParameter(ParameterContext parameterContext, ExtensionContext extensionContext) throws ParameterResolutionException {
         try {
-            InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory().create();
+            InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
 
             MemoryUsersRepository usersRepository = MemoryUsersRepository.withVirtualHosting();
 
diff --git a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
index 2a8fe0f..067c46f 100644
--- a/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
+++ b/mailbox/plugin/spamassassin/src/test/java/org/apache/james/mailbox/spamassassin/SpamAssassinListenerTest.java
@@ -77,7 +77,7 @@ public class SpamAssassinListenerTest {
 
     @Before
     public void setup() throws Exception {
-        StoreMailboxManager mailboxManager = spy(new InMemoryIntegrationResources.Factory().create().getMailboxManager());
+        StoreMailboxManager mailboxManager = spy(InMemoryIntegrationResources.defaultResources().getMailboxManager());
         SystemMailboxesProviderImpl systemMailboxesProvider = new SystemMailboxesProviderImpl(mailboxManager);
         when(mailboxManager.createSystemSession(USER))
             .thenReturn(MAILBOX_SESSION);
diff --git a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
index 2c449e1..abb5c83 100644
--- a/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
+++ b/mailbox/scanning-search/src/test/java/org/apache/james/mailbox/store/search/SimpleMessageSearchIndexTest.java
@@ -31,11 +31,18 @@ public class SimpleMessageSearchIndexTest extends AbstractMessageSearchIndexTest
 
     @Override
     protected void initializeMailboxManager() {
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory()
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.factory()
+            .preProvisionnedFakeAuthenticator()
+            .fakeAuthorizator()
+            .inVmEventBus()
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
             .searchIndex(preInstanciationStage -> new SimpleMessageSearchIndex(
                 preInstanciationStage.getMapperFactory(),
                 preInstanciationStage.getMapperFactory(),
                 new PDFTextExtractor()))
+            .noPreDeletionHooks()
+            .storeQuotaManager()
             .create();
 
         storeMailboxManager = resources.getMailboxManager();
diff --git a/mailbox/tools/copier/src/test/java/org/apache/james/mailbox/tools/copier/MailboxCopierTest.java b/mailbox/tools/copier/src/test/java/org/apache/james/mailbox/tools/copier/MailboxCopierTest.java
index 42ba3e5..db2ae6b 100644
--- a/mailbox/tools/copier/src/test/java/org/apache/james/mailbox/tools/copier/MailboxCopierTest.java
+++ b/mailbox/tools/copier/src/test/java/org/apache/james/mailbox/tools/copier/MailboxCopierTest.java
@@ -136,7 +136,7 @@ public class MailboxCopierTest {
      * @return a new InMemoryMailboxManager
      */
     private MailboxManager newInMemoryMailboxManager() {
-        return new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        return InMemoryIntegrationResources.defaultResources().getMailboxManager();
     }
 
 }
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImplTest.java
index f1da941..e884cd8 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/MessageIdReIndexerImplTest.java
@@ -51,7 +51,7 @@ public class MessageIdReIndexerImplTest {
 
     @BeforeEach
     void setUp() {
-        mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
         MailboxSessionMapperFactory mailboxSessionMapperFactory = mailboxManager.getMapperFactory();
         messageSearchIndex = mock(ListeningMessageSearchIndex.class);
         reIndexer = new MessageIdReIndexerImpl(mailboxManager, mailboxSessionMapperFactory, messageSearchIndex);
diff --git a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
index b01dcf5..2ee741b 100644
--- a/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
+++ b/mailbox/tools/indexer/src/test/java/org/apache/mailbox/tools/indexer/ReIndexerImplTest.java
@@ -57,7 +57,7 @@ public class ReIndexerImplTest {
 
     @BeforeEach
     void setUp() {
-        mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
         MailboxSessionMapperFactory mailboxSessionMapperFactory = mailboxManager.getMapperFactory();
         messageSearchIndex = mock(ListeningMessageSearchIndex.class);
         reIndexer = new ReIndexerImpl(new ReIndexerPerformer(mailboxManager, messageSearchIndex, mailboxSessionMapperFactory),
diff --git a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
index 41a0622..e60030e 100644
--- a/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
+++ b/mpt/impl/imap-mailbox/elasticsearch/src/test/java/org/apache/james/mpt/imapmailbox/elasticsearch/host/ElasticSearchHostSystem.java
@@ -92,9 +92,12 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem {
         InMemoryMessageId.Factory messageIdFactory = new InMemoryMessageId.Factory();
         ThreadFactory threadFactory = NamedThreadFactory.withClassName(getClass());
 
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory()
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.factory()
             .authenticator(authenticator)
             .authorizator(authorizator)
+            .inVmEventBus()
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
             .listeningSearchIndex(preInstanciationStage -> new ElasticSearchListeningMessageSearchIndex(
                 preInstanciationStage.getMapperFactory(),
                 new ElasticSearchIndexer(client,
@@ -107,6 +110,8 @@ public class ElasticSearchHostSystem extends JamesImapHostSystem {
                     MailboxElasticSearchConstants.MESSAGE_TYPE),
                 new MessageToElasticSearchJson(new DefaultTextExtractor(), ZoneId.of("Europe/Paris"), IndexAttachments.YES),
                 preInstanciationStage.getSessionProvider()))
+            .noPreDeletionHooks()
+            .storeQuotaManager()
             .create();
 
         mailboxManager = resources.getMailboxManager();
diff --git a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
index 8a647ff..e1c2243 100644
--- a/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
+++ b/mpt/impl/imap-mailbox/inmemory/src/test/java/org/apache/james/mpt/imapmailbox/inmemory/host/InMemoryHostSystem.java
@@ -51,9 +51,15 @@ public class InMemoryHostSystem extends JamesImapHostSystem {
     @Override
     public void beforeTest() throws Exception {
         super.beforeTest();
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory()
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.factory()
             .authenticator(authenticator)
             .authorizator(authorizator)
+            .inVmEventBus()
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
+            .scanningSearchIndex()
+            .noPreDeletionHooks()
+            .storeQuotaManager()
             .create();
         this.mailboxManager = resources.getMailboxManager();
         this.perUserMaxQuotaManager = resources.getMaxQuotaManager();
diff --git a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
index 21bdf90..4c10337 100644
--- a/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
+++ b/mpt/impl/imap-mailbox/lucenesearch/src/test/java/org/apache/james/mpt/imapmailbox/lucenesearch/host/LuceneSearchHostSystem.java
@@ -89,13 +89,18 @@ public class LuceneSearchHostSystem extends JamesImapHostSystem {
         try {
             FSDirectory fsDirectory = FSDirectory.open(tempFile);
 
-            InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory()
-                .authorizator(authorizator)
+            InMemoryIntegrationResources resources = InMemoryIntegrationResources.factory()
                 .authenticator(authenticator)
+                .authorizator(authorizator)
+                .inVmEventBus()
+                .defaultAnnotationLimits()
+                .defaultMessageParser()
                 .listeningSearchIndex(Throwing.function(preInstanciationStage -> new LuceneMessageSearchIndex(
                     preInstanciationStage.getMapperFactory(), new InMemoryId.Factory(), fsDirectory,
                     new InMemoryMessageId.Factory(),
                     preInstanciationStage.getSessionProvider())))
+                .noPreDeletionHooks()
+                .storeQuotaManager()
                 .create();
 
             mailboxManager = resources.getMailboxManager();
diff --git a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java
index 2bea41e..63dfd74 100644
--- a/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java
+++ b/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java
@@ -75,10 +75,15 @@ public class RabbitMQEventBusHostSystem extends JamesImapHostSystem {
         eventBus = createEventBus();
         eventBus.start();
 
-        resources = new InMemoryIntegrationResources.Factory()
-            .eventBus(eventBus)
+        resources = InMemoryIntegrationResources.factory()
             .authenticator(authenticator)
             .authorizator(authorizator)
+            .eventBus(eventBus)
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
+            .scanningSearchIndex()
+            .noPreDeletionHooks()
+            .storeQuotaManager()
             .create();
 
         ImapProcessor defaultImapProcessorFactory =
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 3f72587..d47dda1 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
@@ -55,7 +55,7 @@ public class MailboxManagementTest {
 
     @BeforeEach
     void setUp() throws Exception {
-        StoreMailboxManager mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        StoreMailboxManager mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
         mapperFactory = mailboxManager.getMapperFactory();
 
         mailboxManagerManagement = new MailboxManagerManagement();
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
index b9a15eb..39f377e 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/delivery/MailboxAppenderTest.java
@@ -60,7 +60,7 @@ public class MailboxAppenderTest {
                     .data("toto"))
             .build();
 
-        mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
         testee = new MailboxAppender(mailboxManager);
 
         session = mailboxManager.createSystemSession("TEST");
diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
index 3a5bf9b..53b49b1 100644
--- a/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
+++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/matchers/IsOverQuotaTest.java
@@ -50,7 +50,7 @@ public class IsOverQuotaTest {
 
     @Before
     public void setUp() throws Exception {
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory().create();
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
         mailboxManager = resources.getMailboxManager();
 
         quotaRootResolver = resources.getDefaultUserQuotaRootResolver();
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterTest.java
index 054cb6e..2bdaeae 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/DefaultMailboxesProvisioningFilterTest.java
@@ -49,7 +49,7 @@ public class DefaultMailboxesProvisioningFilterTest {
     public void before() throws Exception {
         session = MailboxSessionUtil.create(USERNAME);
 
-        mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
         subscriptionManager = new StoreSubscriptionManager(mailboxManager.getMapperFactory());
         testee = new DefaultMailboxesProvisioningFilter(mailboxManager, subscriptionManager, new NoopMetricFactory());
     }
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/event/PropagateLookupRightListenerTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/event/PropagateLookupRightListenerTest.java
index 637973d..0dc5e25 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/event/PropagateLookupRightListenerTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/event/PropagateLookupRightListenerTest.java
@@ -72,7 +72,7 @@ public class PropagateLookupRightListenerTest {
 
     @Before
     public void setup() throws Exception {
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory().create();
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
         storeMailboxManager = resources.getMailboxManager();
         storeRightManager = resources.getStoreRightManager();
         mailboxMapper = storeMailboxManager.getMapperFactory();
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringExtension.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringExtension.java
index d94e3c2..4517a42 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringExtension.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/mailet/filter/JMAPFilteringExtension.java
@@ -131,7 +131,7 @@ public class JMAPFilteringExtension implements BeforeEachCallback, ParameterReso
     public void beforeEach(ExtensionContext extensionContext) {
         FilteringManagement filteringManagement = new EventSourcingFilteringManagement(new InMemoryEventStore());
         MemoryUsersRepository usersRepository = MemoryUsersRepository.withoutVirtualHosting();
-        InMemoryMailboxManager mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        InMemoryMailboxManager mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
         ActionApplier.Factory actionApplierFactory = ActionApplier.factory(mailboxManager, new InMemoryId.Factory());
 
         JMAPFiltering jmapFiltering = new JMAPFiltering(filteringManagement, usersRepository, actionApplierFactory);
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
index cf9c4d4..3f53967 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMailboxesMethodTest.java
@@ -70,7 +70,7 @@ public class GetMailboxesMethodTest {
     @Before
     public void setup() throws Exception {
         clientId = ClientId.of("#0");
-        mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
         QuotaRootResolver quotaRootResolver = mailboxManager.getQuotaComponents().getQuotaRootResolver();
         QuotaManager quotaManager = mailboxManager.getQuotaComponents().getQuotaManager();
         mailboxFactory = new MailboxFactory(mailboxManager, quotaManager, quotaRootResolver);
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
index 2745cfd..dd85d71 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/methods/GetMessagesMethodTest.java
@@ -104,7 +104,7 @@ public class GetMessagesMethodTest {
         BlobManager blobManager = mock(BlobManager.class);
         when(blobManager.toBlobId(any(MessageId.class))).thenReturn(BlobId.fromString("fake"));
         MessageFactory messageFactory = new MessageFactory(blobManager, messagePreview, messageContentExtractor, htmlTextExtractor);
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory().create();
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
         mailboxManager = resources.getMailboxManager();
 
         session = MailboxSessionUtil.create(ROBERT.asString());
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
index 68bd014..34e8e34 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/model/MailboxFactoryTest.java
@@ -57,7 +57,7 @@ public class MailboxFactoryTest {
 
     @Before
     public void setup() throws Exception {
-        mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
         QuotaRootResolver quotaRootResolver = mailboxManager.getQuotaComponents().getQuotaRootResolver();
         QuotaManager quotaManager = mailboxManager.getQuotaComponents().getQuotaManager();
 
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
index 3eb32d5..6faaaa7 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/send/PostDequeueDecoratorTest.java
@@ -80,7 +80,7 @@ public class PostDequeueDecoratorTest {
 
     @Before
     public void init() throws Exception {
-        InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory().create();
+        InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
         mailboxManager = resources.getMailboxManager();
 
         mockedMailQueueItem = mock(MailQueueItem.class);
diff --git a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
index 924222e..28a29ed 100644
--- a/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
+++ b/server/protocols/jmap/src/test/java/org/apache/james/jmap/utils/MailboxUtilsTest.java
@@ -38,7 +38,7 @@ public class MailboxUtilsTest {
 
     @Before
     public void setup() throws Exception {
-        mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
         user = "user@domain.org";
         mailboxSession = mailboxManager.createSystemSession(user);
         sut = new MailboxUtils(mailboxManager);
diff --git a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
index d5730a8..cc6c66a 100644
--- a/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
+++ b/server/protocols/protocols-pop3/src/test/java/org/apache/james/pop3server/POP3ServerTest.java
@@ -711,7 +711,7 @@ public class POP3ServerTest {
         protocolHandlerChain = new MockProtocolHandlerLoader();
         protocolHandlerChain.put("usersrepository", UsersRepository.class, usersRepository);
 
-        mailboxManager = new InMemoryIntegrationResources.Factory()
+        mailboxManager = InMemoryIntegrationResources.factory()
             .authenticator((userid, passwd) -> {
                 try {
                     return usersRepository.test(userid, passwd.toString());
@@ -719,7 +719,15 @@ public class POP3ServerTest {
                     e.printStackTrace();
                     return false;
                 }
-            }).create()
+            })
+            .fakeAuthorizator()
+            .inVmEventBus()
+            .defaultAnnotationLimits()
+            .defaultMessageParser()
+            .scanningSearchIndex()
+            .noPreDeletionHooks()
+            .storeQuotaManager()
+            .create()
             .getMailboxManager();
 
         protocolHandlerChain.put("mailboxmanager", MailboxManager.class, mailboxManager);
diff --git a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java
index 8d43961..56b977a 100644
--- a/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox-deleted-message-vault/src/test/java/org/apache/james/webadmin/vault/routes/DeletedMessagesVaultRoutesTest.java
@@ -109,7 +109,7 @@ class DeletedMessagesVaultRoutesTest {
     @BeforeEach
     void beforeEach() throws Exception {
         vault = spy(new MemoryDeletedMessagesVault());
-        InMemoryIntegrationResources inMemoryResource = new InMemoryIntegrationResources.Factory().create();
+        InMemoryIntegrationResources inMemoryResource = InMemoryIntegrationResources.defaultResources();
         mailboxManager = spy(inMemoryResource.getMailboxManager());
 
         taskManager = new MemoryTaskManager();
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ElasticSearchQuotaSearchExtension.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ElasticSearchQuotaSearchExtension.java
index 205aef6..d1685c4 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ElasticSearchQuotaSearchExtension.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ElasticSearchQuotaSearchExtension.java
@@ -65,7 +65,7 @@ public class ElasticSearchQuotaSearchExtension implements ParameterResolver, Bef
                 new TestingClientProvider(embeddedElasticSearch.getNode()).get(),
                 ElasticSearchConfiguration.DEFAULT_CONFIGURATION);
 
-            InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory().create();
+            InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
 
             MemoryUsersRepository usersRepository = MemoryUsersRepository.withVirtualHosting();
 
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
index f1f016d..6550dcb 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ReindexingRoutesTest.java
@@ -76,7 +76,7 @@ class ReindexingRoutesTest {
 
     @BeforeEach
     void beforeEach() throws Exception {
-        mailboxManager = new InMemoryIntegrationResources.Factory().create().getMailboxManager();
+        mailboxManager = InMemoryIntegrationResources.defaultResources().getMailboxManager();
         MemoryTaskManager taskManager = new MemoryTaskManager();
         InMemoryId.Factory mailboxIdFactory = new InMemoryId.Factory();
         searchIndex = mock(ListeningMessageSearchIndex.class);
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ScanningQuotaSearchExtension.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ScanningQuotaSearchExtension.java
index 273402b..51bddb4 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ScanningQuotaSearchExtension.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/ScanningQuotaSearchExtension.java
@@ -45,7 +45,7 @@ public class ScanningQuotaSearchExtension implements ParameterResolver, BeforeEa
     @Override
     public void beforeEach(ExtensionContext context) {
         try {
-            InMemoryIntegrationResources resources = new InMemoryIntegrationResources.Factory().create();
+            InMemoryIntegrationResources resources = InMemoryIntegrationResources.defaultResources();
 
             MemoryUsersRepository usersRepository = MemoryUsersRepository.withVirtualHosting();
 
diff --git a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
index 9b8634e..0e4401a 100644
--- a/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
+++ b/server/protocols/webadmin/webadmin-mailbox/src/test/java/org/apache/james/webadmin/routes/UserMailboxesRoutesTest.java
@@ -95,7 +95,7 @@ class UserMailboxesRoutesTest {
 
         @BeforeEach
         void setUp() throws Exception {
-            createServer(new InMemoryIntegrationResources.Factory().create().getMailboxManager());
+            createServer(InMemoryIntegrationResources.defaultResources().getMailboxManager());
         }
 
         @Test


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