Author: jboynes Date: Tue Nov 26 06:30:07 2013 New Revision: 1545553 URL: http://svn.apache.org/r1545553 Log: use an InputSource in JspDocumentParser to provide a base URI for resolution
Modified: tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java tomcat/trunk/test/org/apache/jasper/compiler/TestJspDocumentParser.java Modified: tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java?rev=1545553&r1=1545552&r2=1545553&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java (original) +++ tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java Tue Nov 26 06:30:07 2013 @@ -19,7 +19,6 @@ package org.apache.jasper.compiler; import java.io.CharArrayWriter; import java.io.FileNotFoundException; import java.io.IOException; -import java.io.InputStream; import java.util.Collection; import java.util.Iterator; @@ -171,27 +170,24 @@ class JspDocumentParser // Parse the input SAXParser saxParser = getSAXParser(validate, jspDocParser); - InputStream inStream = null; + InputSource source = JspUtil.getInputSource(path, jar, jspDocParser.ctxt); try { - inStream = JspUtil.getInputStream(path, jar, jspDocParser.ctxt); - saxParser.parse(new InputSource(inStream), jspDocParser); + saxParser.parse(source, jspDocParser); } catch (EnableDTDValidationException e) { saxParser = getSAXParser(true, jspDocParser); jspDocParser.isValidating = true; - if (inStream != null) { - try { - inStream.close(); - } catch (Exception any) { - } + try { + source.getByteStream().close(); + } catch (IOException e2) { + // ignore } - inStream = JspUtil.getInputStream(path, jar, jspDocParser.ctxt); - saxParser.parse(new InputSource(inStream), jspDocParser); + source = JspUtil.getInputSource(path, jar, jspDocParser.ctxt); + saxParser.parse(source, jspDocParser); } finally { - if (inStream != null) { - try { - inStream.close(); - } catch (Exception any) { - } + try { + source.getByteStream().close(); + } catch (IOException e) { + // ignore } } Modified: tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java?rev=1545553&r1=1545552&r2=1545553&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java (original) +++ tomcat/trunk/java/org/apache/jasper/compiler/JspUtil.java Tue Nov 26 06:30:07 2013 @@ -28,6 +28,7 @@ import org.apache.jasper.JasperException import org.apache.jasper.JspCompilationContext; import org.apache.tomcat.util.scan.Jar; import org.xml.sax.Attributes; +import org.xml.sax.InputSource; /** * This class has all the utility method(s). Ideally should move all the bean @@ -664,6 +665,20 @@ public class JspUtil { return in; } + public static InputSource getInputSource(String fname, Jar jar, JspCompilationContext ctxt) + throws IOException { + InputSource source; + if (jar != null) { + String jarEntryName = fname.substring(1, fname.length()); + source = new InputSource(jar.getInputStream(jarEntryName)); + source.setSystemId(jar.getURL(jarEntryName)); + } else { + source = new InputSource(ctxt.getResourceAsStream(fname)); + source.setSystemId(ctxt.getResource(fname).toExternalForm()); + } + return source; + } + /** * Gets the fully-qualified class name of the tag handler corresponding to * the given tag file path. Modified: tomcat/trunk/test/org/apache/jasper/compiler/TestJspDocumentParser.java URL: http://svn.apache.org/viewvc/tomcat/trunk/test/org/apache/jasper/compiler/TestJspDocumentParser.java?rev=1545553&r1=1545552&r2=1545553&view=diff ============================================================================== --- tomcat/trunk/test/org/apache/jasper/compiler/TestJspDocumentParser.java (original) +++ tomcat/trunk/test/org/apache/jasper/compiler/TestJspDocumentParser.java Tue Nov 26 06:30:07 2013 @@ -132,7 +132,6 @@ public class TestJspDocumentParser exten tomcat.start(); - ByteChunk bc = new ByteChunk(); String path = "http://localhost:" + getPort() + "/test/valid.jspx"; DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); dbf.setNamespaceAware(true); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org