# HG changeset patch # User joehw # Date 1376078010 25200 # Node ID c27d061358c564b80d360608e70b98373368a08d # Parent fdb8e07fdaee14f76cf9ba50e36e0e6898fcca43 8022548: SPECJVM2008 has errors introduced in 7u40-b34 Reviewed-by: chegar, lancea diff -r fdb8e07fdaee -r c27d061358c5 jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xml --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xml Fri Aug 09 12:53:30 2013 -0700 @@ -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 -r fdb8e07fdaee -r c27d061358c5 jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xsl --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/xml/jaxp/parsers/8022548/JDK8022548.xsl Fri Aug 09 12:53:30 2013 -0700 @@ -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 -r fdb8e07fdaee -r c27d061358c5 jdk/test/javax/xml/jaxp/parsers/8022548/TestBase.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/xml/jaxp/parsers/8022548/TestBase.java Fri Aug 09 12:53:30 2013 -0700 @@ -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 -r fdb8e07fdaee -r c27d061358c5 jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/jdk/test/javax/xml/jaxp/parsers/8022548/XOMParserTest.java Fri Aug 09 12:53:30 2013 -0700 @@ -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); + + } + } +}