From 1848c820d0d4f12799f629913c64aa4b47e5d7eb Mon Sep 17 00:00:00 2001 From: Joe Wang Date: Fri, 9 Aug 2013 12:53:30 -0700 Subject: [PATCH] 8022548: SPECJVM2008 has errors introduced in 7u40-b34 Reviewed-by: chegar, lancea --- .../xml/jaxp/parsers/8022548/JDK8022548.xml | 14 + .../xml/jaxp/parsers/8022548/JDK8022548.xsl | 618 ++++++++++++++++++ .../xml/jaxp/parsers/8022548/TestBase.java | 73 +++ .../jaxp/parsers/8022548/XOMParserTest.java | 127 ++++ 4 files changed, 832 insertions(+) create mode 100644 jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xml create mode 100644 jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xsl create mode 100644 jdk/test/javax/xml/jaxp/parsers/8022548/TestBase.java create mode 100644 jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java diff --git a/jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xml b/jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xml new file mode 100644 index 00000000000..0d869d2807e --- /dev/null +++ b/jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xml @@ -0,0 +1,14 @@ + + + + + + +

+ These pages are all about XSLT, an XML-based language for translating one set of XML into another set of XML, or into HTML. Of course, there are all sorts of other pages around that cover XSLT. Jeni's XSLT Pages, though, are dedicated to helping people understand and make the most of using XSLT. +

+

+ My warmest thanks to all those people who post interesting problems on XSL-List, and especially to those of you that have encouraged me to set up this site through your kind emails. +

+ +
diff --git a/jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xsl b/jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xsl new file mode 100644 index 00000000000..cd9e0698a33 --- /dev/null +++ b/jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xsl @@ -0,0 +1,618 @@ + + + + + + + + + + + + + + + + + + + + + <xsl:call-template name="get-metadata"> + <xsl:with-param name="what" select="'title'" /> + <xsl:with-param name="about" select="$uri" /> + </xsl:call-template> + + + + + + + + + + + + + + + + + + + + + + +

+ + +

+
+ + + + + + + + + + /index.xml + + /index.html + + + + + + + + + + + + ../index.xml + ../index.html + + + + + index.xml + index.html + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ + +
+ $ + + + = + + + [= ] + + +
+
+ + +
    + +
