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 961ee9b70d905bc54d53710fcaf1fd566a046353 Author: Benoit Tellier <[email protected]> AuthorDate: Thu Feb 28 11:44:02 2019 +0700 MAILBOX-381 MemoryMailRepositoryStore configuration should be final Also the POJO should be injected to allow easy overloads --- .../modules/server/MailStoreRepositoryModule.java | 18 ++++++++++++------ .../memory/MemoryMailRepositoryStore.java | 17 +++++------------ .../memory/MemoryMailRepositoryStoreTest.java | 20 +++++++++++++------- .../mailets/ToSenderDomainRepositoryTest.java | 7 ++++--- .../vault/MailRepositoryDeletedMessageVaultTest.java | 13 ++++++++----- .../org/apache/james/smtpserver/SMTPServerTest.java | 7 +++++-- .../webadmin/routes/MailRepositoriesRoutesTest.java | 6 ++++-- .../webadmin/service/ReprocessingServiceTest.java | 7 ++++--- 8 files changed, 55 insertions(+), 40 deletions(-) diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/MailStoreRepositoryModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/MailStoreRepositoryModule.java index d48c619..66bc204 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/MailStoreRepositoryModule.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/MailStoreRepositoryModule.java @@ -21,10 +21,13 @@ package org.apache.james.modules.server; import java.util.List; +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.james.lifecycle.api.Startable; import org.apache.james.mailrepository.api.MailRepositoryProvider; import org.apache.james.mailrepository.api.MailRepositoryStore; import org.apache.james.mailrepository.file.FileMailRepositoryProvider; +import org.apache.james.mailrepository.memory.MailRepositoryStoreConfiguration; import org.apache.james.mailrepository.memory.MemoryMailRepositoryStore; import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.utils.ConfigurationPerformer; @@ -34,6 +37,7 @@ import org.apache.james.utils.MailRepositoryProbeImpl; import com.google.common.collect.ImmutableList; import com.google.inject.AbstractModule; import com.google.inject.Inject; +import com.google.inject.Provides; import com.google.inject.Scopes; import com.google.inject.Singleton; import com.google.inject.multibindings.Multibinder; @@ -51,23 +55,25 @@ public class MailStoreRepositoryModule extends AbstractModule { Multibinder.newSetBinder(binder(), GuiceProbe.class).addBinding().to(MailRepositoryProbeImpl.class); } + @Provides @Singleton - public static class MailRepositoryStoreModuleConfigurationPerformer implements ConfigurationPerformer { + MailRepositoryStoreConfiguration provideConfiguration(ConfigurationProvider configurationProvider) throws ConfigurationException { + HierarchicalConfiguration configuration = configurationProvider.getConfiguration("mailrepositorystore"); + return MailRepositoryStoreConfiguration.parse(configuration); + } - private final ConfigurationProvider configurationProvider; + @Singleton + public static class MailRepositoryStoreModuleConfigurationPerformer implements ConfigurationPerformer { private final MemoryMailRepositoryStore javaMailRepositoryStore; @Inject - public MailRepositoryStoreModuleConfigurationPerformer(ConfigurationProvider configurationProvider, - MemoryMailRepositoryStore javaMailRepositoryStore) { - this.configurationProvider = configurationProvider; + public MailRepositoryStoreModuleConfigurationPerformer(MemoryMailRepositoryStore javaMailRepositoryStore) { this.javaMailRepositoryStore = javaMailRepositoryStore; } @Override public void initModule() { try { - javaMailRepositoryStore.configure(configurationProvider.getConfiguration("mailrepositorystore")); javaMailRepositoryStore.init(); } catch (Exception e) { throw new RuntimeException(e); diff --git a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java b/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java index 63d8d97..80c77e8 100644 --- a/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java +++ b/server/data/data-memory/src/main/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStore.java @@ -34,6 +34,7 @@ import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.DefaultConfigurationBuilder; import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.james.lifecycle.api.Configurable; +import org.apache.james.lifecycle.api.Startable; import org.apache.james.mailrepository.api.MailRepository; import org.apache.james.mailrepository.api.MailRepositoryPath; import org.apache.james.mailrepository.api.MailRepositoryProvider; @@ -47,7 +48,7 @@ import org.slf4j.LoggerFactory; import com.github.fge.lambdas.Throwing; -public class MemoryMailRepositoryStore implements MailRepositoryStore, Configurable { +public class MemoryMailRepositoryStore implements MailRepositoryStore, Startable { private static final Logger LOGGER = LoggerFactory.getLogger(MemoryMailRepositoryStore.class); private final MailRepositoryUrlStore urlStore; @@ -55,26 +56,18 @@ public class MemoryMailRepositoryStore implements MailRepositoryStore, Configura private final ConcurrentMap<MailRepositoryUrl, MailRepository> destinationToRepositoryAssociations; private final Map<Protocol, MailRepositoryProvider> protocolToRepositoryProvider; private final Map<Protocol, HierarchicalConfiguration> perProtocolMailRepositoryDefaultConfiguration; - private MailRepositoryStoreConfiguration configuration; + private final MailRepositoryStoreConfiguration configuration; @Inject - public MemoryMailRepositoryStore(MailRepositoryUrlStore urlStore, Set<MailRepositoryProvider> mailRepositories) { + public MemoryMailRepositoryStore(MailRepositoryUrlStore urlStore, Set<MailRepositoryProvider> mailRepositories, MailRepositoryStoreConfiguration configuration) { this.urlStore = urlStore; this.mailRepositories = mailRepositories; + this.configuration = configuration; this.destinationToRepositoryAssociations = new ConcurrentHashMap<>(); this.protocolToRepositoryProvider = new HashMap<>(); this.perProtocolMailRepositoryDefaultConfiguration = new HashMap<>(); } - @Override - public void configure(HierarchicalConfiguration configuration) { - configure(MailRepositoryStoreConfiguration.parse(configuration)); - } - - public void configure(MailRepositoryStoreConfiguration configuration) { - this.configuration = configuration; - } - public void init() throws Exception { LOGGER.info("JamesMailStore init... {}", this); diff --git a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java b/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java index f92c93e..13aa40b 100644 --- a/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java +++ b/server/data/data-memory/src/test/java/org/apache/james/mailrepository/memory/MemoryMailRepositoryStoreTest.java @@ -61,11 +61,14 @@ public class MemoryMailRepositoryStoreTest { .build(); fileSystem = new FileSystemImpl(configuration.directories()); urlStore = new MemoryMailRepositoryUrlStore(); + + MailRepositoryStoreConfiguration storeConfiguration = MailRepositoryStoreConfiguration.parse( + new FileConfigurationProvider(fileSystem, configuration).getConfiguration("mailrepositorystore")); + repositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet( new MemoryMailRepositoryProvider(), - new MemoryMailRepositoryProvider())); - repositoryStore.configure(new FileConfigurationProvider(fileSystem, configuration) - .getConfiguration("mailrepositorystore")); + new MemoryMailRepositoryProvider()), + storeConfiguration); repositoryStore.init(); } @@ -94,9 +97,11 @@ public class MemoryMailRepositoryStoreTest { @Test public void configureShouldThrowWhenNonValidClassesAreProvided() throws Exception { + MailRepositoryStoreConfiguration storeConfiguration = MailRepositoryStoreConfiguration.parse( + new FileConfigurationProvider(fileSystem, configuration).getConfiguration("fakemailrepositorystore")); + repositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet( - new MemoryMailRepositoryProvider())); - repositoryStore.configure(new FileConfigurationProvider(fileSystem, configuration).getConfiguration("fakemailrepositorystore")); + new MemoryMailRepositoryProvider()), storeConfiguration); assertThatThrownBy(() -> repositoryStore.init()) .isInstanceOf(ConfigurationException.class); @@ -104,9 +109,10 @@ public class MemoryMailRepositoryStoreTest { @Test public void configureShouldNotThrowOnEmptyConfiguration() throws Exception { + MailRepositoryStoreConfiguration configuration = MailRepositoryStoreConfiguration.parse(new HierarchicalConfiguration()); + repositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet( - new MemoryMailRepositoryProvider())); - repositoryStore.configure(new HierarchicalConfiguration()); + new MemoryMailRepositoryProvider()), configuration); repositoryStore.init(); } diff --git a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java index b630449..5f0cd05 100644 --- a/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java +++ b/server/mailet/mailets/src/test/java/org/apache/james/transport/mailets/ToSenderDomainRepositoryTest.java @@ -69,12 +69,13 @@ class ToSenderDomainRepositoryTest { private void createMailRepositoryStore() throws Exception { MemoryMailRepositoryUrlStore urlStore = new MemoryMailRepositoryUrlStore(); - mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet(new MemoryMailRepositoryProvider())); - mailRepositoryStore.configure(new MailRepositoryStoreConfiguration( + MailRepositoryStoreConfiguration configuration = new MailRepositoryStoreConfiguration( ImmutableList.of(new MailRepositoryStoreConfiguration.Item( ImmutableList.of(new Protocol("memory")), MemoryMailRepository.class.getName(), - new HierarchicalConfiguration())))); + new HierarchicalConfiguration()))); + + mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet(new MemoryMailRepositoryProvider()), configuration); mailRepositoryStore.init(); } diff --git a/server/mailrepository/deleted-messages-vault-repository/src/test/java/org/apache/james/vault/MailRepositoryDeletedMessageVaultTest.java b/server/mailrepository/deleted-messages-vault-repository/src/test/java/org/apache/james/vault/MailRepositoryDeletedMessageVaultTest.java index 1b83686..9220f45 100644 --- a/server/mailrepository/deleted-messages-vault-repository/src/test/java/org/apache/james/vault/MailRepositoryDeletedMessageVaultTest.java +++ b/server/mailrepository/deleted-messages-vault-repository/src/test/java/org/apache/james/vault/MailRepositoryDeletedMessageVaultTest.java @@ -40,14 +40,17 @@ public class MailRepositoryDeletedMessageVaultTest implements DeletedMessageVaul @BeforeEach void setUp() throws Exception { - MemoryMailRepositoryUrlStore urlStore = new MemoryMailRepositoryUrlStore(); - MemoryMailRepositoryStore mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet(new MemoryMailRepositoryProvider())); - - mailRepositoryStore.configure(new MailRepositoryStoreConfiguration( + MailRepositoryStoreConfiguration configuration = new MailRepositoryStoreConfiguration( ImmutableList.of(new MailRepositoryStoreConfiguration.Item( ImmutableList.of(new Protocol("memory")), MemoryMailRepository.class.getName(), - new HierarchicalConfiguration())))); + new HierarchicalConfiguration()))); + + MemoryMailRepositoryUrlStore urlStore = new MemoryMailRepositoryUrlStore(); + MemoryMailRepositoryStore mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, + Sets.newHashSet(new MemoryMailRepositoryProvider()), + configuration); + mailRepositoryStore.init(); testee = new MailRepositoryDeletedMessageVault( diff --git a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java index 8281678..8c0e472 100644 --- a/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java +++ b/server/protocols/protocols-smtp/src/test/java/org/apache/james/smtpserver/SMTPServerTest.java @@ -203,11 +203,14 @@ public class SMTPServerTest { .build(); fileSystem = new FileSystemImpl(configuration.directories()); MemoryMailRepositoryUrlStore urlStore = new MemoryMailRepositoryUrlStore(); - mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet(new MemoryMailRepositoryProvider())); mailRepositoryStore.configure(new MailRepositoryStoreConfiguration( + + MailRepositoryStoreConfiguration configuration = new MailRepositoryStoreConfiguration( ImmutableList.of(new MailRepositoryStoreConfiguration.Item( ImmutableList.of(new Protocol("memory")), MemoryMailRepository.class.getName(), - new HierarchicalConfiguration())))); + new HierarchicalConfiguration()))); + + mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet(new MemoryMailRepositoryProvider()), configuration); mailRepositoryStore.init(); } diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java index cb6555f..2c20f27 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/routes/MailRepositoriesRoutesTest.java @@ -1754,7 +1754,7 @@ public class MailRepositoriesRoutesTest { private void createMailRepositoryStore() throws Exception { MemoryMailRepositoryUrlStore urlStore = new MemoryMailRepositoryUrlStore(); - mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet(new MemoryMailRepositoryProvider())); mailRepositoryStore.configure(new MailRepositoryStoreConfiguration( + MailRepositoryStoreConfiguration configuration = new MailRepositoryStoreConfiguration( ImmutableList.of(new MailRepositoryStoreConfiguration.Item( ImmutableList.of(new Protocol("memory")), MemoryMailRepository.class.getName(), @@ -1762,7 +1762,9 @@ public class MailRepositoriesRoutesTest { new MailRepositoryStoreConfiguration.Item( ImmutableList.of(new Protocol("other")), MemoryMailRepository.class.getName(), - new HierarchicalConfiguration())))); + new HierarchicalConfiguration()))); + mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet(new MemoryMailRepositoryProvider()), configuration); + mailRepositoryStore.init(); } } diff --git a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java index 5ca274a..4ffbe90 100644 --- a/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java +++ b/server/protocols/webadmin/webadmin-mailrepository/src/test/java/org/apache/james/webadmin/service/ReprocessingServiceTest.java @@ -179,12 +179,13 @@ public class ReprocessingServiceTest { private MemoryMailRepositoryStore createMemoryMailRepositoryStore() throws Exception { MemoryMailRepositoryUrlStore urlStore = new MemoryMailRepositoryUrlStore(); - MemoryMailRepositoryStore mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet(new MemoryMailRepositoryProvider())); - mailRepositoryStore.configure(new MailRepositoryStoreConfiguration( + MailRepositoryStoreConfiguration configuration = new MailRepositoryStoreConfiguration( ImmutableList.of(new MailRepositoryStoreConfiguration.Item( ImmutableList.of(new Protocol("memory")), MemoryMailRepository.class.getName(), - new HierarchicalConfiguration())))); + new HierarchicalConfiguration()))); + + MemoryMailRepositoryStore mailRepositoryStore = new MemoryMailRepositoryStore(urlStore, Sets.newHashSet(new MemoryMailRepositoryProvider()), configuration); mailRepositoryStore.init(); return mailRepositoryStore; } --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
