Author: remm Date: Mon Apr 3 16:24:38 2017 New Revision: 1790020 URL: http://svn.apache.org/viewvc?rev=1790020&view=rev Log: 60950 - JSTL TransformSupport XSL import not finding relative path. Patch submitted by Tomaz Cerar.
Modified: tomcat/taglibs/standard/trunk/CHANGES.txt tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/util/XmlUtil.java Modified: tomcat/taglibs/standard/trunk/CHANGES.txt URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/CHANGES.txt?rev=1790020&r1=1790019&r2=1790020&view=diff ============================================================================== --- tomcat/taglibs/standard/trunk/CHANGES.txt (original) +++ tomcat/taglibs/standard/trunk/CHANGES.txt Mon Apr 3 16:24:38 2017 @@ -1,3 +1,6 @@ +Changes in x release +60950 JSTL TransformSupport XSL import not finding relative path + Changes in 1.2.5 release - Set version identifiers correctly, no other changes. @@ -86,4 +89,4 @@ However, due to the time since the last 30068 Wrong behaviour of x:out inside x:forEach 27717 <x:forEach> very slow in JSTL 1.1 17388 Result set created in query tag is never released + update tag -14465 position() and last() are critical \ No newline at end of file +14465 position() and last() are critical Modified: tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java?rev=1790020&r1=1790019&r2=1790020&view=diff ============================================================================== --- tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java (original) +++ tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java Mon Apr 3 16:24:38 2017 @@ -121,7 +121,7 @@ public abstract class TransformSupport e } try { - t = XmlUtil.newTransformer(source); + t = XmlUtil.newTransformer(source, uriResolver); t.setURIResolver(uriResolver); } catch (TransformerConfigurationException e) { throw new JspTagException(e); Modified: tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/util/XmlUtil.java URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/util/XmlUtil.java?rev=1790020&r1=1790019&r2=1790020&view=diff ============================================================================== --- tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/util/XmlUtil.java (original) +++ tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/util/XmlUtil.java Mon Apr 3 16:24:38 2017 @@ -25,7 +25,6 @@ import java.security.PrivilegedAction; import java.security.PrivilegedActionException; import java.security.PrivilegedExceptionAction; import java.util.concurrent.Callable; - import javax.servlet.http.HttpServletRequest; import javax.servlet.jsp.PageContext; import javax.xml.XMLConstants; @@ -183,14 +182,23 @@ public class XmlUtil { * @return a new Transformer * @throws TransformerConfigurationException if there was a problem creating the Transformer from the XSLT */ - public static Transformer newTransformer(Source source) throws TransformerConfigurationException { - Transformer transformer = TRANSFORMER_FACTORY.newTransformer(source); - // Although newTansformer() is not allowed to return null, Xalan does. - // Trap that here by throwing the expected TransformerConfigurationException. - if (transformer == null) { - throw new TransformerConfigurationException("newTransformer returned null. XSLT may be invalid."); + public static Transformer newTransformer(Source source, JstlUriResolver uriResolver) throws TransformerConfigurationException { + synchronized (TRANSFORMER_FACTORY) { + final URIResolver original = TRANSFORMER_FACTORY.getURIResolver(); + try { + TRANSFORMER_FACTORY.setURIResolver(uriResolver); + Transformer transformer = TRANSFORMER_FACTORY.newTransformer(source); + // Although newTransformer() is not allowed to return null, Xalan does. + // Trap that here by throwing the expected TransformerConfigurationException. + if (transformer == null) { + throw new TransformerConfigurationException("newTransformer returned null. XSLT may be invalid."); + } + return transformer; + } finally { + //restore URI resolver on factory to what was before + TRANSFORMER_FACTORY.setURIResolver(original); + } } - return transformer; } /** --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org