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 <[email protected]> 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: [email protected] For additional commands, e-mail: [email protected]
