view test/javax/xml/jaxp/unittest/dom/ls/Bug6354955.java @ 779:2b61bfcaa586

8132660: Change jaxp unit test package name to be different with jaxp api Reviewed-by: joehw Contributed-by: frank.yuan@oracle.com
author joehw
date Mon, 10 Aug 2015 09:52:32 -0700
parents
children
line wrap: on
line source

/*
 * Copyright (c) 2014, 2015, Oracle and/or its affiliates. All rights reserved.
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 *
 * This code is free software; you can redistribute it and/or modify it
 * under the terms of the GNU General Public License version 2 only, as
 * published by the Free Software Foundation.
 *
 * This code is distributed in the hope that it will be useful, but WITHOUT
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
 * version 2 for more details (a copy is included in the LICENSE file that
 * accompanied this code).
 *
 * You should have received a copy of the GNU General Public License version
 * 2 along with this work; if not, write to the Free Software Foundation,
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
 *
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
 * or visit www.oracle.com if you need additional information or have any
 * questions.
 */

package dom.ls;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.testng.Assert;
import org.testng.annotations.Test;
import org.w3c.dom.CDATASection;
import org.w3c.dom.Comment;
import org.w3c.dom.Document;
import org.w3c.dom.EntityReference;
import org.w3c.dom.Node;
import org.w3c.dom.ProcessingInstruction;
import org.w3c.dom.Text;
import org.w3c.dom.ls.DOMImplementationLS;
import org.w3c.dom.ls.LSSerializer;


/*
 * @bug 6354955
 * @summary Test LSSerializer can writeToString on DOM Text node with white space.
 */
public class Bug6354955 {

    @Test
    public void testTextNode() {
        try {
            Document xmlDocument = createNewDocument();

            String whitespace = "\r\n    ";
            Text textNode = xmlDocument.createTextNode(whitespace);

            System.out.println("original text is:\r\n\"" + whitespace + "\"");
            String outerXML = getOuterXML(textNode);
            System.out.println("OuterXML Text Node is:\r\n\"" + outerXML + "\"");

        } catch (Exception e) {
            e.printStackTrace();
            Assert.fail("Exception occured: " + e.getMessage());
        }
    }

    @Test
    public void testCommentNode() {
        try {
            Document xmlDocument = createNewDocument();
            String commentStr = "This is a comment node";
            Comment cmtNode = xmlDocument.createComment(commentStr);
            String outerXML = getOuterXML(cmtNode);
            System.out.println("OuterXML of Comment Node is:" + outerXML);

        } catch (Exception e) {
            e.printStackTrace();
            Assert.fail("Exception occured: " + e.getMessage());
        }
    }

    @Test
    public void testPINode() {
        try {
            Document xmlDocument = createNewDocument();
            ProcessingInstruction piNode = xmlDocument.createProcessingInstruction("execute", "test");
            String outerXML = getOuterXML(piNode);
            System.out.println("OuterXML of Comment Node is:" + outerXML);

        } catch (Exception e) {
            e.printStackTrace();
            Assert.fail("Exception occured: " + e.getMessage());
        }
    }

    @Test
    public void testCDATA() {
        try {
            Document xmlDocument = createNewDocument();
            CDATASection cdataNode = xmlDocument.createCDATASection("See Data!!");
            String outerXML = getOuterXML(cdataNode);
            System.out.println("OuterXML of Comment Node is:" + outerXML);

        } catch (Exception e) {
            e.printStackTrace();
            Assert.fail("Exception occured: " + e.getMessage());
        }
    }

    @Test
    public void testEntityReference() {
        try {
            Document xmlDocument = createNewDocument();
            EntityReference erefNode = xmlDocument.createEntityReference("entityref");
            String outerXML = getOuterXML(erefNode);
            System.out.println("OuterXML of Comment Node is:" + outerXML);

        } catch (Exception e) {
            e.printStackTrace();
            Assert.fail("Exception occured: " + e.getMessage());
        }
    }

    private String getOuterXML(Node node) {
        DOMImplementationLS domImplementation = (DOMImplementationLS) node.getOwnerDocument().getImplementation();
        LSSerializer lsSerializer = domImplementation.createLSSerializer();
        if (!(node instanceof Document)) {
            lsSerializer.getDomConfig().setParameter("xml-declaration", false);
        }
        return lsSerializer.writeToString(node);
    }

    private Document createNewDocument() throws Exception {
        DocumentBuilderFactory documentBuilderFactory = DocumentBuilderFactory.newInstance();
        documentBuilderFactory.setNamespaceAware(true);
        DocumentBuilder documentBuilder = documentBuilderFactory.newDocumentBuilder();
        return documentBuilder.newDocument();
    }
}