MAILBOX-374 Use InMemoryIntegrationResources to ease RabbitMQ hostSystem 
instantiation


Project: http://git-wip-us.apache.org/repos/asf/james-project/repo
Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/dc25108e
Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/dc25108e
Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/dc25108e

Branch: refs/heads/master
Commit: dc25108ee7b391efdf0ea932a9acbd80807fc241
Parents: b926689
Author: Benoit Tellier <[email protected]>
Authored: Tue Jan 22 16:43:06 2019 +0700
Committer: Benoit Tellier <[email protected]>
Committed: Thu Jan 24 09:46:04 2019 +0700

----------------------------------------------------------------------
 .../manager/InMemoryIntegrationResources.java   | 13 +++-
 .../host/RabbitMQEventBusHostSystem.java        | 69 +++++---------------
 2 files changed, 26 insertions(+), 56 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/james-project/blob/dc25108e/mailbox/memory/src/test/java/org/apache/james/mailbox/inmemory/manager/InMemoryIntegrationResources.java
----------------------------------------------------------------------
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 2e1a3de..1f5beff 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
@@ -23,9 +23,9 @@ import org.apache.james.mailbox.MessageIdManager;
 import org.apache.james.mailbox.acl.GroupMembershipResolver;
 import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
 import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
+import org.apache.james.mailbox.events.EventBus;
 import org.apache.james.mailbox.events.InVMEventBus;
 import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
-import org.apache.james.mailbox.exception.MailboxException;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
 import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.inmemory.InMemoryMessageId;
@@ -136,8 +136,17 @@ public class InMemoryIntegrationResources implements 
IntegrationResources<StoreM
                                       Authenticator authenticator, 
Authorizator authorizator,
                                       int limitAnnotationCount, int 
