You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2015/02/08 21:48:27 UTC
svn commit: r1658252 - in /tomcat/taglibs/standard/trunk: ./
impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/
impl/src/main/java/org/apache/taglibs/standard/tlv/
impl/src/main/java/org/apache/taglibs/standard/util/
Author: kkolinko
Date: Sun Feb 8 20:48:26 2015
New Revision: 1658252
URL: http://svn.apache.org/r1658252
Log:
Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=57547
Fix regression when running on older JREs.
Consistently use JAXP APIs to create a parser instead of using SAX API directly.
Modified:
tomcat/taglibs/standard/trunk/CHANGES.txt
tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/ParseSupport.java
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/tlv/JstlBaseTLV.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=1658252&r1=1658251&r2=1658252&view=diff
==============================================================================
--- tomcat/taglibs/standard/trunk/CHANGES.txt (original)
+++ tomcat/taglibs/standard/trunk/CHANGES.txt Sun Feb 8 20:48:26 2015
@@ -1,3 +1,7 @@
+Changes in 1.2.3 release
+
+57547 Fix regression with running on older JREs
+
Changes in 1.2.2 release [WITHDRAWN due to regressions in older JREs]
57433 Double-check locking in ExpressionEvaluatorManager
Modified: tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/ParseSupport.java
URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/ParseSupport.java?rev=1658252&r1=1658251&r2=1658252&view=diff
==============================================================================
--- tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/ParseSupport.java (original)
+++ tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tag/common/xml/ParseSupport.java Sun Feb 8 20:48:26 2015
@@ -26,6 +26,7 @@ import javax.servlet.jsp.JspTagException
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyTagSupport;
import javax.xml.parsers.DocumentBuilder;
+import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.TransformerConfigurationException;
import javax.xml.transform.dom.DOMResult;
import javax.xml.transform.sax.TransformerHandler;
@@ -160,6 +161,8 @@ public abstract class ParseSupport exten
throw new JspException(e);
} catch (TransformerConfigurationException e) {
throw new JspException(e);
+ } catch (ParserConfigurationException e) {
+ throw new JspException(e);
}
}
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=1658252&r1=1658251&r2=1658252&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 Sun Feb 8 20:48:26 2015
@@ -25,6 +25,7 @@ import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspTagException;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.tagext.BodyTagSupport;
+import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.Result;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
@@ -115,6 +116,8 @@ public abstract class TransformSupport e
}
} catch (SAXException e) {
throw new JspException(e);
+ } catch (ParserConfigurationException e) {
+ throw new JspException(e);
}
try {
@@ -152,6 +155,8 @@ public abstract class TransformSupport e
throw new JspException(ex);
} catch (SAXException e) {
throw new JspException(e);
+ } catch (ParserConfigurationException e) {
+ throw new JspException(e);
} finally {
t = null;
}
@@ -193,7 +198,7 @@ public abstract class TransformSupport e
* @return the document Source
* @throws JspTagException if there is a problem with the attribute
*/
- Source getSourceFromXmlAttribute() throws JspTagException, SAXException {
+ Source getSourceFromXmlAttribute() throws JspTagException, SAXException, ParserConfigurationException {
Object xml = this.xml;
if (xml == null) {
throw new JspTagException(Resources.getMessage("TRANSFORM_XML_IS_NULL"));
@@ -234,7 +239,7 @@ public abstract class TransformSupport e
* @return the document Source
* @throws JspTagException if there is a problem with the body content
*/
- Source getSourceFromBodyContent() throws JspTagException, SAXException {
+ Source getSourceFromBodyContent() throws JspTagException, SAXException, ParserConfigurationException {
if (bodyContent == null) {
throw new JspTagException(Resources.getMessage("TRANSFORM_BODY_IS_NULL"));
}
Modified: tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tlv/JstlBaseTLV.java
URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tlv/JstlBaseTLV.java?rev=1658252&r1=1658251&r2=1658252&view=diff
==============================================================================
--- tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tlv/JstlBaseTLV.java (original)
+++ tomcat/taglibs/standard/trunk/impl/src/main/java/org/apache/taglibs/standard/tlv/JstlBaseTLV.java Sun Feb 8 20:48:26 2015
@@ -31,6 +31,7 @@ import javax.servlet.jsp.tagext.PageData
import javax.servlet.jsp.tagext.TagData;
import javax.servlet.jsp.tagext.TagLibraryValidator;
import javax.servlet.jsp.tagext.ValidationMessage;
+import javax.xml.parsers.ParserConfigurationException;
import org.apache.taglibs.standard.resources.Resources;
import org.apache.taglibs.standard.util.XmlUtil;
@@ -173,6 +174,8 @@ public abstract class JstlBaseTLV extend
return vmFromString(ex.toString());
} catch (IOException ex) {
return vmFromString(ex.toString());
+ } catch (ParserConfigurationException ex) {
+ return vmFromString(ex.toString());
}
}
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=1658252&r1=1658251&r2=1658252&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 Sun Feb 8 20:48:26 2015
@@ -29,7 +29,9 @@ import javax.servlet.jsp.PageContext;
import javax.xml.XMLConstants;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
+import javax.xml.parsers.FactoryConfigurationError;
import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParserFactory;
import javax.xml.transform.Source;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerConfigurationException;
@@ -46,6 +48,8 @@ import org.w3c.dom.Document;
import org.xml.sax.EntityResolver;
import org.xml.sax.InputSource;
import org.xml.sax.SAXException;
+import org.xml.sax.SAXNotRecognizedException;
+import org.xml.sax.SAXNotSupportedException;
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.XMLReaderFactory;
@@ -64,6 +68,7 @@ public class XmlUtil {
*/
private static final DocumentBuilderFactory PARSER_FACTORY;
private static final SAXTransformerFactory TRANSFORMER_FACTORY;
+ private static final SAXParserFactory SAXPARSER_FACTORY;
static {
try {
PARSER_FACTORY = runWithOurClassLoader(new Callable<DocumentBuilderFactory>() {
@@ -91,6 +96,20 @@ public class XmlUtil {
} catch (TransformerConfigurationException e) {
throw new ExceptionInInitializerError(e);
}
+ try {
+ SAXPARSER_FACTORY = runWithOurClassLoader(new Callable<SAXParserFactory>() {
+ public SAXParserFactory call() {
+ return SAXParserFactory.newInstance();
+ }
+ }, RuntimeException.class);
+ SAXPARSER_FACTORY.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
+ } catch (ParserConfigurationException e) {
+ throw new ExceptionInInitializerError(e);
+ } catch (SAXNotRecognizedException e) {
+ throw new ExceptionInInitializerError(e);
+ } catch (SAXNotSupportedException e) {
+ throw new ExceptionInInitializerError(e);
+ }
}
/**
@@ -156,18 +175,15 @@ public class XmlUtil {
/**
* Create an XMLReader that resolves entities using JSTL semantics.
- * @param entityResolver for resolving using JSTL semamtics
+ * @param entityResolver for resolving using JSTL semantics
* @return a new XMLReader
+ * @throws ParserConfigurationException if there was a configuration problem creating the reader
* @throws SAXException if there was a problem creating the reader
*/
- public static XMLReader newXMLReader(JstlEntityResolver entityResolver) throws SAXException {
- XMLReader xmlReader = runWithOurClassLoader(new Callable<XMLReader>() {
- public XMLReader call() throws SAXException {
- return XMLReaderFactory.createXMLReader();
- }
- }, SAXException.class);
+ public static XMLReader newXMLReader(JstlEntityResolver entityResolver)
+ throws ParserConfigurationException, SAXException {
+ XMLReader xmlReader = SAXPARSER_FACTORY.newSAXParser().getXMLReader();
xmlReader.setEntityResolver(entityResolver);
- xmlReader.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true);
return xmlReader;
}
@@ -178,9 +194,11 @@ public class XmlUtil {
* @param systemId the system id
* @param entityResolver for resolving using JSTL semamtics
* @return a new SAXSource
+ * @throws ParserConfigurationException if there was a configuration problem creating the source
* @throws SAXException if there was a problem creating the source
*/
- public static SAXSource newSAXSource(Reader reader, String systemId, JstlEntityResolver entityResolver) throws SAXException {
+ public static SAXSource newSAXSource(Reader reader, String systemId, JstlEntityResolver entityResolver)
+ throws ParserConfigurationException, SAXException {
SAXSource source = new SAXSource(newXMLReader(entityResolver), new InputSource(reader));
source.setSystemId(wrapSystemId(systemId));
return source;
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org