You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by bt...@apache.org on 2019/08/20 10:26:13 UTC
[james-project] 07/16: JAMES-2855 Handling XML 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 1e4bcda6e2aad60f6331e7aa821b205c4dead3aa
Author: Tran Tien Duc <dt...@linagora.com>
AuthorDate: Mon Aug 19 11:54:18 2019 +0700
JAMES-2855 Handling XML loading
---
.../QuotaMailingListenerConfigurationTest.java | 32 +++++++----------
.../configuration/FileConfigurationProvider.java | 29 ++++++++-------
.../mailbox/MailboxListenersLoaderImplTest.java | 25 ++++++-------
.../mailbox/PreDeletionHooksConfigurationTest.java | 21 ++++++-----
server/container/jetty/pom.xml | 5 +++
.../http/jetty/JettyHttpServerFactoryTest.java | 27 +++++---------
.../lifecycle/osgi/OSGIConfigurationProvider.java | 23 ++++--------
server/dns-service/dnsservice-dnsjava/pom.xml | 5 +++
.../dnsservice/dnsjava/DNSJavaServiceTest.java | 7 ++--
.../mailetcontainer/impl/MailetConfigImplTest.java | 42 +++++++++++++---------
.../lib/AbstractStateCompositeProcessorTest.java | 33 +++++++++--------
.../lib/AbstractStateMailetProcessorTest.java | 10 +++---
12 files changed, 125 insertions(+), 134 deletions(-)
diff --git a/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/QuotaMailingListenerConfigurationTest.java b/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/QuotaMailingListenerConfigurationTest.java
index 9f76365..cff7d75 100644
--- a/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/QuotaMailingListenerConfigurationTest.java
+++ b/mailbox/plugin/quota-mailing/src/test/java/org/apache/james/mailbox/quota/mailing/QuotaMailingListenerConfigurationTest.java
@@ -28,9 +28,10 @@ import java.nio.charset.StandardCharsets;
import java.time.Duration;
import java.util.Optional;
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
+import org.apache.commons.configuration2.XMLConfiguration;
import org.apache.james.mailbox.quota.mailing.QuotaMailingListenerConfiguration.RenderingInformation;
import org.apache.james.mailbox.quota.model.QuotaThreshold;
+import org.apache.james.server.core.configuration.FileConfigurationProvider;
import org.junit.jupiter.api.Test;
import nl.jqno.equalsverifier.EqualsVerifier;
@@ -52,8 +53,7 @@ public class QuotaMailingListenerConfigurationTest {
@Test
public void fromShouldReadXMLConfiguration() throws Exception {
- DefaultConfigurationBuilder xmlConfiguration = new DefaultConfigurationBuilder();
- xmlConfiguration.load(toStream(
+ XMLConfiguration xmlConfiguration = FileConfigurationProvider.getConfig(toStream(
"<configuration>\n" +
" <thresholds>\n" +
" <threshold>" +
@@ -90,8 +90,7 @@ public class QuotaMailingListenerConfigurationTest {
@Test
public void fromShouldReadXMLConfigurationWhenRenderingInformationPartiallyOmited() throws Exception {
- DefaultConfigurationBuilder xmlConfiguration = new DefaultConfigurationBuilder();
- xmlConfiguration.load(toStream(
+ XMLConfiguration xmlConfiguration = FileConfigurationProvider.getConfig(toStream(
"<configuration>\n" +
" <thresholds>\n" +
" <threshold>" +
@@ -127,8 +126,7 @@ public class QuotaMailingListenerConfigurationTest {
@Test
public void fromShouldAcceptEmptyThreshold() throws Exception {
- DefaultConfigurationBuilder xmlConfiguration = new DefaultConfigurationBuilder();
- xmlConfiguration.load(toStream(
+ XMLConfiguration xmlConfiguration = FileConfigurationProvider.getConfig(toStream(
"<configuration>\n" +
" <thresholds></thresholds>\n" +
" <gracePeriod>3 days</gracePeriod>\n" +
@@ -144,8 +142,7 @@ public class QuotaMailingListenerConfigurationTest {
@Test
public void fromShouldReturnDefaultWhenEmptyConfiguration() throws Exception {
- DefaultConfigurationBuilder xmlConfiguration = new DefaultConfigurationBuilder();
- xmlConfiguration.load(toStream(
+ XMLConfiguration xmlConfiguration = FileConfigurationProvider.getConfig(toStream(
"<configuration></configuration>"));
QuotaMailingListenerConfiguration result = QuotaMailingListenerConfiguration.from(xmlConfiguration);
@@ -164,8 +161,7 @@ public class QuotaMailingListenerConfigurationTest {
@Test
public void fromShouldThrowOnNonParsableGracePeriod() throws Exception {
- DefaultConfigurationBuilder xmlConfiguration = new DefaultConfigurationBuilder();
- xmlConfiguration.load(toStream(
+ XMLConfiguration xmlConfiguration = FileConfigurationProvider.getConfig(toStream(
"<configuration><gracePeriod>nonParsable</gracePeriod></configuration>"));
assertThatThrownBy(() -> QuotaMailingListenerConfiguration.from(xmlConfiguration))
@@ -174,8 +170,7 @@ public class QuotaMailingListenerConfigurationTest {
@Test
public void fromShouldThrowOnNegativeGracePeriod() throws Exception {
- DefaultConfigurationBuilder xmlConfiguration = new DefaultConfigurationBuilder();
- xmlConfiguration.load(toStream(
+ XMLConfiguration xmlConfiguration = FileConfigurationProvider.getConfig(toStream(
"<configuration><gracePeriod>-12 ms</gracePeriod></configuration>"));
assertThatThrownBy(() -> QuotaMailingListenerConfiguration.from(xmlConfiguration))
@@ -184,8 +179,7 @@ public class QuotaMailingListenerConfigurationTest {
@Test
public void fromShouldLoadGracePeriodInMs() throws Exception {
- DefaultConfigurationBuilder xmlConfiguration = new DefaultConfigurationBuilder();
- xmlConfiguration.load(toStream(
+ XMLConfiguration xmlConfiguration = FileConfigurationProvider.getConfig(toStream(
"<configuration><gracePeriod>12 ms</gracePeriod></configuration>"));
assertThat(QuotaMailingListenerConfiguration.from(xmlConfiguration).getGracePeriod())
@@ -194,8 +188,7 @@ public class QuotaMailingListenerConfigurationTest {
@Test
public void defaultUnitShouldBeMilliseconds() throws Exception {
- DefaultConfigurationBuilder xmlConfiguration = new DefaultConfigurationBuilder();
- xmlConfiguration.load(toStream(
+ XMLConfiguration xmlConfiguration = FileConfigurationProvider.getConfig(toStream(
"<configuration><gracePeriod>12</gracePeriod></configuration>"));
assertThat(QuotaMailingListenerConfiguration.from(xmlConfiguration).getGracePeriod())
@@ -204,7 +197,7 @@ public class QuotaMailingListenerConfigurationTest {
@Test
public void fromShouldThrowOnEmptySubjectTemplate() throws Exception {
- DefaultConfigurationBuilder xmlConfiguration = new DefaultConfigurationBuilder();xmlConfiguration.load(toStream(
+ XMLConfiguration xmlConfiguration = FileConfigurationProvider.getConfig(toStream(
"<configuration>\n" +
" <thresholds>\n" +
" <threshold>" +
@@ -223,7 +216,7 @@ public class QuotaMailingListenerConfigurationTest {
@Test
public void fromShouldThrowOnEmptyBodyTemplate() throws Exception {
- DefaultConfigurationBuilder xmlConfiguration = new DefaultConfigurationBuilder();xmlConfiguration.load(toStream(
+ XMLConfiguration xmlConfiguration = FileConfigurationProvider.getConfig(toStream(
"<configuration>\n" +
" <thresholds>\n" +
" <threshold>" +
@@ -242,5 +235,4 @@ public class QuotaMailingListenerConfigurationTest {
private InputStream toStream(String string) {
return new ByteArrayInputStream(string.getBytes(StandardCharsets.UTF_8));
}
-
}
\ No newline at end of file
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
index b36db81..9aa2b87 100644
--- 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
@@ -24,10 +24,13 @@ 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.PropertiesConfiguration;
-import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.commons.configuration2.HierarchicalConfiguration;
+import org.apache.commons.configuration2.XMLConfiguration;
+import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
+import org.apache.commons.configuration2.builder.fluent.Parameters;
+import org.apache.commons.configuration2.convert.DisabledListDelimiterHandler;
+import org.apache.commons.configuration2.ex.ConfigurationException;
+import org.apache.commons.configuration2.io.FileHandler;
import org.apache.james.filesystem.api.FileSystem;
import org.apache.james.util.LoggingLevel;
import org.slf4j.Logger;
@@ -42,17 +45,19 @@ public class FileConfigurationProvider implements ConfigurationProvider {
private static final Logger LOGGER = LoggerFactory.getLogger(FileConfigurationProvider.class);
private static final String CONFIGURATION_FILE_SUFFIX = ".xml";
- private static final char SEMICOLON = ';';
- public static final HierarchicalConfiguration EMPTY_CONFIGURATION = new HierarchicalConfiguration();
+ public static final HierarchicalConfiguration EMPTY_CONFIGURATION = new XMLConfiguration();
public static XMLConfiguration getConfig(InputStream configStream) throws ConfigurationException {
- PropertiesConfiguration.setDefaultListDelimiter(SEMICOLON);
- XMLConfiguration config = new XMLConfiguration();
- config.setDelimiterParsingDisabled(true);
- config.setAttributeSplittingDisabled(true);
- config.load(configStream);
- return config;
+ FileBasedConfigurationBuilder<XMLConfiguration> builder = new FileBasedConfigurationBuilder<>(XMLConfiguration.class)
+ .configure(new Parameters()
+ .xml()
+ .setListDelimiterHandler(new DisabledListDelimiterHandler()));
+ XMLConfiguration xmlConfiguration = builder.getConfiguration();
+ FileHandler fileHandler = new FileHandler(xmlConfiguration);
+ fileHandler.load(configStream);
+
+ return xmlConfiguration;
}
private final FileSystem fileSystem;
diff --git a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImplTest.java b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImplTest.java
index 9ca87b4..d3d33eb 100644
--- a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImplTest.java
+++ b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/MailboxListenersLoaderImplTest.java
@@ -26,10 +26,11 @@ import static org.mockito.Mockito.when;
import java.io.ByteArrayInputStream;
import java.io.FileNotFoundException;
+import java.io.IOException;
import java.nio.charset.StandardCharsets;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
+import org.apache.commons.configuration2.XMLConfiguration;
+import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.lang3.tuple.Pair;
import org.apache.james.filesystem.api.FileSystem;
import org.apache.james.mailbox.events.GenericGroup;
@@ -38,6 +39,7 @@ import org.apache.james.mailbox.events.InVMEventBus;
import org.apache.james.mailbox.events.MailboxListener;
import org.apache.james.mailbox.events.delivery.InVmEventDelivery;
import org.apache.james.metrics.api.NoopMetricFactory;
+import org.apache.james.server.core.configuration.FileConfigurationProvider;
import org.apache.james.utils.ExtendedClassLoader;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
@@ -101,8 +103,8 @@ class MailboxListenersLoaderImplTest {
}
@Test
- void configureShouldAddMailboxListenersWhenConfigurationIsGood() throws ConfigurationException {
- DefaultConfigurationBuilder configuration = toConfigutation("<listeners>" +
+ void configureShouldAddMailboxListenersWhenConfigurationIsGood() throws Exception {
+ XMLConfiguration configuration = toConfigutation("<listeners>" +
"<listener>" +
"<class>org.apache.james.modules.mailbox.NoopMailboxListener</class>" +
"</listener>" +
@@ -114,8 +116,8 @@ class MailboxListenersLoaderImplTest {
}
@Test
- void customGroupCanBePassed() throws ConfigurationException {
- DefaultConfigurationBuilder configuration = toConfigutation("<listeners>" +
+ void customGroupCanBePassed() throws Exception {
+ XMLConfiguration configuration = toConfigutation("<listeners>" +
"<listener>" +
"<class>org.apache.james.modules.mailbox.NoopMailboxListener</class>" +
"<group>Avengers</group>" +
@@ -128,8 +130,8 @@ class MailboxListenersLoaderImplTest {
}
@Test
- void aListenerCanBeRegisteredOnSeveralGroups() throws ConfigurationException {
- DefaultConfigurationBuilder configuration = toConfigutation("<listeners>" +
+ void aListenerCanBeRegisteredOnSeveralGroups() throws Exception {
+ XMLConfiguration configuration = toConfigutation("<listeners>" +
"<listener>" +
"<class>org.apache.james.modules.mailbox.NoopMailboxListener</class>" +
"<group>Avengers</group>" +
@@ -145,9 +147,8 @@ class MailboxListenersLoaderImplTest {
assertThat(eventBus.registeredGroups()).containsExactlyInAnyOrder(new GenericGroup("Avengers"), new GenericGroup("Fantastic 4"));
}
- private DefaultConfigurationBuilder toConfigutation(String configurationString) throws ConfigurationException {
- DefaultConfigurationBuilder configuration = new DefaultConfigurationBuilder();
- configuration.load(new ByteArrayInputStream(configurationString.getBytes(StandardCharsets.UTF_8)));
- return configuration;
+ private XMLConfiguration toConfigutation(String configurationString) throws ConfigurationException, IOException {
+ return FileConfigurationProvider
+ .getConfig(new ByteArrayInputStream(configurationString.getBytes(StandardCharsets.UTF_8)));
}
}
diff --git a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHooksConfigurationTest.java b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHooksConfigurationTest.java
index f14a977..a98a4ba 100644
--- a/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHooksConfigurationTest.java
+++ b/server/container/guice/mailbox/src/test/java/org/apache/james/modules/mailbox/PreDeletionHooksConfigurationTest.java
@@ -25,9 +25,11 @@ import static org.assertj.core.api.Assertions.assertThatThrownBy;
import java.io.ByteArrayInputStream;
import java.nio.charset.StandardCharsets;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.commons.configuration2.BaseHierarchicalConfiguration;
+import org.apache.commons.configuration2.HierarchicalConfiguration;
+import org.apache.commons.configuration2.XMLConfiguration;
+import org.apache.commons.configuration2.ex.ConfigurationException;
+import org.apache.james.server.core.configuration.FileConfigurationProvider;
import org.junit.jupiter.api.Test;
import com.google.common.collect.ImmutableList;
@@ -43,7 +45,7 @@ class PreDeletionHooksConfigurationTest {
@Test
void fromShouldReturnNoneWhenEmpty() throws Exception {
- HierarchicalConfiguration configuration = new HierarchicalConfiguration();
+ HierarchicalConfiguration configuration = new BaseHierarchicalConfiguration();
assertThat(PreDeletionHooksConfiguration.from(configuration))
.isEqualTo(PreDeletionHooksConfiguration.none());
@@ -51,8 +53,7 @@ class PreDeletionHooksConfigurationTest {
@Test
void fromShouldThrowWhenInvalidHookConfiguration() throws Exception {
- XMLConfiguration configuration = new XMLConfiguration();
- configuration.load(new ByteArrayInputStream((
+ XMLConfiguration configuration = FileConfigurationProvider.getConfig(new ByteArrayInputStream((
"<preDeletionHooks>" +
" <preDeletionHook>" +
" <class></class>" +
@@ -60,7 +61,7 @@ class PreDeletionHooksConfigurationTest {
"</preDeletionHooks>")
.getBytes(StandardCharsets.UTF_8)));
- HierarchicalConfiguration invalidConfigurationEntry = new HierarchicalConfiguration();
+ HierarchicalConfiguration invalidConfigurationEntry = new BaseHierarchicalConfiguration();
configuration.addProperty(PreDeletionHooksConfiguration.CONFIGURATION_ENTRY_NAME, ImmutableList.of(invalidConfigurationEntry));
assertThatThrownBy(() -> PreDeletionHooksConfiguration.from(configuration))
@@ -69,8 +70,7 @@ class PreDeletionHooksConfigurationTest {
@Test
void fromShouldReturnConfiguredEntry() throws Exception {
- XMLConfiguration configuration = new XMLConfiguration();
- configuration.load(new ByteArrayInputStream((
+ XMLConfiguration configuration = FileConfigurationProvider.getConfig(new ByteArrayInputStream((
"<preDeletionHooks>" +
" <preDeletionHook>" +
" <class>a.class</class>" +
@@ -85,8 +85,7 @@ class PreDeletionHooksConfigurationTest {
@Test
void fromShouldReturnAllConfiguredEntries() throws Exception {
- XMLConfiguration configuration = new XMLConfiguration();
- configuration.load(new ByteArrayInputStream((
+ XMLConfiguration configuration = FileConfigurationProvider.getConfig(new ByteArrayInputStream((
"<preDeletionHooks>" +
" <preDeletionHook>" +
" <class>a.class</class>" +
diff --git a/server/container/jetty/pom.xml b/server/container/jetty/pom.xml
index 0576690..13d8668 100644
--- a/server/container/jetty/pom.xml
+++ b/server/container/jetty/pom.xml
@@ -39,6 +39,11 @@
</dependency>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>james-server-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>james-server-util</artifactId>
</dependency>
<dependency>
diff --git a/server/container/jetty/src/test/java/org/apache/james/http/jetty/JettyHttpServerFactoryTest.java b/server/container/jetty/src/test/java/org/apache/james/http/jetty/JettyHttpServerFactoryTest.java
index 76e1ff3..35a7863 100644
--- a/server/container/jetty/src/test/java/org/apache/james/http/jetty/JettyHttpServerFactoryTest.java
+++ b/server/container/jetty/src/test/java/org/apache/james/http/jetty/JettyHttpServerFactoryTest.java
@@ -21,28 +21,19 @@ package org.apache.james.http.jetty;
import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
-import java.io.InputStream;
import java.util.List;
-import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.commons.configuration2.HierarchicalConfiguration;
+import org.apache.james.server.core.configuration.FileConfigurationProvider;
import org.junit.Test;
import com.google.common.collect.ImmutableMap;
public class JettyHttpServerFactoryTest {
- private HierarchicalConfiguration loadConfiguration(InputStream configuration) throws org.apache.commons.configuration.ConfigurationException {
- XMLConfiguration config = new XMLConfiguration();
- config.setDelimiterParsingDisabled(true);
- config.setAttributeSplittingDisabled(true);
- config.load(configuration);
- return config;
- }
-
@Test
public void shouldCreateServersAsDescribedInXmlConfiguration() throws Exception {
- HierarchicalConfiguration configuration = loadConfiguration(ClassLoader.getSystemResourceAsStream("httpserver.xml"));
+ HierarchicalConfiguration configuration = FileConfigurationProvider.getConfig(ClassLoader.getSystemResourceAsStream("httpserver.xml"));
List<JettyHttpServer> servers = new JettyHttpServerFactory().createServers(configuration);
assertThat(servers).extracting(JettyHttpServer::getConfiguration)
.containsOnly(Configuration.builder()
@@ -63,26 +54,26 @@ public class JettyHttpServerFactoryTest {
@Test
public void shouldThrowOnEmptyServletName() throws Exception {
- HierarchicalConfiguration configuration = loadConfiguration(ClassLoader.getSystemResourceAsStream("emptyservletname.xml"));
+ HierarchicalConfiguration configuration = FileConfigurationProvider.getConfig(ClassLoader.getSystemResourceAsStream("emptyservletname.xml"));
assertThatThrownBy(() -> new JettyHttpServerFactory().createServers(configuration)).isInstanceOf(ConfigurationException.class);
}
@Test
public void shouldThrowOnUnavailableServletName() throws Exception {
- HierarchicalConfiguration configuration = loadConfiguration(ClassLoader.getSystemResourceAsStream("unavailableservletname.xml"));
+ HierarchicalConfiguration configuration = FileConfigurationProvider.getConfig(ClassLoader.getSystemResourceAsStream("unavailableservletname.xml"));
assertThatThrownBy(() -> new JettyHttpServerFactory().createServers(configuration)).isInstanceOf(ConfigurationException.class);
}
@Test
public void shouldThrowOnConflictingPortConfiguration() throws Exception {
- HierarchicalConfiguration configuration = loadConfiguration(ClassLoader.getSystemResourceAsStream("conflictingport.xml"));
+ HierarchicalConfiguration configuration = FileConfigurationProvider.getConfig(ClassLoader.getSystemResourceAsStream("conflictingport.xml"));
assertThatThrownBy(() -> new JettyHttpServerFactory().createServers(configuration)).isInstanceOf(ConfigurationException.class);
}
@SuppressWarnings("unchecked")
@Test
public void shouldBeAbleToLoadEmptyMappingConfiguration() throws Exception {
- HierarchicalConfiguration configuration = loadConfiguration(ClassLoader.getSystemResourceAsStream("emptymappingconfiguration.xml"));
+ HierarchicalConfiguration configuration = FileConfigurationProvider.getConfig(ClassLoader.getSystemResourceAsStream("emptymappingconfiguration.xml"));
assertThat(new JettyHttpServerFactory().createServers(configuration))
.extracting(server -> server.getConfiguration().getMappings())
.containsOnly(ImmutableMap.of());
@@ -90,13 +81,13 @@ public class JettyHttpServerFactoryTest {
@Test
public void shouldThrowOnEmptyFilterName() throws Exception {
- HierarchicalConfiguration configuration = loadConfiguration(ClassLoader.getSystemResourceAsStream("emptyfiltername.xml"));
+ HierarchicalConfiguration configuration = FileConfigurationProvider.getConfig(ClassLoader.getSystemResourceAsStream("emptyfiltername.xml"));
assertThatThrownBy(() -> new JettyHttpServerFactory().createServers(configuration)).isInstanceOf(ConfigurationException.class);
}
@Test
public void shouldThrowOnUnavailableFilterName() throws Exception {
- HierarchicalConfiguration configuration = loadConfiguration(ClassLoader.getSystemResourceAsStream("unavailablefiltername.xml"));
+ HierarchicalConfiguration configuration = FileConfigurationProvider.getConfig(ClassLoader.getSystemResourceAsStream("unavailablefiltername.xml"));
assertThatThrownBy(() -> new JettyHttpServerFactory().createServers(configuration)).isInstanceOf(ConfigurationException.class);
}
diff --git a/server/container/spring/src/main/java/org/apache/james/container/spring/lifecycle/osgi/OSGIConfigurationProvider.java b/server/container/spring/src/main/java/org/apache/james/container/spring/lifecycle/osgi/OSGIConfigurationProvider.java
index 65042fd..6249e3a 100644
--- a/server/container/spring/src/main/java/org/apache/james/container/spring/lifecycle/osgi/OSGIConfigurationProvider.java
+++ b/server/container/spring/src/main/java/org/apache/james/container/spring/lifecycle/osgi/OSGIConfigurationProvider.java
@@ -19,11 +19,11 @@
package org.apache.james.container.spring.lifecycle.osgi;
import java.io.FileInputStream;
-import java.io.FileNotFoundException;
+import java.io.IOException;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.HierarchicalConfiguration;
-import org.apache.commons.configuration.XMLConfiguration;
+import org.apache.commons.configuration2.HierarchicalConfiguration;
+import org.apache.commons.configuration2.ex.ConfigurationException;
+import org.apache.james.server.core.configuration.FileConfigurationProvider;
public class OSGIConfigurationProvider implements org.apache.james.container.spring.lifecycle.ConfigurationProvider {
@@ -34,20 +34,11 @@ public class OSGIConfigurationProvider implements org.apache.james.container.spr
@Override
public HierarchicalConfiguration getConfiguration(String beanName) throws ConfigurationException {
- XMLConfiguration config = new XMLConfiguration();
FileInputStream fis = null;
- config.setDelimiterParsingDisabled(true);
-
- // Don't split attributes which can have bad side-effects with matcher-conditions.
- // See JAMES-1233
- config.setAttributeSplittingDisabled(true);
-
- // Use InputStream so we are not bound to File implementations of the
- // config
try {
fis = new FileInputStream("/tmp/" + beanName + ".xml");
- config.load(fis);
- } catch (FileNotFoundException e) {
+ return FileConfigurationProvider.getConfig(fis);
+ } catch (IOException e) {
throw new ConfigurationException("Bean " + beanName);
} finally {
if (fis != null) {
@@ -58,8 +49,6 @@ public class OSGIConfigurationProvider implements org.apache.james.container.spr
}
}
}
-
- return config;
}
}
diff --git a/server/dns-service/dnsservice-dnsjava/pom.xml b/server/dns-service/dnsservice-dnsjava/pom.xml
index d3c10c8..83aa0e7 100644
--- a/server/dns-service/dnsservice-dnsjava/pom.xml
+++ b/server/dns-service/dnsservice-dnsjava/pom.xml
@@ -35,6 +35,11 @@
<dependencies>
<dependency>
<groupId>${james.groupId}</groupId>
+ <artifactId>james-server-core</artifactId>
+ <scope>test</scope>
+ </dependency>
+ <dependency>
+ <groupId>${james.groupId}</groupId>
<artifactId>james-server-dnsservice-api</artifactId>
</dependency>
<dependency>
diff --git a/server/dns-service/dnsservice-dnsjava/src/test/java/org/apache/james/dnsservice/dnsjava/DNSJavaServiceTest.java b/server/dns-service/dnsservice-dnsjava/src/test/java/org/apache/james/dnsservice/dnsjava/DNSJavaServiceTest.java
index ce3f7eb..f95426c 100644
--- a/server/dns-service/dnsservice-dnsjava/src/test/java/org/apache/james/dnsservice/dnsjava/DNSJavaServiceTest.java
+++ b/server/dns-service/dnsservice-dnsjava/src/test/java/org/apache/james/dnsservice/dnsjava/DNSJavaServiceTest.java
@@ -31,8 +31,8 @@ import java.net.URL;
import java.util.ArrayList;
import java.util.Collection;
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
import org.apache.james.metrics.api.NoopMetricFactory;
+import org.apache.james.server.core.configuration.FileConfigurationProvider;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
@@ -65,11 +65,8 @@ public class DNSJavaServiceTest {
@Before
public void setUp() throws Exception {
dnsServer = new TestableDNSServer();
- DefaultConfigurationBuilder db = new DefaultConfigurationBuilder();
- db.load(new ByteArrayInputStream(DNS_SERVER_CONFIG));
-
- dnsServer.configure(db);
+ dnsServer.configure(FileConfigurationProvider.getConfig(new ByteArrayInputStream(DNS_SERVER_CONFIG)));
dnsServer.init();
defaultCache = Lookup.getDefaultCache(DClass.IN);
diff --git a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/MailetConfigImplTest.java b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/MailetConfigImplTest.java
index cd3c012..1ad3c87 100644
--- a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/MailetConfigImplTest.java
+++ b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/impl/MailetConfigImplTest.java
@@ -25,27 +25,38 @@ import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
+import org.apache.commons.configuration2.XMLConfiguration;
+import org.apache.commons.configuration2.builder.FileBasedConfigurationBuilder;
+import org.apache.commons.configuration2.builder.fluent.Parameters;
+import org.apache.commons.configuration2.convert.DisabledListDelimiterHandler;
+import org.apache.commons.configuration2.ex.ConfigurationException;
+import org.apache.commons.configuration2.io.FileHandler;
import org.junit.Before;
import org.junit.Test;
public class MailetConfigImplTest {
- private DefaultConfigurationBuilder builder;
+ private XMLConfiguration xmlConfiguration;
+ private FileHandler fileHandler;
private MailetConfigImpl config;
@Before
public void setUp() throws Exception {
- builder = new DefaultConfigurationBuilder();
+ FileBasedConfigurationBuilder<XMLConfiguration> builder = new FileBasedConfigurationBuilder<>(XMLConfiguration.class)
+ .configure(new Parameters()
+ .xml()
+ .setListDelimiterHandler(new DisabledListDelimiterHandler()));
+ xmlConfiguration = builder.getConfiguration();
+ fileHandler = new FileHandler(xmlConfiguration);
+
config = new MailetConfigImpl();
}
@Test
- public void testDotParamsFromXML() throws ConfigurationException {
- builder.load(new ByteArrayInputStream("<mailet><mail.debug>true</mail.debug></mailet>".getBytes()));
+ public void testDotParamsFromXML() throws Exception {
+ fileHandler.load(new ByteArrayInputStream("<mailet><mail.debug>true</mail.debug></mailet>".getBytes()));
- config.setConfiguration(builder);
+ config.setConfiguration(xmlConfiguration);
String param = config.getInitParameterNames().next();
assertThat(param).isEqualTo("mail.debug");
@@ -54,9 +65,9 @@ public class MailetConfigImplTest {
@Test
public void testDotParamsFromConfig() throws ConfigurationException {
- builder.addProperty("mail.debug", "true");
+ xmlConfiguration.addProperty("mail.debug", "true");
- config.setConfiguration(builder);
+ config.setConfiguration(xmlConfiguration);
String param = config.getInitParameterNames().next();
assertThat(param).isEqualTo("mail.debug");
@@ -65,10 +76,10 @@ public class MailetConfigImplTest {
// See JAMES-1232
@Test
- public void testParamWithComma() throws ConfigurationException {
- builder.load(new ByteArrayInputStream("<mailet><whatever>value1,value2</whatever></mailet>".getBytes()));
+ public void testParamWithComma() throws Exception {
+ fileHandler.load(new ByteArrayInputStream("<mailet><whatever>value1,value2</whatever></mailet>".getBytes()));
- config.setConfiguration(builder);
+ config.setConfiguration(xmlConfiguration);
String param = config.getInitParameterNames().next();
assertThat(param).isEqualTo("whatever");
@@ -76,12 +87,11 @@ public class MailetConfigImplTest {
}
@Test
- public void testParamWithXmlSpace() throws ConfigurationException {
- builder.setDelimiterParsingDisabled(true);
- builder.load(new ByteArrayInputStream(
+ public void testParamWithXmlSpace() throws Exception {
+ fileHandler.load(new ByteArrayInputStream(
"<mailet><whatever xml:space=\"preserve\"> some text </whatever></mailet>".getBytes()));
- config.setConfiguration(builder);
+ config.setConfiguration(xmlConfiguration);
String param = config.getInitParameterNames().next();
assertThat(param).isEqualTo("whatever");
diff --git a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessorTest.java b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessorTest.java
index 8b585fd..d4daaa4 100644
--- a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessorTest.java
+++ b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateCompositeProcessorTest.java
@@ -22,17 +22,18 @@ import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Fail.fail;
import java.io.ByteArrayInputStream;
+import java.io.IOException;
import java.util.Arrays;
import java.util.List;
import javax.mail.MessagingException;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
-import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.configuration2.HierarchicalConfiguration;
+import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.james.mailetcontainer.api.MailProcessor;
import org.apache.james.mailetcontainer.api.mock.MockMailProcessor;
import org.apache.james.server.core.MailImpl;
+import org.apache.james.server.core.configuration.FileConfigurationProvider;
import org.apache.mailet.Mail;
import org.junit.Rule;
import org.junit.Test;
@@ -54,7 +55,7 @@ public abstract class AbstractStateCompositeProcessorTest {
@Override
public void service(Mail mail) throws MessagingException {
- // check if the right processor was selected depending on the state
+ // check if the right processor wasAbstractStateMailetProcessorTest selected depending on the state
assertThat(mail.getState()).isEqualTo(state);
super.service(mail);
}
@@ -132,20 +133,18 @@ public abstract class AbstractStateCompositeProcessorTest {
}
}
- private HierarchicalConfiguration createConfig(List<String> states) throws ConfigurationException {
+ private HierarchicalConfiguration createConfig(List<String> states) throws ConfigurationException, IOException {
- StringBuilder sb = new StringBuilder();
- sb.append("<?xml version=\"1.0\"?>");
- sb.append("<processors>");
- for (String state : states) {
- sb.append("<processor state=\"");
- sb.append(state);
- sb.append("\"/>");
- }
- sb.append("</processors>");
+ StringBuilder sb = new StringBuilder();
+ sb.append("<?xml version=\"1.0\"?>");
+ sb.append("<processors>");
+ for (String state : states) {
+ sb.append("<processor state=\"");
+ sb.append(state);
+ sb.append("\"/>");
+ }
+ sb.append("</processors>");
- DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
- builder.load(new ByteArrayInputStream(sb.toString().getBytes()));
- return builder;
+ return FileConfigurationProvider.getConfig(new ByteArrayInputStream(sb.toString().getBytes()));
}
}
diff --git a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessorTest.java b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessorTest.java
index eaaab6c..b68a6b1 100644
--- a/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessorTest.java
+++ b/server/mailet/mailetcontainer-camel/src/test/java/org/apache/james/mailetcontainer/lib/AbstractStateMailetProcessorTest.java
@@ -27,9 +27,8 @@ import java.util.concurrent.CountDownLatch;
import javax.mail.MessagingException;
import javax.mail.internet.AddressException;
-import org.apache.commons.configuration.ConfigurationException;
-import org.apache.commons.configuration.DefaultConfigurationBuilder;
-import org.apache.commons.configuration.HierarchicalConfiguration;
+import org.apache.commons.configuration2.HierarchicalConfiguration;
+import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.james.core.MailAddress;
import org.apache.james.mailetcontainer.api.mock.ExceptionThrowingMailet;
import org.apache.james.mailetcontainer.api.mock.ExceptionThrowingMatcher;
@@ -37,6 +36,7 @@ import org.apache.james.mailetcontainer.api.mock.MockMailet;
import org.apache.james.mailetcontainer.api.mock.MockMatcher;
import org.apache.james.mailetcontainer.lib.AbstractStateMailetProcessor.MailetProcessorListener;
import org.apache.james.server.core.MailImpl;
+import org.apache.james.server.core.configuration.FileConfigurationProvider;
import org.apache.mailet.Mail;
import org.apache.mailet.Mailet;
import org.apache.mailet.Matcher;
@@ -59,9 +59,7 @@ public abstract class AbstractStateMailetProcessorTest {
sb.append("</processor>");
- DefaultConfigurationBuilder builder = new DefaultConfigurationBuilder();
- builder.load(new ByteArrayInputStream(sb.toString().getBytes()));
- return builder;
+ return FileConfigurationProvider.getConfig(new ByteArrayInputStream(sb.toString().getBytes()));
}
@Test
---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org