forrest-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Thorsten Scherler (JIRA)" <j...@apache.org>
Subject [jira] Created: (FOR-1194) Dispatcher does not force UTF-8 usage
Date Mon, 17 May 2010 16:49:42 GMT
Dispatcher does not force UTF-8 usage
-------------------------------------

                 Key: FOR-1194
                 URL: https://issues.apache.org/jira/browse/FOR-1194
             Project: Forrest
          Issue Type: Bug
          Components: Whiteboard: Dispatcher (stax)
            Reporter: Thorsten Scherler
            Priority: Critical


There is a problem in the dispatcher which seems only occur in Windows and Mac. In linux it
is working fine.

If you create a contract and add e.g. &#191;&#241;&#220;&#237;  which is something
like ü ñ ¿ it will become ¬ø√±√ú√≠ 

I am investigating since 2 days now and I identify the following code where the encoding get
lost in Mac os. Actually everything that goes into the transformation is utf-8. after the
transformer.transform(saxSource, streamResult); it is lost. 

XSLContractHelper.java

  public void transform(InputStream dataStream, Result streamResult)
      throws ContractException {
    //Source dataSource = new StreamSource(dataStream);
    try {
      InputSource inputSource = new InputSource(new InputStreamReader(dataStream, "UTF-8"));
      inputSource.setEncoding("UTF-8");
      SAXSource saxSource = new SAXSource(xmlReader,inputSource);
      transformer.transform(saxSource, streamResult);
    } catch (Exception e) {
      String message = "The xsl transformation has thrown an exception. for "
            + "the contract \""+name+"\".\nPlease see some FAQ:"
          + "\n"
          + e
          + "\n\nproblem->solution:\n"
          + "- org.apache.xpath.XPathException: Can not convert #STRING to a NodeList!\n"
          + "-> Try to activate \"allowXml\" and/or \"shrink\". If this is not working
try the contract "
          + "xsl standalone and make sure it is not a xsl specific problem.";
      throw new ContractException(message);
    }
  }

This method is invoked from XSLContract.java, The out.toString is scrampled:
public BufferedInputStream execute(InputStream dataStream,
      Map<String, Object> properties) throws ContractException {
...
 ByteArrayOutputStream out = new ByteArrayOutputStream();
    // create a StreamResult and use it for the transformation
    try {
        OutputStreamWriter writer = new OutputStreamWriter(out,"UTF-8");
        Result streamResult = new StreamResult(writer);
        helper.transform(dataStream,streamResult);
    } catch (Exception e) {
      String message = "Could not invoke the transformation for "
          + "the contract \""+name+"\". "+"\n"+ e;
      throw new ContractException(message);
    }
    log.debug(out.toString());
...

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


Mime
View raw message