You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Thomas Diesler (JIRA)" <ji...@apache.org> on 2017/02/03 10:37:51 UTC

[jira] [Commented] (CAMEL-10783) XSLT transform cannot use default DTM

    [ https://issues.apache.org/jira/browse/CAMEL-10783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=15851317#comment-15851317 ] 

Thomas Diesler commented on CAMEL-10783:
----------------------------------------

The XMLReaderPool currently uses a OneTimeXMLReader, which prevents setter access after the parse method has been called.

The JDK's DTMManagerDefault however attempts to reset handlers in a finally clause

{code}
        } finally {
          // Reset the ContentHandler, DTDHandler, ErrorHandler to the DefaultHandler
          // after creating the DTM.
          if (reader != null && !(m_incremental && incremental)) {
            reader.setContentHandler(m_defaultHandler);
            reader.setDTDHandler(m_defaultHandler);
            reader.setErrorHandler(m_defaultHandler);
            
            // Reset the LexicalHandler to null after creating the DTM.
            try {
              reader.setProperty("http://xml.org/sax/properties/lexical-handler", null);
            }
            catch (Exception e) {}
          }
          releaseXMLReader(reader);
        }
{code}

> XSLT transform cannot use default DTM
> -------------------------------------
>
>                 Key: CAMEL-10783
>                 URL: https://issues.apache.org/jira/browse/CAMEL-10783
>             Project: Camel
>          Issue Type: Bug
>    Affects Versions: 2.18.2
>            Reporter: Thomas Diesler
>             Fix For: 2.18.3, 2.19.0
>
>
> {code}
> Caused by: java.lang.IllegalStateException: OneTimeXMLReader.parse() can only be used once!
> 	at org.apache.camel.converter.jaxp.XMLReaderPool$OneTimeXMLReader.checkValid(XMLReaderPool.java:132)
> 	at org.apache.camel.converter.jaxp.XMLReaderPool$OneTimeXMLReader.setContentHandler(XMLReaderPool.java:178)
> 	at org.apache.xml.dtm.ref.DTMManagerDefault.getDTM(DTMManagerDefault.java:461)
> 	at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:701)
> 	at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1275)
> 	at org.apache.xalan.transformer.TransformerImpl.transform(TransformerImpl.java:1253)
> 	at org.apache.camel.builder.xml.XsltBuilder.process(XsltBuilder.java:141)
> {code}



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)