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

Reply via email to