You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ws.apache.org by ve...@apache.org on 2023/05/13 22:16:45 UTC

[ws-axiom] branch master updated: Fix the implementation of the DOM getXmlVersion method

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 <an...@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");
+    }
+}