limitAnnotationSize) {
 
+        return createResources(new InVMEventBus(new InVmEventDelivery(new 
NoopMetricFactory())),
+            groupMembershipResolver, authenticator, authorizator, 
limitAnnotationCount, limitAnnotationSize);
+    }
+
+    public Resources createResources(EventBus eventBus, Authenticator 
authenticator, Authorizator authorizator) {
+        return createResources(eventBus,
+            new SimpleGroupMembershipResolver(), authenticator, authorizator, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATIONS_ON_MAILBOX, 
MailboxConstants.DEFAULT_LIMIT_ANNOTATION_SIZE);
+    }
+
+    private Resources createResources(EventBus eventBus, 
GroupMembershipResolver groupMembershipResolver, Authenticator authenticator, 
Authorizator authorizator, int limitAnnotationCount, int limitAnnotationSize) {
         InMemoryMailboxSessionMapperFactory mailboxSessionMapperFactory = new 
InMemoryMailboxSessionMapperFactory();
-        InVMEventBus eventBus = new InVMEventBus(new InVmEventDelivery(new 
NoopMetricFactory()));
         StoreRightManager storeRightManager = new 
StoreRightManager(mailboxSessionMapperFactory, new UnionMailboxACLResolver(),
             groupMembershipResolver, eventBus);
         StoreMailboxAnnotationManager annotationManager = new 
StoreMailboxAnnotationManager(mailboxSessionMapperFactory, storeRightManager, 
limitAnnotationCount, limitAnnotationSize);

http://git-wip-us.apache.org/repos/asf/james-project/blob/dc25108e/mpt/impl/imap-mailbox/rabbitmq/src/test/java/org/apache/james/mpt/imapmailbox/rabbitmq/host/RabbitMQEventBusHostSystem.java
----------------------------------------------------------------------
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 6c3ef49..e6b4760 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
@@ -38,37 +38,16 @@ import 
org.apache.james.imap.encode.main.DefaultImapEncoderFactory;
 import org.apache.james.imap.main.DefaultImapDecoderFactory;
 import org.apache.james.imap.processor.main.DefaultImapProcessorFactory;
 import org.apache.james.mailbox.MailboxManager;
-import org.apache.james.mailbox.acl.GroupMembershipResolver;
-import org.apache.james.mailbox.acl.MailboxACLResolver;
-import org.apache.james.mailbox.acl.SimpleGroupMembershipResolver;
-import org.apache.james.mailbox.acl.UnionMailboxACLResolver;
 import org.apache.james.mailbox.events.MailboxIdRegistrationKey;
 import org.apache.james.mailbox.events.MemoryEventDeadLetters;
 import org.apache.james.mailbox.events.RabbitMQEventBus;
 import org.apache.james.mailbox.events.RetryBackoffConfiguration;
 import org.apache.james.mailbox.events.RoutingKeyConverter;
 import org.apache.james.mailbox.inmemory.InMemoryId;
-import org.apache.james.mailbox.inmemory.InMemoryMailboxManager;
-import org.apache.james.mailbox.inmemory.InMemoryMailboxSessionMapperFactory;
 import org.apache.james.mailbox.inmemory.InMemoryMessageId;
-import org.apache.james.mailbox.inmemory.quota.InMemoryCurrentQuotaManager;
-import org.apache.james.mailbox.inmemory.quota.InMemoryPerUserMaxQuotaManager;
-import org.apache.james.mailbox.store.JVMMailboxPathLocker;
-import org.apache.james.mailbox.store.MailboxSessionMapperFactory;
-import org.apache.james.mailbox.store.SessionProvider;
-import org.apache.james.mailbox.store.StoreMailboxAnnotationManager;
+import org.apache.james.mailbox.inmemory.manager.InMemoryIntegrationResources;
 import org.apache.james.mailbox.store.StoreMailboxManager;
-import org.apache.james.mailbox.store.StoreRightManager;
 import org.apache.james.mailbox.store.StoreSubscriptionManager;
-import org.apache.james.mailbox.store.extractor.DefaultTextExtractor;
-import org.apache.james.mailbox.store.mail.model.impl.MessageParser;
-import org.apache.james.mailbox.store.quota.CurrentQuotaCalculator;
-import org.apache.james.mailbox.store.quota.DefaultUserQuotaRootResolver;
-import org.apache.james.mailbox.store.quota.ListeningCurrentQuotaUpdater;
-import org.apache.james.mailbox.store.quota.QuotaComponents;
-import org.apache.james.mailbox.store.quota.StoreQuotaManager;
-import org.apache.james.mailbox.store.search.MessageSearchIndex;
-import org.apache.james.mailbox.store.search.SimpleMessageSearchIndex;
 import org.apache.james.metrics.logger.DefaultMetricFactory;
 import org.apache.james.mpt.api.ImapFeatures;
 import org.apache.james.mpt.api.ImapFeatures.Feature;
@@ -93,9 +72,8 @@ public class RabbitMQEventBusHostSystem extends 
JamesImapHostSystem {
 
     private final DockerRabbitMQ dockerRabbitMQ;
     private StoreMailboxManager mailboxManager;
-    private InMemoryPerUserMaxQuotaManager maxQuotaManager;
-    private RabbitMQConnectionFactory rabbitConnectionFactory;
     private RabbitMQEventBus eventBus;
+    private InMemoryIntegrationResources integrationResources;
 
     public RabbitMQEventBusHostSystem(DockerRabbitMQ dockerRabbitMQ) {
         this.dockerRabbitMQ = dockerRabbitMQ;
@@ -104,47 +82,26 @@ public class RabbitMQEventBusHostSystem extends 
JamesImapHostSystem {
     @Override
     public void beforeTest() throws Exception {
         super.beforeTest();
-        JVMMailboxPathLocker locker = new JVMMailboxPathLocker();
-        MailboxSessionMapperFactory mailboxSessionMapperFactory = new 
InMemoryMailboxSessionMapperFactory();
-        StoreSubscriptionManager sm = new 
StoreSubscriptionManager(mailboxSessionMapperFactory);
-
-        MailboxACLResolver aclResolver = new UnionMailboxACLResolver();
-        GroupMembershipResolver groupMembershipResolver = new 
SimpleGroupMembershipResolver();
-        MessageParser messageParser = new MessageParser();
-
 
         InMemoryMessageId.Factory messageIdFactory = new 
InMemoryMessageId.Factory();
         InMemoryId.Factory mailboxIdFactory = new InMemoryId.Factory();
         EventSerializer eventSerializer = new 
EventSerializer(mailboxIdFactory, messageIdFactory);
         RoutingKeyConverter routingKeyConverter = new 
RoutingKeyConverter(ImmutableSet.of(new 
MailboxIdRegistrationKey.Factory(mailboxIdFactory)));
-        rabbitConnectionFactory = createRabbitConnectionFactory();
+        RabbitMQConnectionFactory rabbitConnectionFactory = 
createRabbitConnectionFactory();
         eventBus = new RabbitMQEventBus(rabbitConnectionFactory, 
eventSerializer, RetryBackoffConfiguration.DEFAULT, routingKeyConverter, new 
MemoryEventDeadLetters());
+        eventBus.start();
 
-        StoreRightManager storeRightManager = new 
StoreRightManager(mailboxSessionMapperFactory, aclResolver, 
groupMembershipResolver, eventBus);
-        StoreMailboxAnnotationManager annotationManager = new 
StoreMailboxAnnotationManager(mailboxSessionMapperFactory, storeRightManager);
-        SessionProvider sessionProvider = new SessionProvider(authenticator, 
authorizator);
-
-        maxQuotaManager = new InMemoryPerUserMaxQuotaManager();
-        DefaultUserQuotaRootResolver quotaRootResolver =  new 
DefaultUserQuotaRootResolver(sessionProvider, mailboxSessionMapperFactory);
-        InMemoryCurrentQuotaManager currentQuotaManager = new 
InMemoryCurrentQuotaManager(new 
CurrentQuotaCalculator(mailboxSessionMapperFactory, quotaRootResolver), 
sessionProvider);
-        StoreQuotaManager quotaManager = new 
StoreQuotaManager(currentQuotaManager, maxQuotaManager);
-        ListeningCurrentQuotaUpdater listeningCurrentQuotaUpdater = new 
ListeningCurrentQuotaUpdater(currentQuotaManager, quotaRootResolver, eventBus, 
quotaManager);
-        QuotaComponents quotaComponents = new QuotaComponents(maxQuotaManager, 
quotaManager, quotaRootResolver, listeningCurrentQuotaUpdater);
-        MessageSearchIndex index = new 
SimpleMessageSearchIndex(mailboxSessionMapperFactory, 
mailboxSessionMapperFactory, new DefaultTextExtractor());
+        integrationResources = new InMemoryIntegrationResources();
+        mailboxManager = integrationResources.createResources(eventBus, 
authenticator, authorizator).getMailboxManager();
 
-        mailboxManager = new 
InMemoryMailboxManager(mailboxSessionMapperFactory, sessionProvider, locker, 
messageParser,
-            messageIdFactory, eventBus, annotationManager,  storeRightManager, 
quotaComponents, index);
-
-        eventBus.start();
-        eventBus.register(listeningCurrentQuotaUpdater);
 
         ImapProcessor defaultImapProcessorFactory =
             DefaultImapProcessorFactory.createDefaultProcessor(
                 mailboxManager,
                 eventBus,
-                sm,
-                quotaComponents.getQuotaManager(),
-                quotaComponents.getQuotaRootResolver(),
+                new 
StoreSubscriptionManager(mailboxManager.getMapperFactory()),
+                integrationResources.retrieveQuotaManager(mailboxManager),
+                integrationResources.retrieveQuotaRootResolver(mailboxManager),
                 new DefaultMetricFactory());
         configure(new DefaultImapDecoderFactory().buildImapDecoder(),
             new DefaultImapEncoderFactory().buildImapEncoder(),
@@ -184,8 +141,12 @@ public class RabbitMQEventBusHostSystem extends 
JamesImapHostSystem {
 
     @Override
     public void setQuotaLimits(QuotaCount maxMessageQuota, QuotaSize 
maxStorageQuota) {
-        maxQuotaManager.setGlobalMaxMessage(maxMessageQuota);
-        maxQuotaManager.setGlobalMaxStorage(maxStorageQuota);
+        try {
+            
integrationResources.retrieveMaxQuotaManager(mailboxManager).setGlobalMaxMessage(maxMessageQuota);
+            
integrationResources.retrieveMaxQuotaManager(mailboxManager).setGlobalMaxStorage(maxStorageQuota);
+        } catch (Exception e) {
+            throw new RuntimeException(e);
+        }
     }
 
     @Override


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to