XalanJ2
  1. XalanJ2
  2. XALANJ-2386

tranforming a StreamResult constructed with a File object for a path containing namespaces fails

    Details

    • Type: Bug Bug
    • Status: Reopened
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 2.7
    • Fix Version/s: 2.5
    • Component/s: XSLTC
    • Labels:
      None
    • Environment:
      Windows XP, Sun J2SE 5 or Harmony 533500

      Description

      hi,

      The behaviour of the code snippet below is different depending on whether you use XalanJ 2.7.0 or the inbuilt equivalent in Sun Java 5.

      If you construct a StreamResult with a java.io.File containing spaces in the name, then a wrapped FileNotFoundException is thrown because it looks for a filename with the spaces encoded as "%20"

      We hit this as part of the Eclipse CDT 4.0 project:
      https://bugs.eclipse.org/bugs/show_bug.cgi?id=194359

      thanks,
      Andrew

      ------------- Snippet

      import java.io.File;

      import javax.xml.parsers.DocumentBuilderFactory;
      import javax.xml.transform.TransformerException;
      import javax.xml.transform.TransformerFactory;
      import javax.xml.transform.dom.DOMSource;
      import javax.xml.transform.stream.StreamResult;

      import org.w3c.dom.Document;

      public class Main {
      public static void main(String[] args) throws Exception {
      try

      { Document d = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument(); DOMSource domSource = new DOMSource(d); StreamResult res = new StreamResult(new File("C:/A B/test.xml")); TransformerFactory.newInstance().newTransformer().transform(domSource, res); }

      catch(TransformerException te) {
      if(te.getMessage().indexOf("%20")!=-1)

      { System.out.println("XalanJ 2.7.0"); }

      else

      { System.out.println("Ok"); // assuming "C:/A B/" does not exist }

      }
      }
      }

        Issue Links

          Activity

          Hide
          Henry Zongaro added a comment -

          I am now able to reproduce the problem. Thanks for providing the samples of the command-line invocation.

          Show
          Henry Zongaro added a comment - I am now able to reproduce the problem. Thanks for providing the samples of the command-line invocation.
          Hide
          Andrew Ferguson added a comment -

          hi,

          I'm able to reproduce this with the snippet above and the standalone XalanJ 2.7.0 binary distribution available from
          http://mirrors.dedipower.com/ftp.apache.org/xml/xalan-j/xalan-j_2_7_0-bin.zip

          The following is an example console session:

          =====
          D:\test>java -version
          java version "1.5.0_06"
          Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05)
          Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode)

          D:\test>java -cp . Main
          Ok

          D:\test>java -cp xalan-j_2_7_0\xalan.jar;. Main
          XalanJ 2.7.0

          D:\test>C:\apache-harmony-jre-r533500-windows-x86-32-snapshot\harmony-jre-r53350
          0\bin\java -cp . Main
          XalanJ 2.7.0
          =====

          please let me know if there is any further information I can provide
          thanks,
          Andrew

          Show
          Andrew Ferguson added a comment - hi, I'm able to reproduce this with the snippet above and the standalone XalanJ 2.7.0 binary distribution available from http://mirrors.dedipower.com/ftp.apache.org/xml/xalan-j/xalan-j_2_7_0-bin.zip The following is an example console session: ===== D:\test>java -version java version "1.5.0_06" Java(TM) 2 Runtime Environment, Standard Edition (build 1.5.0_06-b05) Java HotSpot(TM) Client VM (build 1.5.0_06-b05, mixed mode) D:\test>java -cp . Main Ok D:\test>java -cp xalan-j_2_7_0\xalan.jar;. Main XalanJ 2.7.0 D:\test>C:\apache-harmony-jre-r533500-windows-x86-32-snapshot\harmony-jre-r53350 0\bin\java -cp . Main XalanJ 2.7.0 ===== please let me know if there is any further information I can provide thanks, Andrew
          Hide
          Henry Zongaro added a comment -

          I tried this out with the latest development code and with Xalan-J 2.7.0, using both Xalan-J processors (interpreter and compiler). In all four cases, the test was able to create a file in a directory whose name contained a space.

          I will mark this as unreproducible. If you are able to provide a test that demonstrates that the same problem exists in Xalan-J (not just in the version of the XSLT processor that Sun includes in its Java distribution), please let us know and we would be glad to investigate.

          Show
          Henry Zongaro added a comment - I tried this out with the latest development code and with Xalan-J 2.7.0, using both Xalan-J processors (interpreter and compiler). In all four cases, the test was able to create a file in a directory whose name contained a space. I will mark this as unreproducible. If you are able to provide a test that demonstrates that the same problem exists in Xalan-J (not just in the version of the XSLT processor that Sun includes in its Java distribution), please let us know and we would be glad to investigate.
          Hide
          Brian Minchau added a comment -

          If I am reading this report right, then this is not a bug in Xalan 2.7.0 but rather a bug in SUN's Java 5 (which would package their own modified/repackaged version of Xalan 2.7.0).

          Xalan is an open source project, so you will have to take this issue up with SUN. Or did I read this wrong and it is somehow a Xalan bug?

          Show
          Brian Minchau added a comment - If I am reading this report right, then this is not a bug in Xalan 2.7.0 but rather a bug in SUN's Java 5 (which would package their own modified/repackaged version of Xalan 2.7.0). Xalan is an open source project, so you will have to take this issue up with SUN. Or did I read this wrong and it is somehow a Xalan bug?
          Hide
          Jan Novak added a comment -

          I encountered similar problem with Xalan 2.7.0 and Sun JVM 1.5.0_9 - 12. In my case redirect cause the problem, solution is add base = base.replaceAll("%20"," "); in org.apache.xalan.lib.Redirect.urlToFileName(String base) method. This is rather quick and dirty fix, not system wide solution.

          Show
          Jan Novak added a comment - I encountered similar problem with Xalan 2.7.0 and Sun JVM 1.5.0_9 - 12. In my case redirect cause the problem, solution is add base = base.replaceAll("%20"," "); in org.apache.xalan.lib.Redirect.urlToFileName(String base) method. This is rather quick and dirty fix, not system wide solution.

            People

            • Assignee:
              Unassigned
              Reporter:
              Andrew Ferguson
            • Votes:
              0 Vote for this issue
              Watchers:
              4 Start watching this issue

              Dates

              • Created:
                Updated:

                Development