This is an automated email from the ASF dual-hosted git repository. veithen pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/ws-axiom.git
The following commit(s) were added to refs/heads/master by this push: new d9263a49c Fix the implementation of the DOM getXmlVersion method d9263a49c is described below commit d9263a49ccf997308cf14455c58c06235e427888 Author: Andreas Veithen <andreas.veit...@gmail.com> AuthorDate: Sat May 13 23:15:55 2023 +0100 Fix the implementation of the DOM getXmlVersion method --- .../java/org/apache/axiom/core/CoreDocument.java | 3 +++ .../axiom/dom/impl/mixin/DOMDocumentMixin.java | 3 ++- .../apache/axiom/ts/dom/DOMTestSuiteBuilder.java | 3 +++ ...ersionFromParsedDocumentWithoutDeclaration.java | 23 ++++++++++++++++++++++ 4 files changed, 31 insertions(+), 1 deletion(-) diff --git a/mixins/core-mixins/src/main/java/org/apache/axiom/core/CoreDocument.java b/mixins/core-mixins/src/main/java/org/apache/axiom/core/CoreDocument.java index b810541b4..ac3f8ba03 100644 --- a/mixins/core-mixins/src/main/java/org/apache/axiom/core/CoreDocument.java +++ b/mixins/core-mixins/src/main/java/org/apache/axiom/core/CoreDocument.java @@ -23,6 +23,9 @@ public interface CoreDocument extends CoreParentNode { void coreSetInputEncoding(String inputEncoding); + /** + * Returns the XML version declared on the XML declaration or {@code null} if none was declared. + */ String coreGetXmlVersion(); void coreSetXmlVersion(String xmlVersion); diff --git a/mixins/dom-mixins/src/main/java/org/apache/axiom/dom/impl/mixin/DOMDocumentMixin.java b/mixins/dom-mixins/src/main/java/org/apache/axiom/dom/impl/mixin/DOMDocumentMixin.java index b4f4d095f..3d47e77c6 100644 --- a/mixins/dom-mixins/src/main/java/org/apache/axiom/dom/impl/mixin/DOMDocumentMixin.java +++ b/mixins/dom-mixins/src/main/java/org/apache/axiom/dom/impl/mixin/DOMDocumentMixin.java @@ -176,7 +176,8 @@ public abstract class DOMDocumentMixin implements DOMDocument { @Override public final String getXmlVersion() { - return coreGetXmlVersion(); + String version = coreGetXmlVersion(); + return version == null ? "1.0" : version; } @Override diff --git a/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/DOMTestSuiteBuilder.java b/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/DOMTestSuiteBuilder.java index 5b82a4947..be9db5dc1 100644 --- a/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/DOMTestSuiteBuilder.java +++ b/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/DOMTestSuiteBuilder.java @@ -99,6 +99,9 @@ public final class DOMTestSuiteBuilder extends MatrixTestSuiteBuilder { addTest(new org.apache.axiom.ts.dom.document.TestDocumentSiblings(dbf)); addTest(new org.apache.axiom.ts.dom.document.TestGetDomConfigDefaults(dbf)); addTest(new org.apache.axiom.ts.dom.document.TestGetOwnerDocument(dbf)); + addTest( + new org.apache.axiom.ts.dom.document + .TestGetXmlVersionFromParsedDocumentWithoutDeclaration(dbf)); addTest(new org.apache.axiom.ts.dom.document.TestLookupNamespaceURI(dbf)); addTest(new org.apache.axiom.ts.dom.document.TestLookupNamespaceURIWithEmptyDocument(dbf)); addTest(new org.apache.axiom.ts.dom.document.TestLookupPrefixWithEmptyDocument(dbf)); diff --git a/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/document/TestGetXmlVersionFromParsedDocumentWithoutDeclaration.java b/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/document/TestGetXmlVersionFromParsedDocumentWithoutDeclaration.java new file mode 100644 index 000000000..6708364a8 --- /dev/null +++ b/testing/dom-testsuite/src/main/java/org/apache/axiom/ts/dom/document/TestGetXmlVersionFromParsedDocumentWithoutDeclaration.java @@ -0,0 +1,23 @@ +package org.apache.axiom.ts.dom.document; + +import static com.google.common.truth.Truth.assertThat; + +import java.io.StringReader; + +import javax.xml.parsers.DocumentBuilderFactory; + +import org.apache.axiom.ts.dom.DOMTestCase; +import org.w3c.dom.Document; +import org.xml.sax.InputSource; + +public class TestGetXmlVersionFromParsedDocumentWithoutDeclaration extends DOMTestCase { + public TestGetXmlVersionFromParsedDocumentWithoutDeclaration(DocumentBuilderFactory dbf) { + super(dbf); + } + + @Override + protected void runTest() throws Throwable { + Document doc = dbf.newDocumentBuilder().parse(new InputSource(new StringReader("<root/>"))); + assertThat(doc.getXmlVersion()).isEqualTo("1.0"); + } +}