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 f8fd4d9a63e25d255f6f736fe977ab233875184b Author: Tran Tien Duc <[email protected]> AuthorDate: Mon Aug 19 11:27:33 2019 +0700 JAMES-2855 default delimiter is set in PropertyProvider --- .../init/configuration/ClusterConfiguration.java | 4 +--- .../init/CassandraConfigurationReadingTest.java | 15 +++++++++---- .../backends/es/ElasticSearchConfiguration.java | 6 ++--- .../es/ElasticSearchConfigurationTest.java | 7 ++++-- .../modules/mailbox/TikaConfigurationReader.java | 4 +--- .../org/apache/james/utils/PropertiesProvider.java | 26 +++++++++++++++++----- .../apache/james/utils/PropertiesProviderTest.java | 6 +++++ .../configuration/src/test/resources/a.properties | 3 ++- 8 files changed, 49 insertions(+), 22 deletions(-) diff --git a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/ClusterConfiguration.java b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/ClusterConfiguration.java index 2db6f7e..5d832ca 100644 --- a/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/ClusterConfiguration.java +++ b/backends-common/cassandra/src/main/java/org/apache/james/backends/cassandra/init/configuration/ClusterConfiguration.java @@ -25,8 +25,7 @@ import java.util.List; import java.util.Objects; import java.util.Optional; -import org.apache.commons.configuration.AbstractConfiguration; -import org.apache.commons.configuration.Configuration; +import org.apache.commons.configuration2.Configuration; import org.apache.james.backends.cassandra.init.ClusterBuilder; import org.apache.james.util.Host; @@ -177,7 +176,6 @@ public class ClusterConfiguration { } public static ClusterConfiguration from(Configuration configuration) { - AbstractConfiguration.setDefaultListDelimiter(','); return ClusterConfiguration.builder() .hosts(listCassandraServers(configuration)) .keyspace(Optional.ofNullable(configuration.getString(CASSANDRA_KEYSPACE, null))) diff --git a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationReadingTest.java b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationReadingTest.java index 860d0d7..7ae57c4 100644 --- a/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationReadingTest.java +++ b/backends-common/cassandra/src/test/java/org/apache/james/backends/cassandra/init/CassandraConfigurationReadingTest.java @@ -21,8 +21,11 @@ package org.apache.james.backends.cassandra.init; import static org.assertj.core.api.Assertions.assertThat; -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.PropertiesConfiguration; +import org.apache.commons.configuration2.FileBasedConfiguration; +import org.apache.commons.configuration2.PropertiesConfiguration; +import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder; +import org.apache.commons.configuration2.builder.fluent.Parameters; +import org.apache.commons.configuration2.ex.ConfigurationException; import org.apache.james.backends.cassandra.init.configuration.CassandraConfiguration; import org.junit.Test; @@ -37,8 +40,12 @@ public class CassandraConfigurationReadingTest { @Test public void provideCassandraConfigurationShouldReturnRightConfigurationFile() throws ConfigurationException { - CassandraConfiguration configuration = CassandraConfiguration.from(new PropertiesConfiguration( - ClassLoader.getSystemResource("cassandra.properties"))); + FileBasedConfigurationBuilder<FileBasedConfiguration> builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class) + .configure(new Parameters() + .fileBased() + .setURL(ClassLoader.getSystemResource("cassandra.properties"))); + + CassandraConfiguration configuration = CassandraConfiguration.from(builder.getConfiguration()); assertThat(configuration) .isEqualTo(CassandraConfiguration.builder() diff --git a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchConfiguration.java b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchConfiguration.java index 24635f5..0f21537 100644 --- a/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchConfiguration.java +++ b/backends-common/elasticsearch/src/main/java/org/apache/james/backends/es/ElasticSearchConfiguration.java @@ -26,9 +26,8 @@ import java.util.List; import java.util.Objects; import java.util.Optional; -import org.apache.commons.configuration.AbstractConfiguration; -import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.ConfigurationException; +import org.apache.commons.configuration2.Configuration; +import org.apache.commons.configuration2.ex.ConfigurationException; import org.apache.james.util.Host; import com.github.steveash.guavate.Guavate; @@ -143,7 +142,6 @@ public class ElasticSearchConfiguration { } private static ImmutableList<Host> getHosts(Configuration propertiesReader) throws ConfigurationException { - AbstractConfiguration.setDefaultListDelimiter(','); Optional<String> masterHost = Optional.ofNullable( propertiesReader.getString(ELASTICSEARCH_MASTER_HOST, null)); Optional<Integer> masterPort = Optional.ofNullable( diff --git a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchConfigurationTest.java b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchConfigurationTest.java index 18167a1..366c0cc 100644 --- a/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchConfigurationTest.java +++ b/backends-common/elasticsearch/src/test/java/org/apache/james/backends/es/ElasticSearchConfigurationTest.java @@ -24,12 +24,14 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.util.Optional; -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.PropertiesConfiguration; +import org.apache.commons.configuration2.PropertiesConfiguration; +import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler; +import org.apache.commons.configuration2.ex.ConfigurationException; import org.apache.james.util.Host; import org.junit.Test; import com.google.common.collect.ImmutableList; + import nl.jqno.equalsverifier.EqualsVerifier; public class ElasticSearchConfigurationTest { @@ -154,6 +156,7 @@ public class ElasticSearchConfigurationTest { String hostname2 = "myOtherHost"; int port = 2154; PropertiesConfiguration configuration = new PropertiesConfiguration(); + configuration.setListDelimiterHandler(new DefaultListDelimiterHandler(',')); configuration.addProperty("elasticsearch.hosts", hostname + "," + hostname2 + ":" + port); ElasticSearchConfiguration elasticSearchConfiguration = ElasticSearchConfiguration.fromProperties(configuration); diff --git a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaConfigurationReader.java b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaConfigurationReader.java index 68763ec..ae7bc0e 100644 --- a/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaConfigurationReader.java +++ b/server/container/guice/cassandra-guice/src/main/java/org/apache/james/modules/mailbox/TikaConfigurationReader.java @@ -24,8 +24,7 @@ import java.time.temporal.ChronoUnit; import java.util.Optional; import java.util.Set; -import org.apache.commons.configuration.AbstractConfiguration; -import org.apache.commons.configuration.Configuration; +import org.apache.commons.configuration2.Configuration; import org.apache.james.mailbox.tika.TikaConfiguration; import org.apache.james.util.DurationParser; import org.apache.james.util.Size; @@ -45,7 +44,6 @@ public class TikaConfigurationReader { public static final String TIKA_CONTENT_TYPE_BLACKLIST = "tika.contentType.blacklist"; public static TikaConfiguration readTikaConfiguration(Configuration configuration) { - AbstractConfiguration.setDefaultListDelimiter(','); Optional<Boolean> enabled = Optional.ofNullable( configuration.getBoolean(TIKA_ENABLED, null)); diff --git a/server/container/guice/configuration/src/main/java/org/apache/james/utils/PropertiesProvider.java b/server/container/guice/configuration/src/main/java/org/apache/james/utils/PropertiesProvider.java index c474a87..c9fd564 100644 --- a/server/container/guice/configuration/src/main/java/org/apache/james/utils/PropertiesProvider.java +++ b/server/container/guice/configuration/src/main/java/org/apache/james/utils/PropertiesProvider.java @@ -26,9 +26,13 @@ import java.util.Optional; import javax.inject.Inject; -import org.apache.commons.configuration.Configuration; -import org.apache.commons.configuration.ConfigurationException; -import org.apache.commons.configuration.PropertiesConfiguration; +import org.apache.commons.configuration2.Configuration; +import org.apache.commons.configuration2.FileBasedConfiguration; +import org.apache.commons.configuration2.PropertiesConfiguration; +import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder; +import org.apache.commons.configuration2.builder.fluent.Parameters; +import org.apache.commons.configuration2.convert.DefaultListDelimiterHandler; +import org.apache.commons.configuration2.ex.ConfigurationException; import org.apache.james.filesystem.api.FileSystem; import org.apache.james.util.OptionalUtils; @@ -38,6 +42,8 @@ import com.google.common.base.Strings; public class PropertiesProvider { + private static final char COMMA = ','; + private final FileSystem fileSystem; private final String configurationPrefix; @@ -54,7 +60,7 @@ public class PropertiesProvider { .findFirst() .orElseThrow(() -> new FileNotFoundException(Joiner.on(",").join(filenames) + " not found")); - return new PropertiesConfiguration(file); + return getConfiguration(file); } public Configuration getConfiguration(String fileName) throws FileNotFoundException, ConfigurationException { @@ -63,7 +69,17 @@ public class PropertiesProvider { File file = getConfigurationFile(fileName) .orElseThrow(() -> new FileNotFoundException(fileName)); - return new PropertiesConfiguration(file); + return getConfiguration(file); + } + + private Configuration getConfiguration(File propertiesFile) throws ConfigurationException { + FileBasedConfigurationBuilder<FileBasedConfiguration> builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class) + .configure(new Parameters() + .fileBased() + .setListDelimiterHandler(new DefaultListDelimiterHandler(COMMA)) + .setFile(propertiesFile)); + + return builder.getConfiguration(); } private Optional<File> getConfigurationFile(String fileName) { diff --git a/server/container/guice/configuration/src/test/java/org/apache/james/utils/PropertiesProviderTest.java b/server/container/guice/configuration/src/test/java/org/apache/james/utils/PropertiesProviderTest.java index 9bfdcc4..bbda6a3 100644 --- a/server/container/guice/configuration/src/test/java/org/apache/james/utils/PropertiesProviderTest.java +++ b/server/container/guice/configuration/src/test/java/org/apache/james/utils/PropertiesProviderTest.java @@ -77,4 +77,10 @@ class PropertiesProviderTest { assertThat(testee.getConfiguration("a").getString("prop")) .isEqualTo("value1"); } + + @Test + void getConfigurationShouldLoadListValues() throws Exception { + assertThat(testee.getConfiguration("a").getList(String.class, "keyByList")) + .containsExactly("value1", "value2"); + } } \ No newline at end of file diff --git a/server/container/guice/configuration/src/test/resources/a.properties b/server/container/guice/configuration/src/test/resources/a.properties index 452d1aa..43e4d04 100644 --- a/server/container/guice/configuration/src/test/resources/a.properties +++ b/server/container/guice/configuration/src/test/resources/a.properties @@ -1 +1,2 @@ -prop=value1 \ No newline at end of file +prop=value1 +keyByList=value1, value2 \ No newline at end of file --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
