JDK-8162608 : XSLT Extension Functions Don't Work in WebStart
  • Type: Bug
  • Component: deploy
  • Sub-Component: webstart
  • Affected Version: 7
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: windows_7
  • CPU: x86
  • Submitted: 2012-09-13
  • Updated: 2016-07-27
  • Resolved: 2016-07-27
Related Reports
Duplicate :  
Description
FULL PRODUCT VERSION :
java version "1.7.0_07"
Java(TM) SE Runtime Environment (build 1.7.0_07-b10)
Java HotSpot(TM) 64-Bit Server VM (build 23.3-b01, mixed mode)

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

 customer  Windows [Version 6.1.7601]

A DESCRIPTION OF THE PROBLEM :
A DESCRIPTION OF THE PROBLEM :
Java 1.7.0_7 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.7.0_7 via command line.  Note that the error message is mistaken regarding whether the extension function is static vs. non-static.

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

This appears to be the same issue as bug id: 7167657.  However, I cannot edit that bug to add the additional information that it is now present in the latest Java 7 release.  This is why I am reporting a new bug.


REGRESSION.  Last worked in version 7

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.7.0_7 and observe the correct execution under 1.7.0_5.

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 10.7.2.10
Using JRE version 1.7.0_07-b10 Java HotSpot(TM) 64-Bit Server 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  customer  reference.'
FATAL ERROR:  'Could not compile stylesheet'


REPRODUCIBILITY :
This bug can be reproduced always.

---------- BEGIN SOURCE ----------
---------- 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 ----------

---------- END SOURCE ----------

CUSTOMER SUBMITTED WORKAROUND :
Work around is to direct our customers to fall-back to Java 1.7.0_5; however customers are not happy with that solution due to the security concerns with that version.

Comments
Thank you for filing this bug report. We fixed this issue in the following bug: [ JDK-8004476: XSLT Extension Functions Don't Work in WebStart ] https://bugs.openjdk.java.net/browse/JDK-8004476 This fix is included with Java 7u60 and later releases. Please upgrade and confirm that the issue no longer reproduces for you. If you still have issues with the latest releases, please file a new bug report.
21-08-2014