You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@james.apache.org by bt...@apache.org on 2021/05/31 01:52:13 UTC
[james-project] 02/02: JAMES-2886 Test and fix
ExtensionConfiguration loading
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 9889ba2523db2ceaffcf93f1486ad0172d492125
Author: Benoit Tellier <bt...@linagora.com>
AuthorDate: Fri May 28 15:46:45 2021 +0700
JAMES-2886 Test and fix ExtensionConfiguration loading
---
.../apache/james/utils/ExtensionConfiguration.java | 18 +++++----
.../james/utils/ExtensionConfigurationTest.java | 47 ++++++++++++++++++++++
.../src/test/resources/extensions-empty.properties | 1 +
.../src/test/resources/extensions-none.properties | 0
.../src/test/resources/extensions-one.properties | 1 +
.../src/test/resources/extensions-two.properties | 1 +
6 files changed, 60 insertions(+), 8 deletions(-)
diff --git a/server/container/guice/guice-utils/src/main/java/org/apache/james/utils/ExtensionConfiguration.java b/server/container/guice/guice-utils/src/main/java/org/apache/james/utils/ExtensionConfiguration.java
index bc0fe8f..0034d85 100644
--- a/server/container/guice/guice-utils/src/main/java/org/apache/james/utils/ExtensionConfiguration.java
+++ b/server/container/guice/guice-utils/src/main/java/org/apache/james/utils/ExtensionConfiguration.java
@@ -19,26 +19,28 @@
package org.apache.james.utils;
-import java.util.Arrays;
import java.util.List;
-import java.util.Optional;
import org.apache.commons.configuration2.Configuration;
import com.github.steveash.guavate.Guavate;
+import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableList;
public class ExtensionConfiguration {
public static final ExtensionConfiguration DEFAULT = new ExtensionConfiguration(ImmutableList.of());
+ private static final Splitter SPLITTER = Splitter.on(",")
+ .omitEmptyStrings()
+ .trimResults();
public static ExtensionConfiguration from(Configuration configuration) {
- List<String> list = Optional.ofNullable(configuration.getStringArray("guice.extension.module"))
- .map(Arrays::asList)
- .orElse(ImmutableList.of());
+ String rawString = configuration.getString("guice.extension.module", "");
- return new ExtensionConfiguration(list.stream()
- .map(ClassName::new)
- .collect(Guavate.toImmutableList()));
+ return new ExtensionConfiguration(
+ SPLITTER.splitToList(rawString)
+ .stream()
+ .map(ClassName::new)
+ .collect(Guavate.toImmutableList()));
}
private final List<ClassName> additionalGuiceModulesForExtensions;
diff --git a/server/container/guice/guice-utils/src/test/java/org/apache/james/utils/ExtensionConfigurationTest.java b/server/container/guice/guice-utils/src/test/java/org/apache/james/utils/ExtensionConfigurationTest.java
index 515380d..dc4830d 100644
--- a/server/container/guice/guice-utils/src/test/java/org/apache/james/utils/ExtensionConfigurationTest.java
+++ b/server/container/guice/guice-utils/src/test/java/org/apache/james/utils/ExtensionConfigurationTest.java
@@ -19,6 +19,53 @@
package org.apache.james.utils;
+import static org.assertj.core.api.Assertions.assertThat;
+
+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.junit.jupiter.api.Test;
+
public class ExtensionConfigurationTest {
+ @Test
+ void shouldReturnEmptyWhenNoField() throws Exception {
+ FileBasedConfiguration configuration = getConfiguration("extensions-none.properties");
+
+ assertThat(ExtensionConfiguration.from(configuration).getAdditionalGuiceModulesForExtensions())
+ .isEmpty();
+ }
+
+ @Test
+ void shouldReturnEmptyWhenEmptyField() throws Exception {
+ FileBasedConfiguration configuration = getConfiguration("extensions-empty.properties");
+
+ assertThat(ExtensionConfiguration.from(configuration).getAdditionalGuiceModulesForExtensions())
+ .isEmpty();
+ }
+
+ @Test
+ void shouldReturnOneRoutes() throws Exception {
+ FileBasedConfiguration configuration = getConfiguration("extensions-one.properties");
+
+ assertThat(ExtensionConfiguration.from(configuration).getAdditionalGuiceModulesForExtensions())
+ .containsOnly(new ClassName("org.apache.custom.extensions.CustomExtension"));
+ }
+
+ @Test
+ void shouldReturnSeveralRoutes() throws Exception {
+ FileBasedConfiguration configuration = getConfiguration("extensions-two.properties");
+
+ assertThat(ExtensionConfiguration.from(configuration).getAdditionalGuiceModulesForExtensions())
+ .containsOnly(new ClassName("org.apache.custom.extensions.CustomExtension"),
+ new ClassName("org.apache.custom.extension.AnotherCustomExtension"));
+ }
+ private FileBasedConfiguration getConfiguration(String name) throws org.apache.commons.configuration2.ex.ConfigurationException {
+ FileBasedConfigurationBuilder<FileBasedConfiguration> builder = new FileBasedConfigurationBuilder<FileBasedConfiguration>(PropertiesConfiguration.class)
+ .configure(new Parameters()
+ .fileBased()
+ .setURL(ClassLoader.getSystemResource(name)));
+ return builder.getConfiguration();
+ }
}
\ No newline at end of file
diff --git a/server/container/guice/guice-utils/src/test/resources/extensions-empty.properties b/server/container/guice/guice-utils/src/test/resources/extensions-empty.properties
new file mode 100644
index 0000000..e5a585a
--- /dev/null
+++ b/server/container/guice/guice-utils/src/test/resources/extensions-empty.properties
@@ -0,0 +1 @@
+guice.extension.module=
\ No newline at end of file
diff --git a/server/container/guice/guice-utils/src/test/resources/extensions-none.properties b/server/container/guice/guice-utils/src/test/resources/extensions-none.properties
new file mode 100644
index 0000000..e69de29
diff --git a/server/container/guice/guice-utils/src/test/resources/extensions-one.properties b/server/container/guice/guice-utils/src/test/resources/extensions-one.properties
new file mode 100644
index 0000000..43d7954
--- /dev/null
+++ b/server/container/guice/guice-utils/src/test/resources/extensions-one.properties
@@ -0,0 +1 @@
+guice.extension.module=org.apache.custom.extensions.CustomExtension
\ No newline at end of file
diff --git a/server/container/guice/guice-utils/src/test/resources/extensions-two.properties b/server/container/guice/guice-utils/src/test/resources/extensions-two.properties
new file mode 100644
index 0000000..a5e0f6d
--- /dev/null
+++ b/server/container/guice/guice-utils/src/test/resources/extensions-two.properties
@@ -0,0 +1 @@
+guice.extension.module=org.apache.custom.extensions.CustomExtension,org.apache.custom.extension.AnotherCustomExtension
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: notifications-unsubscribe@james.apache.org
For additional commands, e-mail: notifications-help@james.apache.org