Uploaded image for project: 'JDK'
  1. JDK
  2. JDK-8004476

XSLT Extension Functions Don't Work in WebStart

    Details

    • Type: Bug
    • Status: Resolved
    • Priority: P3
    • Resolution: Fixed
    • Affects Version/s: 6u32, 7, 8
    • Fix Version/s: 8
    • Component/s: xml
    • Labels:
    • Environment:

      JDK 1.6.0_32

      Backports

        Description

        Originally filed as CR 7167657 under java_incidents : javawebstart category

        FULL PRODUCT VERSION :
        java version "1.6.0_32"
        Java(TM) SE Runtime Environment (build 1.6.0_32-b05)
        Java HotSpot(TM) Client VM (build 20.7-b02, mixed mode, sharing)


        ADDITIONAL OS VERSION INFORMATION :
        C:\Users\Ryan\Documents\NetBeansProjects\TestJava23XsltBug\dist>ver

        Microsoft Windows [Version 6.1.7601]


        A DESCRIPTION OF THE PROBLEM :
        Java 1.6.0_32 fails to compile an XSLT which calls a static Java method with the error message mentioned below when the application is run via Java Web Start. The application executes correctly under 1.6.0_32 via command line. Note that the error message is mistaken regarding whether the extension function is state vs. non-static.

        This is a regression as the application (executed via Java Web Start) behaves correctly in Java 1.6.0_31.

        REGRESSION. Last worked in version 6u31

        STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
        Compile and run the application included in the source code via Java Web Start. Observe the error message generated when running under 1.6.0_32 and observe the correct execution under 1.6.0_31.

        EXPECTED VERSUS ACTUAL BEHAVIOR :
        EXPECTED -
        The application is expected to execute correctly and to transform the XML document with the XSLT. The expected output to the Java Console window is below.

        ----------------------------------------------------
        <html xmlns:ext="com.test.Test">
        <body>one two</body>
        </html>
        ACTUAL -
        Instead, the application reports an error to the Java Console Window when it compiles the XSLT.



        ERROR MESSAGES/STACK TRACES THAT OCCUR :
        Java Web Start 1.6.0_32
        Using JRE version 1.6.0_32-b05 Java HotSpot(TM) Client VM
        User home directory = C:\Users\Ryan
        ----------------------------------------------------
        c: clear console window
        f: finalize objects on finalization queue
        g: garbage collect
        h: display this help message
        m: print memory usage
        o: trigger logging
        p: reload proxy configuration
        q: hide console
        r: reload policy configuration
        s: dump system and deployment properties
        t: dump thread list
        v: dump thread stack
        0-5: set trace level to <n>
        ----------------------------------------------------
        ERROR: 'The first argument to the non-static Java function 'append' is not a valid object reference.'
        FATAL ERROR: 'Could not compile stylesheet'
        javax.xml.transform.TransformerConfigurationException: Could not compile stylesheet
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(Unknown Source)
        at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTransformer(Unknown Source)
        at com.test.Test.main(Test.java:33)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
        at java.lang.reflect.Method.invoke(Unknown Source)
        at com.sun.javaws.Launcher.executeApplication(Unknown Source)
        at com.sun.javaws.Launcher.executeMainClass(Unknown Source)
        at com.sun.javaws.Launcher.doLaunchApp(Unknown Source)
        at com.sun.javaws.Launcher.run(Unknown Source)
        at java.lang.Thread.run(Unknown Source)


        REPRODUCIBILITY :
        This bug can be reproduced always.

        ---------- BEGIN SOURCE ----------
        package com.test;


        import java.io.*;
        import javax.xml.transform.*;
        import javax.xml.transform.stream.*;


        public class Test
        {
           private Test() {}

           private static final String XML = "<test></test>";
           private static final String XSLT = "<?xml version=\"1.0\"?>" +
                                              "<xsl:stylesheet version=\"0\"" +
                                              " xmlns:xsl=\"http://www.w3.org/1999/XSL/Transform\"" +
                                              " xmlns:ext=\"com.test.Test\">" +
                                              "<xsl:template match=\"/\">" +
                                              " <html>" +
                                              " <body>" +
                                              " <xsl:value-of select=\"ext:append('one','two')\"/>" +
                                              " </body>" +
                                              " </html>" +
                                              "</xsl:template>" +
                                              "</xsl:stylesheet>";


           public static void main( String[] args )
           {
              try
              {
                 TransformerFactory factory = TransformerFactory.newInstance();
                 Transformer transformer = factory.newTransformer( new StreamSource( new StringReader( XSLT ) ) );
                 Source xml_source = new StreamSource( new StringReader( XML ) );
                 StringWriter output = new StringWriter();

                 transformer.transform( xml_source, new StreamResult( output ) );

                 System.out.println( output.toString() );
              }
              catch( Throwable t )
              {
                 t.printStackTrace( System.err );
              }
           }

           public static String append( String one, String two )
           {
              StringBuilder buffer = new StringBuilder( one.length() + two.length() + 1 );
              buffer.append( one );
              buffer.append( ' ' );
              buffer.append( two );
              return buffer.toString();
           }
        }
        ---------- END SOURCE ----------

        CUSTOMER SUBMITTED WORKAROUND :
        Work around is to direct our customers to fall-back to Java 1.6.0_31
        *** (#1 of 1): 2012-05-09 13:31:35 PDT webbug-group@sun.com

          Issue Links

            Activity

            Hide
            joehw Joe Wang added a comment -
            The original incident is at http://webbugs.sfbay.sun.com/rt/incidentDisplay?incidentID=2246562
            (company - Computer Projects of Illinois , email - rsawatzky@openfox.com)
            *** (#1 of 1): 2012-05-09 13:31:35 PDT webbug-group@sun.com
            Show
            joehw Joe Wang added a comment - The original incident is at http://webbugs.sfbay.sun.com/rt/incidentDisplay?incidentID=2246562 (company - Computer Projects of Illinois , email - rsawatzky@openfox.com ) *** (#1 of 1): 2012-05-09 13:31:35 PDT webbug-group@sun.com
            Hide
            joehw Joe Wang added a comment -
            Refer to http://jaxp.java.net/1.4/JAXP-Compatibility.html#JAXP_security, XSLT extension functions are disabled when the secure processing feature is on. The change was integrated into 6u32 and 7u4.
            Show
            joehw Joe Wang added a comment - Refer to http://jaxp.java.net/1.4/JAXP-Compatibility.html#JAXP_security, XSLT extension functions are disabled when the secure processing feature is on. The change was integrated into 6u32 and 7u4.
            Hide
            hgupdate HG Updates added a comment -
            URL: http://hg.openjdk.java.net/jdk8/tl/jaxp/rev/390e94b9a852
            User: joehw
            Date: 2013-10-24 20:46:35 +0000
            Show
            hgupdate HG Updates added a comment - URL: http://hg.openjdk.java.net/jdk8/tl/jaxp/rev/390e94b9a852 User: joehw Date: 2013-10-24 20:46:35 +0000
            Hide
            hgupdate HG Updates added a comment -
            URL: http://hg.openjdk.java.net/jdk8/tl/jdk/rev/05dbf105e70f
            User: joehw
            Date: 2013-10-24 21:15:29 +0000
            Show
            hgupdate HG Updates added a comment - URL: http://hg.openjdk.java.net/jdk8/tl/jdk/rev/05dbf105e70f User: joehw Date: 2013-10-24 21:15:29 +0000
            Hide
            hgupdate HG Updates added a comment -
            URL: http://hg.openjdk.java.net/jdk8/jdk8/jaxp/rev/390e94b9a852
            User: lana
            Date: 2013-11-05 20:13:41 +0000
            Show
            hgupdate HG Updates added a comment - URL: http://hg.openjdk.java.net/jdk8/jdk8/jaxp/rev/390e94b9a852 User: lana Date: 2013-11-05 20:13:41 +0000
            Hide
            hgupdate HG Updates added a comment -
            URL: http://hg.openjdk.java.net/jdk8/jdk8/jdk/rev/05dbf105e70f
            User: lana
            Date: 2013-11-05 21:09:17 +0000
            Show
            hgupdate HG Updates added a comment - URL: http://hg.openjdk.java.net/jdk8/jdk8/jdk/rev/05dbf105e70f User: lana Date: 2013-11-05 21:09:17 +0000

              People

              • Assignee:
                joehw Joe Wang
                Reporter:
                joehw Joe Wang
              • Votes:
                0 Vote for this issue
                Watchers:
                4 Start watching this issue

                Dates

                • Created:
                  Updated:
                  Resolved: