Skip to content

Commit

Permalink
8261209: isStandalone property: remove dependency on pretty-print
Browse files Browse the repository at this point in the history
  • Loading branch information
JoeWang-Java committed Feb 6, 2021
1 parent fac3c2d commit 0f28306
Show file tree
Hide file tree
Showing 3 changed files with 34 additions and 18 deletions.
@@ -1,5 +1,5 @@
/*
* Copyright (c) 2014, 2019, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 2014, 2021, Oracle and/or its affiliates. All rights reserved.
*/
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
Expand Down Expand Up @@ -40,7 +40,7 @@
* be viewed as internal or package private, this is not an API.
*
* @xsl.usage internal
* @LastModified: Aug 2019
* @LastModified: Feb 2021
*/
public final class ToXMLStream extends ToStream
{
Expand Down Expand Up @@ -171,7 +171,7 @@ public void startDocumentInternal() throws org.xml.sax.SAXException
writer.write('\"');
writer.write(standalone);
writer.write("?>");
if (m_doIndent) {
if (m_doIndent || m_isStandalone) {
if (m_standaloneWasSpecified
|| getDoctypePublic() != null
|| getDoctypeSystem() != null
Expand Down
4 changes: 1 addition & 3 deletions src/java.xml/share/classes/module-info.java
Expand Up @@ -217,9 +217,7 @@
* <th scope="row" style="font-weight:normal" id="ISSTANDALONE">isStandalone</th>
* <td>indicates that the serializer should treat the output as a
* standalone document. The property can be used to ensure a newline is written
* after the XML declaration when the property
* {@link org.w3c.dom.ls.LSSerializer#getDomConfig() format-pretty-print} is set
* to true. Unlike the property
* after the XML declaration. Unlike the property
* {@link org.w3c.dom.ls.LSSerializer#getDomConfig() xml-declaration}, this property
* does not have an effect on whether an XML declaration should be written out.
* </td>
Expand Down
Expand Up @@ -66,7 +66,7 @@

/*
* @test
* @bug 6439439 8087303 8174025 8223291 8249867
* @bug 6439439 8087303 8174025 8223291 8249867 8261209
* @library /javax/xml/jaxp/libs /javax/xml/jaxp/unittest
* @run testng/othervm -DrunSecMngr=true common.prettyprint.PrettyPrintTest
* @run testng/othervm common.prettyprint.PrettyPrintTest
Expand All @@ -78,11 +78,15 @@ public class PrettyPrintTest {
private static final String JDK_IS_STANDALONE =
"http://www.oracle.com/xml/jaxp/properties/isStandalone";
private static final String SP_JDK_IS_STANDALONE = "jdk.xml.isStandalone";
// pretty-print=true, isStandalone=true, linebreak added after header
private static final String XML_LB
= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sometag/>\n";
private static final String XML_NOLB
// pretty-print=true, isStandalone=false, no linebreak after header
private static final String XML_PPTRUE_NOLB
= "<?xml version=\"1.0\" encoding=\"UTF-8\"?><sometag/>\n";

// pretty-print=false, isStandalone=true, linebreak added after header
private static final String XML_PPFALSE_LB
= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<sometag/>";
/*
* test CDATA, elements only, text and element, xml:space property, mixed
* node types.
Expand All @@ -101,16 +105,22 @@ public Object[][] xmlData() throws Exception {
/*
* Bug: 8249867
* DataProvider: for testing the isStandalone property
* Data columns: property, system property, value, expected result
* Data columns: pretty-print, property, system property, value, expected result
*/
@DataProvider(name = "setting")
Object[][] getData() throws Exception {
return new Object[][]{
{false, true, true, XML_LB}, //set System property
{false, true, false, XML_NOLB},//set System property
{true, false, true, XML_LB}, //set property
{true, false, false, XML_NOLB},//set property
{false, false, false, XML_NOLB} //default
// pretty-print = true
{true, false, true, true, XML_LB}, //set System property = true
{true, false, true, false, XML_PPTRUE_NOLB}, //set System property = false
{true, true, false, true, XML_LB}, //set property = true
{true, true, false, false, XML_PPTRUE_NOLB}, //set property = false
{true, false, false, false, XML_PPTRUE_NOLB},//default

// pretty-print = false
{false, false, true, true, XML_PPFALSE_LB}, //System property = true
{false, true, false, true, XML_PPFALSE_LB}, //set property = true

};
}

Expand All @@ -134,19 +144,27 @@ Object[][] getSystemProperty() throws Exception {
* Bug: 8249867
* Verifies the use of the new property "isStandalone" and the
* corresponding System property "jdk.xml.isStandalone".
*
* Bug: 8261209
* Verifies that the property takes effect regardless of the settings of
* property "pretty-print".
*/
@Test(dataProvider = "setting")
public void test(boolean p, boolean sp, boolean val, String expected)
public void testIsStandalone_DOMLS(boolean pretty, boolean p, boolean sp,
boolean val, String expected)
throws Exception {
if (sp) {
setSystemProperty(SP_JDK_IS_STANDALONE, Boolean.toString(val));
}
Document document = getDocument();
DOMImplementationLS impl = (DOMImplementationLS)document.getImplementation();
LSSerializer ser = impl.createLSSerializer();
ser.getDomConfig().setParameter("format-pretty-print", true);
DOMConfiguration config = ser.getDomConfig();
if (pretty) {
config.setParameter("format-pretty-print", true);
}
if (p && !sp) {
ser.getDomConfig().setParameter(JDK_IS_STANDALONE, val);
config.setParameter(JDK_IS_STANDALONE, val);
}
if (sp) {
clearSystemProperty(SP_JDK_IS_STANDALONE);
Expand Down

0 comments on commit 0f28306

Please sign in to comment.