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/04 09:23:01 UTC
[james-project] 04/04: MAILBOX-381 MemoryMailRepositoryStore
configuration should be final
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 <bt...@linagora.com>
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: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org