From 27191ff5ac23b20f7a2e00a52c035a69a8b513fd Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 1 Jul 2026 09:20:09 -0400 Subject: [PATCH 1/3] Add test: Xpp3DomBuilder does not modify SAX driver system property --- .../maven/shared/utils/xml/Xpp3DomBuilderTest.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/src/test/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilderTest.java b/src/test/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilderTest.java index ec8ed461..b1a5f1e5 100644 --- a/src/test/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilderTest.java +++ b/src/test/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilderTest.java @@ -27,6 +27,7 @@ import java.nio.charset.StandardCharsets; import org.apache.maven.shared.utils.xml.pull.XmlPullParserException; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals; @@ -79,6 +80,14 @@ public void trimming() { assertEquals(" preserve space ", dom.getChild("element6").getValue()); } + @Test + public void buildDoesNotModifySaxDriverProperty() { + String key = "org.xml.sax.driver"; + String original = System.getProperty(key); + Xpp3DomBuilder.build(new StringReader("")); + assertEquals(original, System.getProperty(key)); + } + @Test public void testMalformedXml() { try { From 2131f11069b874a03d811de0727bd541c2ffdb8b Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 1 Jul 2026 09:20:29 -0400 Subject: [PATCH 2/3] Xpp3DomBuilder.createXmlReader: remove thread-unsafe system property manipulation --- .../maven/shared/utils/xml/Xpp3DomBuilder.java | 12 +----------- 1 file changed, 1 insertion(+), 11 deletions(-) diff --git a/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilder.java b/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilder.java index a97e408e..76775e30 100644 --- a/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilder.java +++ b/src/main/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilder.java @@ -116,17 +116,7 @@ private static XMLReader createXmlReader() throws SAXException { return comSunXmlReader; } - String key = "org.xml.sax.driver"; - String oldParser = System.getProperty(key); - System.clearProperty(key); // There's a "slight" problem with this an parallel maven: It does not work ;) - - try { - return org.xml.sax.helpers.XMLReaderFactory.createXMLReader(); - } finally { - if (oldParser != null) { - System.setProperty(key, oldParser); - } - } + return org.xml.sax.helpers.XMLReaderFactory.createXMLReader(); } private static XMLReader instantiate(String s) { From add1fcbac98ee0d004b74954aa13d74de34340d4 Mon Sep 17 00:00:00 2001 From: Elliotte Rusty Harold Date: Wed, 1 Jul 2026 09:20:52 -0400 Subject: [PATCH 3/3] spotless:apply formatting --- .../org/apache/maven/shared/utils/xml/Xpp3DomBuilderTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilderTest.java b/src/test/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilderTest.java index b1a5f1e5..d7d477db 100644 --- a/src/test/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilderTest.java +++ b/src/test/java/org/apache/maven/shared/utils/xml/Xpp3DomBuilderTest.java @@ -27,7 +27,6 @@ import java.nio.charset.StandardCharsets; import org.apache.maven.shared.utils.xml.pull.XmlPullParserException; -import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.Test; import static org.junit.jupiter.api.Assertions.assertEquals;