JAMES-2388 create the configuration before starting injection This will allow to create different injection profiles based on the configuration
Project: http://git-wip-us.apache.org/repos/asf/james-project/repo Commit: http://git-wip-us.apache.org/repos/asf/james-project/commit/5883efbf Tree: http://git-wip-us.apache.org/repos/asf/james-project/tree/5883efbf Diff: http://git-wip-us.apache.org/repos/asf/james-project/diff/5883efbf Branch: refs/heads/master Commit: 5883efbfd8d2f1ff282d1f12e27f2b64fe6c71a5 Parents: e440858 Author: Matthieu Baechler <matth...@apache.org> Authored: Fri Apr 27 16:01:28 2018 +0200 Committer: benwa <btell...@linagora.com> Committed: Fri May 4 13:47:46 2018 +0700 ---------------------------------------------------------------------- .../smtp/host/CassandraJamesSmtpHostSystem.java | 12 ++- .../cli/SieveQuotaCommandsIntegrationTest.java | 4 +- .../server/core/MissingArgumentException.java | 28 +++++ .../core/configuration/Configuration.java | 101 ++++++++++++++++++ .../configuration/ConfigurationProvider.java | 30 ++++++ .../FileConfigurationProvider.java | 98 ++++++++++++++++++ .../server/core/filesystem/FileSystemImpl.java | 3 - .../apache/james/CassandraJamesServerMain.java | 4 +- .../modules/data/CassandraDomainListModule.java | 2 +- .../CassandraRecipientRewriteTableModule.java | 2 +- .../data/CassandraUsersRepositoryModule.java | 2 +- .../apache/james/CassandraJamesServerTest.java | 4 +- .../org/apache/james/CassandraJmapTestRule.java | 21 +++- .../org/apache/james/CassandraWithTikaTest.java | 4 +- .../james/DefaultCassandraJamesServerTest.java | 6 +- .../james/JamesCapabilitiesServerTest.java | 14 ++- .../apache/james/TempFilesystemTestRule.java | 7 +- .../modules/CassandraJmapServerModule.java | 14 +-- .../james/CassandraLdapJamesServerMain.java | 4 +- .../james/data/LdapUsersRepositoryModule.java | 2 +- .../james/CassandraLdapJamesServerTest.java | 2 +- .../apache/james/CassandraLdapJmapTestRule.java | 24 +++-- server/container/guice/configuration/pom.xml | 4 + .../james/utils/ConfigurationProvider.java | 30 ------ .../java/org/apache/james/GuiceJamesServer.java | 5 +- .../james/modules/CommonServicesModule.java | 32 +++--- .../james/modules/MissingArgumentException.java | 28 ----- .../server/ConfigurationProviderModule.java | 34 ------ .../james/modules/server/DNSServiceModule.java | 2 +- ...ltProcessorsConfigurationProviderModule.java | 2 +- .../server/MailStoreRepositoryModule.java | 2 +- .../james/utils/FileConfigurationProvider.java | 103 ------------------- .../apache/james/AbstractJamesServerTest.java | 2 +- .../james/modules/TestFilesystemModule.java | 61 ----------- .../utils/FileConfigurationProviderTest.java | 12 ++- .../utils/InMemoryMailRepositoryStoreTest.java | 15 ++- .../james/modules/data/JPADomainListModule.java | 2 +- .../data/JPARecipientRewriteTableModule.java | 2 +- .../modules/data/JPAUsersRepositoryModule.java | 2 +- .../org/apache/james/JPAJamesServerMain.java | 4 +- .../org/apache/james/JPAJamesServerTest.java | 16 ++- .../james/JamesCapabilitiesServerTest.java | 14 ++- .../org/apache/james/JPAJamesServerMain.java | 4 +- .../org/apache/james/JPAJamesServerTest.java | 12 ++- .../modules/mailbox/DefaultEventModule.java | 2 +- .../server/CamelMailetContainerModule.java | 2 +- .../org/apache/james/MemoryJamesServerMain.java | 4 +- .../james/modules/data/MemoryDataModule.java | 2 +- .../james/DefaultMemoryJamesServerTest.java | 6 +- .../org/apache/james/GuiceJamesServerTest.java | 3 +- .../org/apache/james/MemoryJamesServerTest.java | 4 +- .../org/apache/james/MemoryJmapTestRule.java | 15 ++- .../modules/protocols/IMAPServerModule.java | 2 +- .../java/org/apache/james/jmap/JMAPModule.java | 2 +- .../james/AbstractJmapJamesServerTest.java | 2 +- .../modules/protocols/LMTPServerModule.java | 2 +- .../protocols/ManageSieveServerModule.java | 2 +- .../modules/protocols/POP3ServerModule.java | 2 +- .../modules/protocols/SMTPServerModule.java | 2 +- .../mailets/TemporaryFilesystemModule.java | 95 ----------------- .../james/mailets/TemporaryJamesServer.java | 37 ++++++- .../CassandraForwardIntegrationTest.java | 4 +- .../CassandraGetMailboxesMethodTest.java | 4 +- .../CassandraGetMessageListMethodTest.java | 4 +- .../CassandraGetVacationResponseTest.java | 4 +- .../CassandraJmapAuthenticationTest.java | 4 +- .../jmap/cassandra/CassandraJmapExtension.java | 13 ++- .../cassandra/CassandraProvisioningTest.java | 4 +- .../cassandra/CassandraSendMDNMethodTest.java | 4 +- .../CassandraSetMailboxesMethodTest.java | 4 +- .../CassandraSetMessagesMethodTest.java | 4 +- .../CassandraSetVacationResponseTest.java | 4 +- .../CassandraVacationIntegrationTest.java | 4 +- .../CassandraVacationRelayIntegrationTest.java | 4 +- .../cassandra/cucumber/CassandraStepdefs.java | 10 +- .../james/jmap/JMAPAuthenticationTest.java | 3 +- .../org/apache/james/jmap/ProvisioningTest.java | 3 +- .../james/jmap/VacationIntegrationTest.java | 3 +- .../jmap/VacationRelayIntegrationTest.java | 3 +- .../integration/ForwardIntegrationTest.java | 3 +- .../integration/GetMailboxesMethodTest.java | 3 +- .../integration/GetMessageListMethodTest.java | 3 +- .../integration/GetVacationResponseTest.java | 3 +- .../methods/integration/SendMDNMethodTest.java | 3 +- .../integration/SetMailboxesMethodTest.java | 4 +- .../integration/SetMessagesMethodTest.java | 2 +- .../integration/SetVacationResponseTest.java | 3 +- .../memory/MemoryForwardIntegrationTest.java | 4 +- .../memory/MemoryGetMailboxesMethodTest.java | 4 +- .../memory/MemoryGetMessageListMethodTest.java | 4 +- .../MemoryGetVacationResponseMethodTest.java | 4 +- .../memory/MemoryJmapAuthenticationTest.java | 4 +- .../james/jmap/memory/MemoryJmapExtension.java | 19 ++-- .../jmap/memory/MemoryProvisioningTest.java | 4 +- .../jmap/memory/MemorySendMDNMethodTest.java | 3 +- .../memory/MemorySetMailboxesMethodTest.java | 4 +- .../memory/MemorySetMessagesMethodTest.java | 3 +- .../MemorySetVacationResponseMethodTest.java | 4 +- .../memory/MemoryVacationIntegrationTest.java | 4 +- .../MemoryVacationRelayIntegrationTest.java | 4 +- .../jmap/memory/cucumber/MemoryStepdefs.java | 13 ++- .../jmap/servers/MemoryJmapServerModule.java | 43 -------- 102 files changed, 621 insertions(+), 567 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java ---------------------------------------------------------------------- diff --git a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java index 51c942a..ac10a8f 100644 --- a/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java +++ b/mpt/impl/smtp/cassandra/src/test/java/org/apache/james/mpt/smtp/host/CassandraJamesSmtpHostSystem.java @@ -32,6 +32,7 @@ import org.apache.james.modules.protocols.ProtocolHandlerModule; import org.apache.james.mpt.monitor.SystemLoggingMonitor; import org.apache.james.mpt.session.ExternalSessionFactory; import org.apache.james.mpt.smtp.SmtpHostSystem; +import org.apache.james.server.core.configuration.Configuration; import org.apache.james.utils.DataProbeImpl; import org.junit.rules.TemporaryFolder; @@ -101,10 +102,15 @@ public class CassandraJamesSmtpHostSystem extends ExternalSessionFactory impleme return inMemoryDNSService; } - protected GuiceJamesServer createJamesServer() { - return new GuiceJamesServer() + protected GuiceJamesServer createJamesServer() throws Exception { + Configuration configuration = Configuration.builder() + .workingDirectory(folder.newFolder()) + .configurationFromClasspath() + .build(); + + return new GuiceJamesServer(configuration) .combineWith(CassandraJamesServerMain.CASSANDRA_SERVER_MODULE, CassandraJamesServerMain.PROTOCOLS, new ProtocolHandlerModule()) - .overrideWith(new CassandraJmapServerModule(folder::getRoot, embeddedElasticSearch, cassandraHost, cassandraPort), + .overrideWith(new CassandraJmapServerModule(embeddedElasticSearch, cassandraHost, cassandraPort), (binder) -> binder.bind(DNSService.class).toInstance(inMemoryDNSService)); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/cli-integration/src/test/java/org/apache/james/cli/SieveQuotaCommandsIntegrationTest.java ---------------------------------------------------------------------- diff --git a/server/container/cli-integration/src/test/java/org/apache/james/cli/SieveQuotaCommandsIntegrationTest.java b/server/container/cli-integration/src/test/java/org/apache/james/cli/SieveQuotaCommandsIntegrationTest.java index 4e086ab..ac7d5b4 100644 --- a/server/container/cli-integration/src/test/java/org/apache/james/cli/SieveQuotaCommandsIntegrationTest.java +++ b/server/container/cli-integration/src/test/java/org/apache/james/cli/SieveQuotaCommandsIntegrationTest.java @@ -26,7 +26,6 @@ import org.apache.james.GuiceJamesServer; import org.apache.james.MemoryJmapTestRule; import org.apache.james.cli.util.OutputCapture; import org.apache.james.mailbox.store.search.ListeningMessageSearchIndex; -import org.apache.james.modules.TestFilesystemModule; import org.apache.james.modules.protocols.SieveProbeImpl; import org.apache.james.modules.server.JMXServerModule; import org.apache.james.sieverepository.api.exception.QuotaNotFoundException; @@ -53,8 +52,7 @@ public class SieveQuotaCommandsIntegrationTest { @Before public void setUp() throws Exception { guiceJamesServer = memoryJmap.jmapServer(new JMXServerModule(), - binder -> binder.bind(ListeningMessageSearchIndex.class).toInstance(mock(ListeningMessageSearchIndex.class))) - .overrideWith(new TestFilesystemModule(temporaryFolder)); + binder -> binder.bind(ListeningMessageSearchIndex.class).toInstance(mock(ListeningMessageSearchIndex.class))); guiceJamesServer.start(); outputCapture = new OutputCapture(); sieveProbe = guiceJamesServer.getProbe(SieveProbeImpl.class); http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/core/src/main/java/org/apache/james/server/core/MissingArgumentException.java ---------------------------------------------------------------------- diff --git a/server/container/core/src/main/java/org/apache/james/server/core/MissingArgumentException.java b/server/container/core/src/main/java/org/apache/james/server/core/MissingArgumentException.java new file mode 100644 index 0000000..ccff818 --- /dev/null +++ b/server/container/core/src/main/java/org/apache/james/server/core/MissingArgumentException.java @@ -0,0 +1,28 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.server.core; + +public class MissingArgumentException extends RuntimeException { + + public MissingArgumentException(String message) { + super(message); + } + +} http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/core/src/main/java/org/apache/james/server/core/configuration/Configuration.java ---------------------------------------------------------------------- diff --git a/server/container/core/src/main/java/org/apache/james/server/core/configuration/Configuration.java b/server/container/core/src/main/java/org/apache/james/server/core/configuration/Configuration.java new file mode 100644 index 0000000..233913c --- /dev/null +++ b/server/container/core/src/main/java/org/apache/james/server/core/configuration/Configuration.java @@ -0,0 +1,101 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.server.core.configuration; + +import java.io.File; +import java.util.Optional; + +import org.apache.james.filesystem.api.FileSystem; +import org.apache.james.filesystem.api.JamesDirectoriesProvider; +import org.apache.james.server.core.JamesServerResourceLoader; +import org.apache.james.server.core.MissingArgumentException; + +public class Configuration { + + public static final String WORKING_DIRECTORY = "working.directory"; + + public static Builder builder() { + return new Builder(); + } + + public static class Builder { + + private Optional<String> rootDirectory; + private Optional<String> configurationPath; + + private Builder() { + rootDirectory = Optional.empty(); + configurationPath = Optional.empty(); + } + + public Builder workingDirectory(String path) { + rootDirectory = Optional.of(path); + return this; + } + + public Builder workingDirectory(File file) { + rootDirectory = Optional.of(file.getAbsolutePath()); + return this; + } + + public Builder useWorkingDirectoryEnvProperty() { + rootDirectory = Optional + .ofNullable(System.getProperty(WORKING_DIRECTORY)); + if (!rootDirectory.isPresent()) { + throw new MissingArgumentException("Server needs a working.directory env entry"); + } + return this; + } + + public Builder configurationPath(String path) { + configurationPath = Optional.of(path); + return this; + } + + public Builder configurationFromClasspath() { + configurationPath = Optional.of(FileSystem.CLASSPATH_PROTOCOL); + return this; + } + + public Configuration build() { + return new Configuration( + rootDirectory + .orElseThrow(() -> new MissingArgumentException("Server needs a working.directory env entry")), + configurationPath.orElse(FileSystem.FILE_PROTOCOL_AND_CONF)); + } + } + + private final String configurationPath; + private final JamesDirectoriesProvider directoriesProvider; + + private Configuration(String rootDirectory, String configurationPath) { + this.configurationPath = configurationPath; + this.directoriesProvider = new JamesServerResourceLoader(rootDirectory); + } + + public String configurationPath() { + return configurationPath; + } + + public JamesDirectoriesProvider directories() { + return directoriesProvider; + } + +} http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/core/src/main/java/org/apache/james/server/core/configuration/ConfigurationProvider.java ---------------------------------------------------------------------- diff --git a/server/container/core/src/main/java/org/apache/james/server/core/configuration/ConfigurationProvider.java b/server/container/core/src/main/java/org/apache/james/server/core/configuration/ConfigurationProvider.java new file mode 100644 index 0000000..c1f5539 --- /dev/null +++ b/server/container/core/src/main/java/org/apache/james/server/core/configuration/ConfigurationProvider.java @@ -0,0 +1,30 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.server.core.configuration; + +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.HierarchicalConfiguration; + +public interface ConfigurationProvider { + + HierarchicalConfiguration getConfiguration(String component) + throws ConfigurationException; + +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/core/src/main/java/org/apache/james/server/core/configuration/FileConfigurationProvider.java ---------------------------------------------------------------------- diff --git a/server/container/core/src/main/java/org/apache/james/server/core/configuration/FileConfigurationProvider.java b/server/container/core/src/main/java/org/apache/james/server/core/configuration/FileConfigurationProvider.java new file mode 100644 index 0000000..bf818cf --- /dev/null +++ b/server/container/core/src/main/java/org/apache/james/server/core/configuration/FileConfigurationProvider.java @@ -0,0 +1,98 @@ +/**************************************************************** + * Licensed to the Apache Software Foundation (ASF) under one * + * or more contributor license agreements. See the NOTICE file * + * distributed with this work for additional information * + * regarding copyright ownership. The ASF licenses this file * + * to you under the Apache License, Version 2.0 (the * + * "License"); you may not use this file except in compliance * + * with the License. You may obtain a copy of the License at * + * * + * http://www.apache.org/licenses/LICENSE-2.0 * + * * + * Unless required by applicable law or agreed to in writing, * + * software distributed under the License is distributed on an * + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * + * KIND, either express or implied. See the License for the * + * specific language governing permissions and limitations * + * under the License. * + ****************************************************************/ + +package org.apache.james.server.core.configuration; + +import java.io.IOException; +import java.io.InputStream; +import java.util.List; +import java.util.Optional; + +import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration.HierarchicalConfiguration; +import org.apache.commons.configuration.XMLConfiguration; +import org.apache.james.filesystem.api.FileSystem; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import com.google.common.base.Preconditions; +import com.google.common.base.Splitter; +import com.google.common.base.Strings; +import com.google.common.collect.Iterables; + +public class FileConfigurationProvider implements ConfigurationProvider { + + private static final Logger LOGGER = LoggerFactory.getLogger(FileConfigurationProvider.class); + private static final String CONFIGURATION_FILE_SUFFIX = ".xml"; + public static final HierarchicalConfiguration EMTY_CONFIGURATION = new HierarchicalConfiguration(); + + public static XMLConfiguration getConfig(InputStream configStream) throws ConfigurationException { + XMLConfiguration config = new XMLConfiguration(); + config.setDelimiterParsingDisabled(true); + config.setAttributeSplittingDisabled(true); + config.load(configStream); + return config; + } + + private final FileSystem fileSystem; + private final String configurationPrefix; + + public FileConfigurationProvider(FileSystem fileSystem, Configuration configuration) { + this.fileSystem = fileSystem; + this.configurationPrefix = configuration.configurationPath(); + } + + @Override + public HierarchicalConfiguration getConfiguration(String component) throws ConfigurationException { + Preconditions.checkNotNull(component); + List<String> configPathParts = Splitter.on(".").splitToList(component); + Preconditions.checkArgument(!configPathParts.isEmpty()); + + Optional<InputStream> inputStream = retrieveConfigInputStream(configPathParts.get(0)); + if (inputStream.isPresent()) { + return selectConfigurationPart(configPathParts, + getConfig(inputStream.get())); + } + return EMTY_CONFIGURATION; + } + + private HierarchicalConfiguration selectConfigurationPart(List<String> configPathParts, HierarchicalConfiguration config) { + return selectHierarchicalConfigPart(config, Iterables.skip(configPathParts, 1)); + } + + private Optional<InputStream> retrieveConfigInputStream(String configurationFileWithoutExtension) throws ConfigurationException { + Preconditions.checkArgument(!Strings.isNullOrEmpty(configurationFileWithoutExtension), "The configuration file name should not be empty or null"); + try { + return Optional.of( + fileSystem.getResource(configurationPrefix + configurationFileWithoutExtension + CONFIGURATION_FILE_SUFFIX)); + } catch (IOException e) { + LOGGER.warn("Unable to locate configuration file {}" + CONFIGURATION_FILE_SUFFIX + ", assuming empty configuration", configurationFileWithoutExtension); + return Optional.empty(); + } + } + + private HierarchicalConfiguration selectHierarchicalConfigPart(HierarchicalConfiguration config, Iterable<String> configsPathParts) { + HierarchicalConfiguration currentConfig = config; + for (String nextPathPart : configsPathParts) { + currentConfig = currentConfig.configurationAt(nextPathPart); + } + return currentConfig; + } + +} http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/core/src/main/java/org/apache/james/server/core/filesystem/FileSystemImpl.java ---------------------------------------------------------------------- diff --git a/server/container/core/src/main/java/org/apache/james/server/core/filesystem/FileSystemImpl.java b/server/container/core/src/main/java/org/apache/james/server/core/filesystem/FileSystemImpl.java index a068f86..8416c0e 100644 --- a/server/container/core/src/main/java/org/apache/james/server/core/filesystem/FileSystemImpl.java +++ b/server/container/core/src/main/java/org/apache/james/server/core/filesystem/FileSystemImpl.java @@ -23,8 +23,6 @@ import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; -import javax.inject.Inject; - import org.apache.james.filesystem.api.FileSystem; import org.apache.james.filesystem.api.JamesDirectoriesProvider; @@ -33,7 +31,6 @@ public class FileSystemImpl implements FileSystem { private final JamesDirectoriesProvider directoryProvider; private final ResourceFactory resourceLoader; - @Inject public FileSystemImpl(JamesDirectoriesProvider directoryProvider) { this.directoryProvider = directoryProvider; this.resourceLoader = new ResourceFactory(directoryProvider); http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java index d9d5a1e..b51bef7 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/CassandraJamesServerMain.java @@ -49,6 +49,7 @@ import org.apache.james.modules.server.MailboxRoutesModule; import org.apache.james.modules.server.SwaggerRoutesModule; import org.apache.james.modules.server.WebAdminServerModule; import org.apache.james.modules.spamassassin.SpamAssassinListenerModule; +import org.apache.james.server.core.configuration.Configuration; import com.google.inject.Module; import com.google.inject.util.Modules; @@ -92,7 +93,8 @@ public class CassandraJamesServerMain { new SpamAssassinListenerModule()); public static void main(String[] args) throws Exception { - GuiceJamesServer server = new GuiceJamesServer() + Configuration configuration = Configuration.builder().useWorkingDirectoryEnvProperty().build(); + GuiceJamesServer server = new GuiceJamesServer(configuration) .combineWith(CASSANDRA_SERVER_MODULE, PROTOCOLS, new JMXServerModule()); server.start(); } http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java index 1b3c912..9830600 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraDomainListModule.java @@ -25,8 +25,8 @@ import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.cassandra.CassandraDomainList; import org.apache.james.lifecycle.api.Configurable; +import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.utils.ConfigurationPerformer; -import org.apache.james.utils.ConfigurationProvider; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraRecipientRewriteTableModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraRecipientRewriteTableModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraRecipientRewriteTableModule.java index 4efd0cb..7943220 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraRecipientRewriteTableModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraRecipientRewriteTableModule.java @@ -26,8 +26,8 @@ import org.apache.james.lifecycle.api.Configurable; import org.apache.james.rrt.api.RecipientRewriteTable; import org.apache.james.rrt.cassandra.CassandraRRTModule; import org.apache.james.rrt.cassandra.CassandraRecipientRewriteTable; +import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.utils.ConfigurationPerformer; -import org.apache.james.utils.ConfigurationProvider; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java index f5bb2b4..b031118 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/data/CassandraUsersRepositoryModule.java @@ -23,10 +23,10 @@ import java.util.List; import org.apache.commons.configuration.ConfigurationException; import org.apache.james.backends.cassandra.components.CassandraModule; import org.apache.james.lifecycle.api.Configurable; +import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.user.api.UsersRepository; import org.apache.james.user.cassandra.CassandraUsersRepository; import org.apache.james.utils.ConfigurationPerformer; -import org.apache.james.utils.ConfigurationProvider; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java index 5b4dbd6..50b5cbe 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJamesServerTest.java @@ -19,6 +19,8 @@ package org.apache.james; +import java.io.IOException; + import org.junit.ClassRule; import org.junit.Rule; @@ -31,7 +33,7 @@ public class CassandraJamesServerTest extends AbstractJmapJamesServerTest { public CassandraJmapTestRule cassandraJmap = CassandraJmapTestRule.defaultTestRule(); @Override - protected GuiceJamesServer createJamesServer() { + protected GuiceJamesServer createJamesServer() throws IOException { return cassandraJmap.jmapServer(cassandra.getModule()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java index 36eae85..e5fe99a 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraJmapTestRule.java @@ -18,10 +18,15 @@ ****************************************************************/ package org.apache.james; + +import java.io.IOException; + import org.apache.james.mailbox.extractor.TextExtractor; import org.apache.james.mailbox.store.search.PDFTextExtractor; import org.apache.james.modules.TestESMetricReporterModule; import org.apache.james.modules.TestJMAPServerModule; +import org.apache.james.server.core.configuration.Configuration; +import org.junit.rules.TemporaryFolder; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; @@ -32,22 +37,30 @@ import com.google.inject.Module; public class CassandraJmapTestRule implements TestRule { private static final int LIMIT_TO_3_MESSAGES = 3; + private final TemporaryFolder temporaryFolder; public static CassandraJmapTestRule defaultTestRule() { return new CassandraJmapTestRule(new EmbeddedElasticSearchRule()); } - private GuiceModuleTestRule guiceModuleTestRule; + private final GuiceModuleTestRule guiceModuleTestRule; public CassandraJmapTestRule(GuiceModuleTestRule... guiceModuleTestRule) { + TempFilesystemTestRule tempFilesystemTestRule = new TempFilesystemTestRule(); + this.temporaryFolder = tempFilesystemTestRule.getTemporaryFolder(); this.guiceModuleTestRule = AggregateGuiceModuleTestRule .of(guiceModuleTestRule) - .aggregate(new TempFilesystemTestRule()); + .aggregate(tempFilesystemTestRule); } - public GuiceJamesServer jmapServer(Module... additionals) { - return new GuiceJamesServer() + public GuiceJamesServer jmapServer(Module... additionals) throws IOException { + Configuration configuration = Configuration.builder() + .workingDirectory(temporaryFolder.newFolder()) + .configurationFromClasspath() + .build(); + + return new GuiceJamesServer(configuration) .combineWith(CassandraJamesServerMain.CASSANDRA_SERVER_MODULE, CassandraJamesServerMain.PROTOCOLS) .overrideWith(binder -> binder.bind(TextExtractor.class).to(PDFTextExtractor.class)) .overrideWith(new TestJMAPServerModule(LIMIT_TO_3_MESSAGES)) http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java index 479a82d..54b5bbf 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/CassandraWithTikaTest.java @@ -19,6 +19,8 @@ package org.apache.james; +import java.io.IOException; + import org.junit.Rule; public class CassandraWithTikaTest extends AbstractJmapJamesServerTest { @@ -33,7 +35,7 @@ public class CassandraWithTikaTest extends AbstractJmapJamesServerTest { guiceTikaRule)); @Override - protected GuiceJamesServer createJamesServer() { + protected GuiceJamesServer createJamesServer() throws IOException { return cassandraJmap.jmapServer(binder -> guiceTikaRule.getModule()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java index c2960e4..d4b2b75 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/DefaultCassandraJamesServerTest.java @@ -21,8 +21,10 @@ package org.apache.james; import static org.assertj.core.api.Assertions.assertThat; +import java.io.IOException; + import org.apache.commons.configuration.HierarchicalConfiguration; -import org.apache.james.utils.ConfigurationProvider; +import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.utils.FailingPropertiesProvider; import org.apache.james.utils.PropertiesProvider; import org.junit.After; @@ -42,7 +44,7 @@ public class DefaultCassandraJamesServerTest { private GuiceJamesServer guiceJamesServer; @Before - public void setUp() { + public void setUp() throws IOException { guiceJamesServer = cassandraJmap.jmapServer(cassandra.getModule()) .overrideWith(binder -> binder.bind(PropertiesProvider.class).to(FailingPropertiesProvider.class)) .overrideWith(binder -> binder.bind(ConfigurationProvider.class).toInstance(s -> new HierarchicalConfiguration())); http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java index 8572be6..fd1173b 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/JamesCapabilitiesServerTest.java @@ -22,6 +22,7 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; +import java.io.IOException; import java.util.EnumSet; import org.apache.activemq.store.PersistenceAdapter; @@ -31,8 +32,8 @@ import org.apache.james.jmap.methods.GetMessageListMethod; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.elasticsearch.MailboxElasticSearchConstants; import org.apache.james.modules.TestElasticSearchModule; -import org.apache.james.modules.TestFilesystemModule; import org.apache.james.modules.TestJMAPServerModule; +import org.apache.james.server.core.configuration.Configuration; import org.junit.After; import org.junit.Rule; import org.junit.Test; @@ -57,14 +58,17 @@ public class JamesCapabilitiesServerTest { } - private GuiceJamesServer createCassandraJamesServer(final MailboxManager mailboxManager) { + private GuiceJamesServer createCassandraJamesServer(final MailboxManager mailboxManager) throws IOException { Module mockMailboxManager = (binder) -> binder.bind(MailboxManager.class).toInstance(mailboxManager); - - return new GuiceJamesServer() + Configuration configuration = Configuration.builder() + .workingDirectory(temporaryFolder.newFolder()) + .configurationFromClasspath() + .build(); + + return new GuiceJamesServer(configuration) .combineWith(CassandraJamesServerMain.CASSANDRA_SERVER_MODULE, CassandraJamesServerMain.PROTOCOLS) .overrideWith((binder) -> binder.bind(PersistenceAdapter.class).to(MemoryPersistenceAdapter.class)) .overrideWith(new TestElasticSearchModule(embeddedElasticSearch), - new TestFilesystemModule(temporaryFolder), cassandraServer.getModule(), new TestJMAPServerModule(GetMessageListMethod.DEFAULT_MAXIMUM_LIMIT), mockMailboxManager); http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/test/java/org/apache/james/TempFilesystemTestRule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/TempFilesystemTestRule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/TempFilesystemTestRule.java index 4037f0c..54d5c12 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/TempFilesystemTestRule.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/TempFilesystemTestRule.java @@ -19,7 +19,6 @@ package org.apache.james; -import org.apache.james.modules.TestFilesystemModule; import org.junit.rules.TemporaryFolder; import org.junit.runner.Description; import org.junit.runners.model.Statement; @@ -34,6 +33,10 @@ public class TempFilesystemTestRule implements GuiceModuleTestRule { this.temporaryFolder = new TemporaryFolder(); } + public TemporaryFolder getTemporaryFolder() { + return temporaryFolder; + } + @Override public Statement apply(Statement base, Description description) { return temporaryFolder.apply(base, description); @@ -41,7 +44,7 @@ public class TempFilesystemTestRule implements GuiceModuleTestRule { @Override public Module getModule() { - return new TestFilesystemModule(temporaryFolder::getRoot); + return binder -> { }; } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraJmapServerModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraJmapServerModule.java b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraJmapServerModule.java index 29434d5..ee72ccd 100644 --- a/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraJmapServerModule.java +++ b/server/container/guice/cassandra-guice/src/test/java/org/apache/james/modules/CassandraJmapServerModule.java @@ -19,16 +19,12 @@ package org.apache.james.modules; -import java.io.File; -import java.util.function.Supplier; - import javax.inject.Singleton; import org.apache.james.backends.cassandra.CassandraCluster; import org.apache.james.backends.es.EmbeddedElasticSearch; import org.apache.james.mailbox.extractor.TextExtractor; import org.apache.james.mailbox.store.extractor.DefaultTextExtractor; -import org.junit.rules.TemporaryFolder; import com.datastax.driver.core.Session; import com.google.inject.AbstractModule; @@ -38,27 +34,19 @@ import com.google.inject.name.Names; public class CassandraJmapServerModule extends AbstractModule { private static final int LIMIT_TO_3_MESSAGES = 3; - private final Supplier<File> fileSupplier; private final EmbeddedElasticSearch embeddedElasticSearch; private final String cassandraHost; private final int cassandraPort; - public CassandraJmapServerModule(Supplier<File> fileSupplier, EmbeddedElasticSearch embeddedElasticSearch, String cassandraHost, int cassandraPort) { - this.fileSupplier = fileSupplier; + public CassandraJmapServerModule(EmbeddedElasticSearch embeddedElasticSearch, String cassandraHost, int cassandraPort) { this.embeddedElasticSearch = embeddedElasticSearch; this.cassandraHost = cassandraHost; this.cassandraPort = cassandraPort; } - public CassandraJmapServerModule(TemporaryFolder temporaryFolder, EmbeddedElasticSearch embeddedElasticSearch, String cassandraHost, int cassandraPort) { - this(temporaryFolder::getRoot, embeddedElasticSearch, cassandraHost, cassandraPort); - } - - @Override protected void configure() { install(new TestElasticSearchModule(embeddedElasticSearch)); - install(new TestFilesystemModule(fileSupplier)); install(new TestJMAPServerModule(LIMIT_TO_3_MESSAGES)); install(binder -> binder.bind(TextExtractor.class).to(DefaultTextExtractor.class)); install(binder -> binder.bindConstant().annotatedWith(Names.named("cassandraHost")).to(cassandraHost)); http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/CassandraLdapJamesServerMain.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/CassandraLdapJamesServerMain.java b/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/CassandraLdapJamesServerMain.java index 042cb2b..61230f8 100644 --- a/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/CassandraLdapJamesServerMain.java +++ b/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/CassandraLdapJamesServerMain.java @@ -21,6 +21,7 @@ package org.apache.james; import org.apache.james.data.LdapUsersRepositoryModule; import org.apache.james.modules.server.JMXServerModule; +import org.apache.james.server.core.configuration.Configuration; import com.google.inject.Module; import com.google.inject.util.Modules; @@ -31,7 +32,8 @@ public class CassandraLdapJamesServerMain { .with(new LdapUsersRepositoryModule()); public static void main(String[] args) throws Exception { - GuiceJamesServer server = new GuiceJamesServer() + Configuration configuration = Configuration.builder().useWorkingDirectoryEnvProperty().build(); + GuiceJamesServer server = new GuiceJamesServer(configuration) .combineWith(cassandraLdapServerModule, new JMXServerModule()); server.start(); http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/data/LdapUsersRepositoryModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/data/LdapUsersRepositoryModule.java b/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/data/LdapUsersRepositoryModule.java index adfa373..3ef84fc 100644 --- a/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/data/LdapUsersRepositoryModule.java +++ b/server/container/guice/cassandra-ldap-guice/src/main/java/org/apache/james/data/LdapUsersRepositoryModule.java @@ -21,10 +21,10 @@ package org.apache.james.data; import java.util.List; import org.apache.james.lifecycle.api.Configurable; +import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.user.api.UsersRepository; import org.apache.james.user.ldap.ReadOnlyUsersLDAPRepository; import org.apache.james.utils.ConfigurationPerformer; -import org.apache.james.utils.ConfigurationProvider; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJamesServerTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJamesServerTest.java b/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJamesServerTest.java index de2ac6c..9e7150f 100644 --- a/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJamesServerTest.java +++ b/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJamesServerTest.java @@ -48,7 +48,7 @@ public class CassandraLdapJamesServerTest extends AbstractJmapJamesServerTest { public RuleChain ruleChain = RuleChain.outerRule(ldapContainer).around(cassandraLdapJmap); @Override - protected GuiceJamesServer createJamesServer() { + protected GuiceJamesServer createJamesServer() throws IOException { ldapContainer.start(); return cassandraLdapJmap.jmapServer(ldapContainer.getLdapHost()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapTestRule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapTestRule.java b/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapTestRule.java index 25a7dca..3a81da6 100644 --- a/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapTestRule.java +++ b/server/container/guice/cassandra-ldap-guice/src/test/java/org/apache/james/CassandraLdapJmapTestRule.java @@ -19,12 +19,16 @@ package org.apache.james; +import java.io.IOException; + import org.apache.commons.configuration.HierarchicalConfiguration; import org.apache.commons.configuration.plist.PropertyListConfiguration; import org.apache.james.http.jetty.ConfigurationException; import org.apache.james.modules.TestJMAPServerModule; -import org.apache.james.utils.ConfigurationProvider; -import org.apache.james.utils.FileConfigurationProvider; +import org.apache.james.server.core.configuration.Configuration; +import org.apache.james.server.core.configuration.ConfigurationProvider; +import org.apache.james.server.core.configuration.FileConfigurationProvider; +import org.junit.rules.TemporaryFolder; import org.junit.rules.TestRule; import org.junit.runner.Description; import org.junit.runners.model.Statement; @@ -42,17 +46,25 @@ public class CassandraLdapJmapTestRule implements TestRule { AggregateGuiceModuleTestRule.of(new EmbeddedElasticSearchRule(), new DockerCassandraRule())); } - private GuiceModuleTestRule guiceModuleTestRule; + private final TemporaryFolder temporaryFolder; + private final GuiceModuleTestRule guiceModuleTestRule; public CassandraLdapJmapTestRule(GuiceModuleTestRule... guiceModuleTestRule) { + TempFilesystemTestRule tempFilesystemTestRule = new TempFilesystemTestRule(); + temporaryFolder = tempFilesystemTestRule.getTemporaryFolder(); this.guiceModuleTestRule = AggregateGuiceModuleTestRule .of(guiceModuleTestRule) - .aggregate(new TempFilesystemTestRule()); + .aggregate(tempFilesystemTestRule); } - public GuiceJamesServer jmapServer(String ldapIp, Module... additionals) { - return new GuiceJamesServer() + public GuiceJamesServer jmapServer(String ldapIp, Module... additionals) throws IOException { + Configuration configuration = Configuration.builder() + .workingDirectory(temporaryFolder.newFolder()) + .configurationFromClasspath() + .build(); + + return new GuiceJamesServer(configuration) .combineWith(CassandraLdapJamesServerMain.cassandraLdapServerModule, binder -> binder.bind(String.class).annotatedWith(Names.named("ldapIp")).toInstance(ldapIp)) .overrideWith(new TestJMAPServerModule(LIMIT_TO_3_MESSAGES)) http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/configuration/pom.xml ---------------------------------------------------------------------- diff --git a/server/container/guice/configuration/pom.xml b/server/container/guice/configuration/pom.xml index 51a505b..52cbf2f 100644 --- a/server/container/guice/configuration/pom.xml +++ b/server/container/guice/configuration/pom.xml @@ -34,6 +34,10 @@ <dependencies> <dependency> <groupId>${project.groupId}</groupId> + <artifactId>james-server-core</artifactId> + </dependency> + <dependency> + <groupId>${project.groupId}</groupId> <artifactId>james-server-filesystem-api</artifactId> </dependency> <dependency> http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/configuration/src/main/java/org/apache/james/utils/ConfigurationProvider.java ---------------------------------------------------------------------- diff --git a/server/container/guice/configuration/src/main/java/org/apache/james/utils/ConfigurationProvider.java b/server/container/guice/configuration/src/main/java/org/apache/james/utils/ConfigurationProvider.java deleted file mode 100644 index cf3126e..0000000 --- a/server/container/guice/configuration/src/main/java/org/apache/james/utils/ConfigurationProvider.java +++ /dev/null @@ -1,30 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ - -package org.apache.james.utils; - -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.HierarchicalConfiguration; - -public interface ConfigurationProvider { - - HierarchicalConfiguration getConfiguration(String component) - throws ConfigurationException; - -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceJamesServer.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceJamesServer.java b/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceJamesServer.java index 510a85b..6b774c5 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceJamesServer.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/GuiceJamesServer.java @@ -26,6 +26,7 @@ import javax.annotation.PreDestroy; import org.apache.james.modules.CommonServicesModule; import org.apache.james.modules.MailetProcessingModule; import org.apache.james.onami.lifecycle.Stager; +import org.apache.james.server.core.configuration.Configuration; import org.apache.james.utils.ConfigurationsPerformer; import org.apache.james.utils.GuiceProbe; import org.apache.james.utils.GuiceProbeProvider; @@ -45,9 +46,9 @@ public class GuiceJamesServer { private GuiceProbeProvider guiceProbeProvider; private boolean isStarted = false; - public GuiceJamesServer() { + public GuiceJamesServer(Configuration configuration) { this(Modules.combine( - new CommonServicesModule(), + new CommonServicesModule(configuration), new MailetProcessingModule())); } http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/main/java/org/apache/james/modules/CommonServicesModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/CommonServicesModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/CommonServicesModule.java index aa44802..986a65a 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/CommonServicesModule.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/CommonServicesModule.java @@ -19,49 +19,52 @@ package org.apache.james.modules; -import java.util.Optional; - import javax.inject.Named; import javax.inject.Singleton; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.filesystem.api.JamesDirectoriesProvider; import org.apache.james.modules.server.AsyncTasksExecutorModule; -import org.apache.james.modules.server.ConfigurationProviderModule; import org.apache.james.modules.server.DNSServiceModule; import org.apache.james.modules.server.DropWizardMetricsModule; import org.apache.james.modules.server.TaskManagerModule; import org.apache.james.onami.lifecycle.PreDestroyModule; -import org.apache.james.server.core.JamesServerResourceLoader; +import org.apache.james.server.core.configuration.Configuration; +import org.apache.james.server.core.configuration.ConfigurationProvider; +import org.apache.james.server.core.configuration.FileConfigurationProvider; import org.apache.james.server.core.filesystem.FileSystemImpl; import org.apache.james.utils.DataProbeImpl; import org.apache.james.utils.GuiceProbe; import com.google.inject.AbstractModule; import com.google.inject.Provides; -import com.google.inject.Scopes; import com.google.inject.multibindings.Multibinder; public class CommonServicesModule extends AbstractModule { public static final String CONFIGURATION_PATH = "configurationPath"; - - public CommonServicesModule() { + private final Configuration configuration; + private final FileSystemImpl fileSystem; + + public CommonServicesModule(Configuration configuration) { + this.configuration = configuration; + this.fileSystem = new FileSystemImpl(configuration.directories()); + } @Override protected void configure() { install(new ConfigurablesModule()); - install(new ConfigurationProviderModule()); install(new PreDestroyModule()); install(new DNSServiceModule()); install(new AsyncTasksExecutorModule()); install(new DropWizardMetricsModule()); install(new TaskManagerModule()); - bind(FileSystemImpl.class).in(Scopes.SINGLETON); + bind(FileSystem.class).toInstance(fileSystem); + + bind(ConfigurationProvider.class).toInstance(new FileConfigurationProvider(fileSystem, configuration)); - bind(FileSystem.class).to(FileSystemImpl.class); Multibinder.newSetBinder(binder(), GuiceProbe.class).addBinding().to(DataProbeImpl.class); } @@ -69,16 +72,13 @@ public class CommonServicesModule extends AbstractModule { @Singleton @Named(CONFIGURATION_PATH) public String configurationPath() { - return FileSystem.FILE_PROTOCOL_AND_CONF; + return configuration.configurationPath(); } @Provides @Singleton - public JamesDirectoriesProvider directories() throws MissingArgumentException { - String rootDirectory = Optional - .ofNullable(System.getProperty("working.directory")) - .orElseThrow(() -> new MissingArgumentException("Server needs a working.directory env entry")); - return new JamesServerResourceLoader(rootDirectory); + public JamesDirectoriesProvider directories() { + return configuration.directories(); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/main/java/org/apache/james/modules/MissingArgumentException.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/MissingArgumentException.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/MissingArgumentException.java deleted file mode 100644 index 737ccc5..0000000 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/MissingArgumentException.java +++ /dev/null @@ -1,28 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ - -package org.apache.james.modules; - -public class MissingArgumentException extends RuntimeException { - - public MissingArgumentException(String message) { - super(message); - } - -} http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/ConfigurationProviderModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/ConfigurationProviderModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/ConfigurationProviderModule.java deleted file mode 100644 index dff1a1e..0000000 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/ConfigurationProviderModule.java +++ /dev/null @@ -1,34 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ -package org.apache.james.modules.server; - -import org.apache.james.utils.ConfigurationProvider; -import org.apache.james.utils.FileConfigurationProvider; - -import com.google.inject.AbstractModule; -import com.google.inject.Scopes; - -public class ConfigurationProviderModule extends AbstractModule { - - @Override - public void configure() { - bind(ConfigurationProvider.class).to(FileConfigurationProvider.class).in(Scopes.SINGLETON); - } - -} http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/DNSServiceModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/DNSServiceModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/DNSServiceModule.java index 0f36425..abae17b 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/DNSServiceModule.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/DNSServiceModule.java @@ -23,8 +23,8 @@ import java.util.List; import org.apache.james.dnsservice.api.DNSService; import org.apache.james.dnsservice.dnsjava.DNSJavaService; import org.apache.james.lifecycle.api.Configurable; +import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.utils.ConfigurationPerformer; -import org.apache.james.utils.ConfigurationProvider; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/DefaultProcessorsConfigurationProviderModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/DefaultProcessorsConfigurationProviderModule.java b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/DefaultProcessorsConfigurationProviderModule.java index a3e27bf..6f31961 100644 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/DefaultProcessorsConfigurationProviderModule.java +++ b/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/DefaultProcessorsConfigurationProviderModule.java @@ -20,7 +20,7 @@ package org.apache.james.modules.server; import org.apache.commons.configuration.ConfigurationException; -import org.apache.james.utils.FileConfigurationProvider; +import org.apache.james.server.core.configuration.FileConfigurationProvider; import com.google.common.base.Throwables; import com.google.inject.AbstractModule; http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/main/java/org/apache/james/modules/server/MailStoreRepositoryModule.java ---------------------------------------------------------------------- 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 0c3aa5a..5ad0c61 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 @@ -26,8 +26,8 @@ import org.apache.james.lifecycle.api.Configurable; import org.apache.james.mailrepository.api.MailRepository; import org.apache.james.mailrepository.api.MailRepositoryStore; import org.apache.james.mailrepository.file.FileMailRepository; +import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.utils.ConfigurationPerformer; -import org.apache.james.utils.ConfigurationProvider; import org.apache.james.utils.GuiceProbe; import org.apache.james.utils.InMemoryMailRepositoryStore; import org.apache.james.utils.MailRepositoryProbeImpl; http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/main/java/org/apache/james/utils/FileConfigurationProvider.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/FileConfigurationProvider.java b/server/container/guice/guice-common/src/main/java/org/apache/james/utils/FileConfigurationProvider.java deleted file mode 100644 index 23e58d5..0000000 --- a/server/container/guice/guice-common/src/main/java/org/apache/james/utils/FileConfigurationProvider.java +++ /dev/null @@ -1,103 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ - -package org.apache.james.utils; - -import java.io.IOException; -import java.io.InputStream; -import java.util.List; -import java.util.Optional; - -import javax.inject.Inject; -import javax.inject.Named; - -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.HierarchicalConfiguration; -import org.apache.commons.configuration.XMLConfiguration; -import org.apache.james.filesystem.api.FileSystem; -import org.apache.james.modules.CommonServicesModule; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.google.common.base.Preconditions; -import com.google.common.base.Splitter; -import com.google.common.base.Strings; -import com.google.common.collect.Iterables; - -public class FileConfigurationProvider implements ConfigurationProvider { - - private static final Logger LOGGER = LoggerFactory.getLogger(FileConfigurationProvider.class); - private static final String CONFIGURATION_FILE_SUFFIX = ".xml"; - public static final HierarchicalConfiguration EMTY_CONFIGURATION = new HierarchicalConfiguration(); - - public static XMLConfiguration getConfig(InputStream configStream) throws ConfigurationException { - XMLConfiguration config = new XMLConfiguration(); - config.setDelimiterParsingDisabled(true); - config.setAttributeSplittingDisabled(true); - config.load(configStream); - return config; - } - - private final FileSystem fileSystem; - private final String configurationPrefix; - - @Inject - public FileConfigurationProvider(FileSystem fileSystem, @Named(CommonServicesModule.CONFIGURATION_PATH) String configurationPrefix) { - this.fileSystem = fileSystem; - this.configurationPrefix = configurationPrefix; - } - - @Override - public HierarchicalConfiguration getConfiguration(String component) throws ConfigurationException { - Preconditions.checkNotNull(component); - List<String> configPathParts = Splitter.on(".").splitToList(component); - Preconditions.checkArgument(!configPathParts.isEmpty()); - - Optional<InputStream> inputStream = retrieveConfigInputStream(configPathParts.get(0)); - if (inputStream.isPresent()) { - return selectConfigurationPart(configPathParts, - getConfig(inputStream.get())); - } - return EMTY_CONFIGURATION; - } - - private HierarchicalConfiguration selectConfigurationPart(List<String> configPathParts, HierarchicalConfiguration config) { - return selectHierarchicalConfigPart(config, Iterables.skip(configPathParts, 1)); - } - - private Optional<InputStream> retrieveConfigInputStream(String configurationFileWithoutExtension) throws ConfigurationException { - Preconditions.checkArgument(!Strings.isNullOrEmpty(configurationFileWithoutExtension), "The configuration file name should not be empty or null"); - try { - return Optional.of( - fileSystem.getResource(configurationPrefix + configurationFileWithoutExtension + CONFIGURATION_FILE_SUFFIX)); - } catch (IOException e) { - LOGGER.warn("Unable to locate configuration file {}" + CONFIGURATION_FILE_SUFFIX + ", assuming empty configuration", configurationFileWithoutExtension); - return Optional.empty(); - } - } - - private HierarchicalConfiguration selectHierarchicalConfigPart(HierarchicalConfiguration config, Iterable<String> configsPathParts) { - HierarchicalConfiguration currentConfig = config; - for (String nextPathPart : configsPathParts) { - currentConfig = currentConfig.configurationAt(nextPathPart); - } - return currentConfig; - } - -} http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/test/java/org/apache/james/AbstractJamesServerTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/AbstractJamesServerTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/AbstractJamesServerTest.java index b2dd541..c0ffb7b 100644 --- a/server/container/guice/guice-common/src/test/java/org/apache/james/AbstractJamesServerTest.java +++ b/server/container/guice/guice-common/src/test/java/org/apache/james/AbstractJamesServerTest.java @@ -50,7 +50,7 @@ public abstract class AbstractJamesServerTest { server.start(); } - protected abstract GuiceJamesServer createJamesServer(); + protected abstract GuiceJamesServer createJamesServer() throws IOException; protected abstract void clean(); http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/test/java/org/apache/james/modules/TestFilesystemModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/modules/TestFilesystemModule.java b/server/container/guice/guice-common/src/test/java/org/apache/james/modules/TestFilesystemModule.java deleted file mode 100644 index 78e1e6d..0000000 --- a/server/container/guice/guice-common/src/test/java/org/apache/james/modules/TestFilesystemModule.java +++ /dev/null @@ -1,61 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ - -package org.apache.james.modules; - -import java.io.File; -import java.io.IOException; -import java.util.function.Supplier; - -import org.apache.james.filesystem.api.FileSystem; -import org.apache.james.filesystem.api.JamesDirectoriesProvider; -import org.apache.james.server.core.JamesServerResourceLoader; -import org.junit.rules.TemporaryFolder; - -import com.google.common.base.Throwables; -import com.google.inject.AbstractModule; -import com.google.inject.name.Names; - -public class TestFilesystemModule extends AbstractModule { - - private final Supplier<File> workingDirectory; - - private static File createTempDir(TemporaryFolder temporaryFolder) { - try { - return temporaryFolder.newFolder(); - } catch (IOException e) { - throw Throwables.propagate(e); - } - } - - public TestFilesystemModule(TemporaryFolder temporaryFolder) { - this(() -> TestFilesystemModule.createTempDir(temporaryFolder)); - } - - public TestFilesystemModule(Supplier<File> workingDirectory) { - this.workingDirectory = workingDirectory; - } - - @Override - protected void configure() { - bind(JamesDirectoriesProvider.class).toInstance(new JamesServerResourceLoader(workingDirectory.get().getAbsolutePath())); - bindConstant().annotatedWith(Names.named(CommonServicesModule.CONFIGURATION_PATH)).to(FileSystem.CLASSPATH_PROTOCOL); - } - -} http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java index 70bb9d6..6120ff7 100644 --- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java +++ b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/FileConfigurationProviderTest.java @@ -22,8 +22,8 @@ package org.apache.james.utils; import static org.assertj.core.api.Assertions.assertThat; import org.apache.commons.configuration.HierarchicalConfiguration; -import org.apache.james.filesystem.api.FileSystem; -import org.apache.james.server.core.JamesServerResourceLoader; +import org.apache.james.server.core.configuration.Configuration; +import org.apache.james.server.core.configuration.FileConfigurationProvider; import org.apache.james.server.core.filesystem.FileSystemImpl; import org.junit.Before; import org.junit.Test; @@ -45,8 +45,12 @@ public class FileConfigurationProviderTest { @Before public void setUp() { - FileSystemImpl fileSystem = new FileSystemImpl(new JamesServerResourceLoader("../")); - configurationProvider = new FileConfigurationProvider(fileSystem, FileSystem.CLASSPATH_PROTOCOL); + Configuration configuration = Configuration.builder() + .workingDirectory("../") + .configurationFromClasspath() + .build(); + FileSystemImpl fileSystem = new FileSystemImpl(configuration.directories()); + configurationProvider = new FileConfigurationProvider(fileSystem, configuration); } @Test(expected = IllegalArgumentException.class) http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java ---------------------------------------------------------------------- diff --git a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java index ceec2cd..38f4b9b 100644 --- a/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java +++ b/server/container/guice/guice-common/src/test/java/org/apache/james/utils/InMemoryMailRepositoryStoreTest.java @@ -24,12 +24,12 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import org.apache.commons.configuration.ConfigurationException; import org.apache.commons.configuration.HierarchicalConfiguration; -import org.apache.james.filesystem.api.FileSystem; import org.apache.james.mailrepository.api.MailRepository; import org.apache.james.mailrepository.api.MailRepositoryStore; import org.apache.james.mailrepository.file.FileMailRepository; import org.apache.james.modules.server.MailStoreRepositoryModule; -import org.apache.james.server.core.JamesServerResourceLoader; +import org.apache.james.server.core.configuration.Configuration; +import org.apache.james.server.core.configuration.FileConfigurationProvider; import org.apache.james.server.core.filesystem.FileSystemImpl; import org.junit.Before; import org.junit.Test; @@ -40,14 +40,19 @@ public class InMemoryMailRepositoryStoreTest { private InMemoryMailRepositoryStore repositoryStore; private FileSystemImpl fileSystem; + private Configuration configuration; @Before public void setUp() throws Exception { - fileSystem = new FileSystemImpl(new JamesServerResourceLoader("../")); + configuration = Configuration.builder() + .workingDirectory("../") + .configurationFromClasspath() + .build(); + fileSystem = new FileSystemImpl(configuration.directories()); repositoryStore = new InMemoryMailRepositoryStore(Sets.newHashSet( new MailStoreRepositoryModule.FileMailRepositoryProvider( fileSystem))); - repositoryStore.configure(new FileConfigurationProvider(fileSystem, FileSystem.CLASSPATH_PROTOCOL) + repositoryStore.configure(new FileConfigurationProvider(fileSystem, configuration) .getConfiguration("mailrepositorystore")); repositoryStore.init(); } @@ -77,7 +82,7 @@ public class InMemoryMailRepositoryStoreTest { repositoryStore = new InMemoryMailRepositoryStore(Sets.newHashSet( new MailStoreRepositoryModule.FileMailRepositoryProvider( fileSystem))); - repositoryStore.configure(new FileConfigurationProvider(fileSystem, FileSystem.CLASSPATH_PROTOCOL).getConfiguration("fakemailrepositorystore")); + repositoryStore.configure(new FileConfigurationProvider(fileSystem, configuration).getConfiguration("fakemailrepositorystore")); assertThatThrownBy(() -> repositoryStore.init()) .isInstanceOf(ConfigurationException.class); http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPADomainListModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPADomainListModule.java b/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPADomainListModule.java index 1761e3a..ba9c312 100644 --- a/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPADomainListModule.java +++ b/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPADomainListModule.java @@ -24,8 +24,8 @@ import org.apache.commons.configuration.ConfigurationException; import org.apache.james.domainlist.api.DomainList; import org.apache.james.domainlist.jpa.JPADomainList; import org.apache.james.lifecycle.api.Configurable; +import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.utils.ConfigurationPerformer; -import org.apache.james.utils.ConfigurationProvider; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPARecipientRewriteTableModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPARecipientRewriteTableModule.java b/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPARecipientRewriteTableModule.java index 3741b91..719c105 100644 --- a/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPARecipientRewriteTableModule.java +++ b/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPARecipientRewriteTableModule.java @@ -24,8 +24,8 @@ import org.apache.commons.configuration.ConfigurationException; import org.apache.james.lifecycle.api.Configurable; import org.apache.james.rrt.api.RecipientRewriteTable; import org.apache.james.rrt.jpa.JPARecipientRewriteTable; +import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.utils.ConfigurationPerformer; -import org.apache.james.utils.ConfigurationProvider; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; http://git-wip-us.apache.org/repos/asf/james-project/blob/5883efbf/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPAUsersRepositoryModule.java ---------------------------------------------------------------------- diff --git a/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPAUsersRepositoryModule.java b/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPAUsersRepositoryModule.java index 061acd3..eac4aaf 100644 --- a/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPAUsersRepositoryModule.java +++ b/server/container/guice/jpa-common-guice/src/main/java/org/apache/james/modules/data/JPAUsersRepositoryModule.java @@ -22,10 +22,10 @@ import java.util.List; import org.apache.commons.configuration.ConfigurationException; import org.apache.james.lifecycle.api.Configurable; +import org.apache.james.server.core.configuration.ConfigurationProvider; import org.apache.james.user.api.UsersRepository; import org.apache.james.user.jpa.JPAUsersRepository; import org.apache.james.utils.ConfigurationPerformer; -import org.apache.james.utils.ConfigurationProvider; import com.google.common.base.Throwables; import com.google.common.collect.ImmutableList; --------------------------------------------------------------------- To unsubscribe, e-mail: server-dev-unsubscr...@james.apache.org For additional commands, e-mail: server-dev-h...@james.apache.org