Thomas Scheffler created XALANJ-2604:
----------------------------------------

             Summary: URIResolver is not used for document() function
                 Key: XALANJ-2604
                 URL: https://issues.apache.org/jira/browse/XALANJ-2604
             Project: XalanJ2
          Issue Type: Bug
      Security Level: No security risk; visible to anyone (Ordinary problems in 
Xalan projects.  Anybody can view the issue.)
          Components: XSLTC
    Affects Versions: 2.7.2
         Environment: register custom URIResolver that features a new protocoll 
(e.g. 'foo') in org.apache.xalan.xsltc.trax.TransformerFactoryImpl
            Reporter: Thomas Scheffler
            Assignee: Steven J. Hathaway
            Priority: Blocker


If you want to use a custom URIResolver XSLTC does not call it when the 
document() function is used:
{noformat}
org.xml.sax.SAXException: org.apache.xalan.xsltc.TransletException: 
org.apache.xml.utils.WrappedRuntimeException: unknown protocol: foo
javax.xml.transform.TransformerException: 
org.apache.xalan.xsltc.TransletException: 
org.apache.xml.utils.WrappedRuntimeException: unknown protocol: foo
        at 
org.apache.xalan.xsltc.trax.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:243)
        at 
org.apache.xerces.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:734)
        at 
org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(XMLDocumentScannerImpl.java:525)
        at 
org.apache.xerces.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1938)
        at 
org.apache.xerces.impl.XMLEntityScanner.load(XMLEntityScanner.java:1773)
        at 
org.apache.xerces.impl.XMLEntityScanner.skipSpaces(XMLEntityScanner.java:1304)
        at 
org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(XMLDocumentScannerImpl.java:1239)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
        at 
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:875)
        at 
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:798)
        at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
        at 
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1198)
        at 
org.mycore.common.content.transformer.MCRXSL2JAXBTransformer.getJAXBObject(MCRXSL2JAXBTransformer.java:94)
        at 
org.mycore.common.content.transformer.MCRXSL2JAXBTransformer.getJAXBObject(MCRXSL2JAXBTransformer.java:111)
        at 
org.mycore.solr.index.document.MCRSolrTransformerInputDocumentFactory.getDocument(MCRSolrTransformerInputDocumentFactory.java:74)
        at 
org.mycore.solr.index.handlers.content.MCRSolrMCRContentIndexHandler.index(MCRSolrMCRContentIndexHandler.java:77)
        ... 8 more
Caused by: javax.xml.transform.TransformerException: 
org.apache.xalan.xsltc.TransletException: 
org.apache.xml.utils.WrappedRuntimeException: unknown protocol: foo
        at 
org.apache.xalan.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:632)
        at 
org.apache.xalan.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:299)
        at 
org.apache.xalan.xsltc.trax.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:240)
        ... 23 more
Caused by: org.apache.xalan.xsltc.TransletException: 
org.apache.xml.utils.WrappedRuntimeException: unknown protocol: foo
        at 
org.apache.xalan.xsltc.dom.LoadDocument.documentF(LoadDocument.java:140)
        at mir_solrbase.topLevel()
        at mir_solrbase.transform()
        at 
org.apache.xalan.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:605)
        at 
org.apache.xalan.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:628)
        ... 25 more

{noformat}

after digging into the {{WrappedRuntimeException}}, I found this source 
StackTrace:

{noformat}
java.net.MalformedURLException: unknown protocol: foo
        at java.net.URL.<init>(URL.java:600)
        at java.net.URL.<init>(URL.java:490)
        at java.net.URL.<init>(URL.java:439)
        at 
org.apache.xerces.impl.XMLEntityManager.setupCurrentEntity(XMLEntityManager.java:964)
        at 
org.apache.xerces.impl.XMLVersionDetector.determineDocVersion(XMLVersionDetector.java:144)
        at 
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:832)
        at 
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:798)
        at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
        at 
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1198)
        at 
org.apache.xalan.xsltc.dom.XSLTCDTMManager.getDTM(XSLTCDTMManager.java:389)
        at 
org.apache.xalan.xsltc.dom.XSLTCDTMManager.getDTM(XSLTCDTMManager.java:194)
        at 
org.apache.xalan.xsltc.dom.LoadDocument.document(LoadDocument.java:201)
        at 
org.apache.xalan.xsltc.dom.LoadDocument.document(LoadDocument.java:148)
        at 
org.apache.xalan.xsltc.dom.LoadDocument.documentF(LoadDocument.java:131)
        at mir_solrbase.topLevel()
        at mir_solrbase.transform()
        at 
org.apache.xalan.xsltc.runtime.AbstractTranslet.transform(AbstractTranslet.java:605)
        at 
org.apache.xalan.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:628)
        at 
org.apache.xalan.xsltc.trax.TransformerImpl.transform(TransformerImpl.java:299)
        at 
org.apache.xalan.xsltc.trax.TransformerHandlerImpl.endDocument(TransformerHandlerImpl.java:240)
        at 
org.apache.xerces.parsers.AbstractSAXParser.endDocument(AbstractSAXParser.java:734)
        at 
org.apache.xerces.impl.XMLDocumentScannerImpl.endEntity(XMLDocumentScannerImpl.java:525)
        at 
org.apache.xerces.impl.XMLEntityManager.endEntity(XMLEntityManager.java:1938)
        at 
org.apache.xerces.impl.XMLEntityScanner.load(XMLEntityScanner.java:1773)
        at 
org.apache.xerces.impl.XMLEntityScanner.skipSpaces(XMLEntityScanner.java:1304)
        at 
org.apache.xerces.impl.XMLDocumentScannerImpl$TrailingMiscDispatcher.dispatch(XMLDocumentScannerImpl.java:1239)
        at 
org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:324)
        at 
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:875)
        at 
org.apache.xerces.parsers.XML11Configuration.parse(XML11Configuration.java:798)
        at org.apache.xerces.parsers.XMLParser.parse(XMLParser.java:108)
        at 
org.apache.xerces.parsers.AbstractSAXParser.parse(AbstractSAXParser.java:1198)
{noformat}

Here is the erroneous code of {{org.apache.xalan.xsltc.dom.LoadDocument}}

{code:title=LoadDocument.java;line=196-204}
            // Parse the input document and construct DOM object
            // Trust the DTMManager to pick the right parser and
            // set up the DOM correctly.
            XSLTCDTMManager dtmManager = (XSLTCDTMManager)multiplexer
                                                              .getDTMManager();
            DOMEnhancedForDTM enhancedDOM =
                    (DOMEnhancedForDTM) dtmManager.getDTM(new StreamSource(uri),
                                            false, null, true, false,
                                            translet.hasIdCall(), cacheDOM);
{code}

You clearly see that a hard-coded {{StreamSource}} is used and not the source 
provided by the {{URIResolver}}.



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@xalan.apache.org
For additional commands, e-mail: dev-h...@xalan.apache.org

Reply via email to