You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by re...@apache.org on 2017/04/03 16:24:39 UTC

svn commit: r1790020 - in /tomcat/taglibs/standard/trunk: CHANGES.txt impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/TransformSupport.java impl/src/main/java/org/apache/taglibs/standard/util/XmlUtil.java

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-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org