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