+
+ +
+
+ + +
  • :
  • +
    + + + + + + + '' + "" + + + + + + + + + + + +
    + +
    +
    + + +
    + +
    +
    + + +
    +

    + + + + + + +

    + +
    +
    + + +
    +		
    +	
    +
    + + + + +
    +        
    +      
    +
    + + + + + +
    +
    + + + + + + + + + +
    + + + + + + + + + + + +
    + + + + + + + + + + + [] + + + + + + +
    + +
    + +
    + + + + + + + + + + + + + + resources/icons/ + click- + + .gif + + + javascript:this.src='resources/icons/over-.gif' + javascript:this.src='resources/icons/click-.gif' + javascript:this.src='resources/icons/.gif' + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + img + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + http:// + + + mailto: + + + + + + + + + offsite + mailto + local + + + + + + + + + + + + + home + mail + goto + + + + + + +
    +
    +

    + + + + + + + + last modified + + + + + + + + by + + + + + + Jeni Tennison + + +

    +
    +
    + +
    diff --git a/jdk/test/javax/xml/jaxp/parsers/8022548/TestBase.java b/jdk/test/javax/xml/jaxp/parsers/8022548/TestBase.java new file mode 100644 index 00000000000..c395ff47214 --- /dev/null +++ b/jdk/test/javax/xml/jaxp/parsers/8022548/TestBase.java @@ -0,0 +1,73 @@ + +import java.security.Policy; + +/** + * + * + * @author huizhe.wang@oracle.com + */ +public class TestBase { + public String filePath; + boolean hasSM; + String curdir; + Policy origPolicy; + + String testName; + String errMsg; + + int passed = 0, failed = 0; + + /** + * Creates a new instance of StreamReader + */ + public TestBase(String name) { + testName = name; + } + + //junit @Override + protected void setUp() { + if (System.getSecurityManager() != null) { + hasSM = true; + System.setSecurityManager(null); + } + + filePath = System.getProperty("test.src"); + if (filePath == null) { + //current directory + filePath = System.getProperty("user.dir"); + } + origPolicy = Policy.getPolicy(); + + } + + //junit @Override + public void tearDown() { + // turn off security manager and restore policy + System.setSecurityManager(null); + Policy.setPolicy(origPolicy); + if (hasSM) { + System.setSecurityManager(new SecurityManager()); + } + System.out.println("\nNumber of tests passed: " + passed); + System.out.println("Number of tests failed: " + failed + "\n"); + + if (errMsg != null ) { + throw new RuntimeException(errMsg); + } + } + + void fail(String msg) { + if (errMsg == null) { + errMsg = msg; + } else { + errMsg = errMsg + "\n" + msg; + } + failed++; + } + + void success(String msg) { + passed++; + System.out.println(msg); + } + +} diff --git a/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java b/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java new file mode 100644 index 00000000000..4fe26597508 --- /dev/null +++ b/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java @@ -0,0 +1,127 @@ +/* + * Copyright (c) 2013, 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. + */ + +/** + * @test @bug 8022548 + * @summary test that a parser can use DTDConfiguration + * @run main XOMParserTest + */ +import com.sun.org.apache.xerces.internal.impl.Constants; +import com.sun.org.apache.xerces.internal.parsers.*; +import java.io.*; +import javax.xml.transform.*; +import javax.xml.transform.stream.StreamResult; +import javax.xml.transform.stream.StreamSource; +import org.xml.sax.InputSource; + +/** + *

    Test {@link javax.xml.transform.Transformer} for JDK-8022548: SPECJVM2008 + * has errors introduced in 7u40-b34 + * + * Test XOM is supported after jaxp 1.5

    + * + * @author Joe Wang + * + */ +public class XOMParserTest extends TestBase { + + public XOMParserTest(String name) { + super(name); + } + + /** + * @param args the command line arguments + */ + public static void main(String[] args) { + XOMParserTest test = new XOMParserTest("XOM parser test"); + test.setUp(); + test.testTransform(); + test.tearDown(); + } + + public final void testTransform() { + + try { + + String inFilename = filePath + "/JDK8022548.xml"; + String xslFilename = filePath + "/JDK8022548.xsl"; + String outFilename = filePath + "/JDK8022548.out"; + + StringWriter sw = new StringWriter(); + // Create transformer factory + TransformerFactory factory = TransformerFactory.newInstance(); + // set the translet name +// factory.setAttribute("translet-name", "myTranslet"); + + // set the destination directory +// factory.setAttribute("destination-directory", "c:\\temp"); +// factory.setAttribute("generate-translet", Boolean.TRUE); + + // Use the factory to create a template containing the xsl file + Templates template = factory.newTemplates(new StreamSource(new FileInputStream(xslFilename))); + // Use the template to create a transformer + Transformer xformer = template.newTransformer(); + // Prepare the input and output files + Source source = new StreamSource(new FileInputStream(inFilename)); + Result result = new StreamResult(new FileOutputStream(outFilename)); + //Result result = new StreamResult(sw); + // Apply the xsl file to the source file and write the result to the output file + xformer.transform(source, result); + + /** + * String out = sw.toString(); if (out.indexOf("

    ") < 0 ) { + * fail(out); } + */ + String canonicalizedFileName = outFilename + ".canonicalized"; + canonicalize(outFilename, canonicalizedFileName); + } catch (Exception e) { + // unexpected failure + fail(e.getMessage()); + } + } + + public void canonicalize(String inName, String outName) { + try (//FileOutputStream outStream = new FileOutputStream(outName); + FileInputStream inputStream = new FileInputStream(inName);) { + JDK15XML1_0Parser parser = new JDK15XML1_0Parser(); + parser.parse(new InputSource(inputStream)); + success("test passed"); + } catch (Exception e) { + fail(e.getMessage()); + } + + } + + class JDK15XML1_0Parser extends SAXParser { + + JDK15XML1_0Parser() throws org.xml.sax.SAXException { + + super(new DTDConfiguration()); + // workaround for Java 1.5 beta 2 bugs + com.sun.org.apache.xerces.internal.util.SecurityManager manager = + new com.sun.org.apache.xerces.internal.util.SecurityManager(); + setProperty(Constants.XERCES_PROPERTY_PREFIX + Constants.SECURITY_MANAGER_PROPERTY, manager); + + } + } +}