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]
