You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by pk...@apache.org on 2026/08/30 20:28:32 UTC
(commons-configuration) 02/02: Resolve schema locally in TestMultiFileConfigurationBuilder
This is an automated email from the ASF dual-hosted git repository.
ppkarwasz pushed a commit to branch feat/use-commons-xml
in repository https://gitbox.apache.org/repos/asf/commons-configuration.git
commit 18ec795e47fd66e0d01a18122108ff906e0ca59b
Author: Piotr P. Karwasz <pk...@apache.org>
AuthorDate: Sun Aug 30 22:25:52 2026 +0200
Resolve schema locally in TestMultiFileConfigurationBuilder
The 2001 test configuration references its schema through an absolute
https URI (xsi:noNamespaceSchemaLocation). The hardened parser does not
fetch external resources, so testSchemaValidationError no longer reached
the intended schema validation error; the entity resolver refused the
remote fetch first.
Register the local testMultiConfiguration.xsd for that system URI via an
XML catalog (CatalogResolver pointing at the existing catalog.xml, which
already rewrites https://commons.apache.org/ to the local test
resources) and set it as the builder's entity resolver. The schema now
loads locally, so the expected SAXParseException validation error is
raised again.
Assisted-By: Claude Opus 4.8 (1M context) <no...@anthropic.com>
---
.../builder/combined/TestMultiFileConfigurationBuilder.java | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/src/test/java/org/apache/commons/configuration2/builder/combined/TestMultiFileConfigurationBuilder.java b/src/test/java/org/apache/commons/configuration2/builder/combined/TestMultiFileConfigurationBuilder.java
index d1e51f0f8..e43d6a964 100644
--- a/src/test/java/org/apache/commons/configuration2/builder/combined/TestMultiFileConfigurationBuilder.java
+++ b/src/test/java/org/apache/commons/configuration2/builder/combined/TestMultiFileConfigurationBuilder.java
@@ -29,6 +29,7 @@ import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
+import org.apache.commons.configuration2.ConfigurationAssert;
import org.apache.commons.configuration2.ConfigurationLookup;
import org.apache.commons.configuration2.DynamicCombinedConfiguration;
import org.apache.commons.configuration2.HierarchicalConfiguration;
@@ -49,6 +50,7 @@ import org.apache.commons.configuration2.event.EventListenerTestImpl;
import org.apache.commons.configuration2.ex.ConfigurationException;
import org.apache.commons.configuration2.interpol.ConfigurationInterpolator;
import org.apache.commons.configuration2.interpol.DefaultLookups;
+import org.apache.commons.configuration2.resolver.CatalogResolver;
import org.apache.commons.configuration2.tree.ExpressionEngine;
import org.apache.commons.configuration2.tree.xpath.XPathExpressionEngine;
import org.junit.jupiter.api.Test;
@@ -334,8 +336,13 @@ public class TestMultiFileConfigurationBuilder extends AbstractMultiFileConfigur
*/
@Test
void testSchemaValidationError() {
+ // The testMultiConfiguration_2001.xml configuration references its schema through an absolute https URI.
+ // The hardened parser does not fetch external resources,
+ // so register the local testMultiConfiguration.xsd for that system URI via an XML catalog.
+ final CatalogResolver resolver = new CatalogResolver();
+ resolver.setCatalogFiles(ConfigurationAssert.getTestFile("catalog.xml").getAbsolutePath());
final MultiFileConfigurationBuilder<XMLConfiguration> builder = createTestBuilder(
- new XMLBuilderParametersImpl().setValidating(true).setSchemaValidation(true));
+ new XMLBuilderParametersImpl().setValidating(true).setSchemaValidation(true).setEntityResolver(resolver));
switchToConfig("2001");
final ConfigurationException ex = assertThrows(ConfigurationException.class, builder::getConfiguration);
Throwable cause = ex.getCause();