You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2013/11/21 15:49:30 UTC
svn commit: r1544198 - in /tomcat/tc7.0.x/trunk: ./
java/org/apache/catalina/ java/org/apache/catalina/core/
java/org/apache/jasper/ java/org/apache/jasper/compiler/
java/org/apache/jasper/xmlparser/ webapps/docs/ webapps/docs/config/
Author: markt
Date: Thu Nov 21 14:49:30 2013
New Revision: 1544198
URL: http://svn.apache.org/r1544198
Log:
Extend the reach of the Context attribute xmlValidation to cover XML parsing by Jasper the JSP engine.
Modified:
tomcat/tc7.0.x/trunk/ (props changed)
tomcat/tc7.0.x/trunk/java/org/apache/catalina/Globals.java
tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/Constants.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/EmbeddedServletOptions.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/JspC.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspConfig.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TagPluginManager.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java
tomcat/tc7.0.x/trunk/java/org/apache/jasper/xmlparser/ParserUtils.java
tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
tomcat/tc7.0.x/trunk/webapps/docs/config/context.xml
Propchange: tomcat/tc7.0.x/trunk/
------------------------------------------------------------------------------
Merged /tomcat/trunk:r1544165
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/Globals.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/Globals.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/Globals.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/Globals.java Thu Nov 21 14:49:30 2013
@@ -14,18 +14,14 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
-
package org.apache.catalina;
-
/**
* Global constants that are applicable to multiple packages within Catalina.
*
* @author Craig R. McClanahan
* @version $Id$
*/
-
public final class Globals {
/**
@@ -310,4 +306,14 @@ public final class Globals {
* the tomcat instance installation path
*/
public static final String CATALINA_BASE_PROP = "catalina.base";
+
+
+ /**
+ * Name of the ServletContext attribute that determines if the JSP engine
+ * should validate *.tld, *.jspx and *.tagx files when parsing them.
+ * <p>
+ * This must be kept in sync with org.apache.japser.Constants
+ */
+ public static final String JASPER_XML_VALIDATION_ATTR =
+ "org.apache.jasper.XML_VALIDATE";
}
Modified: tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/catalina/core/ApplicationContext.java Thu Nov 21 14:49:30 2013
@@ -235,6 +235,12 @@ public class ApplicationContext
@Override
public Object getAttribute(String name) {
+ // Special handling for XML validation as the context setting must
+ // always override anything that might have been set by an application.
+ if (Globals.JASPER_XML_VALIDATION_ATTR.equals(name) &&
+ context.getXmlValidation()) {
+ return Boolean.TRUE;
+ }
return (attributes.get(name));
}
@@ -248,6 +254,11 @@ public class ApplicationContext
public Enumeration<String> getAttributeNames() {
Set<String> names = new HashSet<String>();
names.addAll(attributes.keySet());
+ // Special handling for XML validation as this attribute will always be
+ // available if validation has been enabled on the context
+ if (context.getXmlValidation()) {
+ names.add(Globals.JASPER_XML_VALIDATION_ATTR);
+ }
return Collections.enumeration(names);
}
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/Constants.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/Constants.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/Constants.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/Constants.java Thu Nov 21 14:49:30 2013
@@ -14,14 +14,12 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.jasper;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
-
/**
* Some constants and other global data that are used by the compiler and the runtime.
*
@@ -233,4 +231,13 @@ public class Constants {
*/
public static final String TLD_JAR_SKIP_PROP=
"org.apache.catalina.startup.TldConfig.jarsToSkip";
+
+
+ /**
+ * Name of the ServletContext attribute that determines if the XML parsers
+ * used for *.tld, *.jspx and *.tagx files will be validating or not.
+ * <p>
+ * This must be kept in sync with org.apache.catalina.Globals
+ */
+ public static final String XML_VALIDATION_ATTR = "org.apache.jasper.XML_VALIDATE";
}
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/EmbeddedServletOptions.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/EmbeddedServletOptions.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/EmbeddedServletOptions.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/EmbeddedServletOptions.java Thu Nov 21 14:49:30 2013
@@ -30,7 +30,6 @@ import org.apache.jasper.compiler.JspCon
import org.apache.jasper.compiler.Localizer;
import org.apache.jasper.compiler.TagPluginManager;
import org.apache.jasper.compiler.TldLocationsCache;
-import org.apache.jasper.xmlparser.ParserUtils;
import org.apache.juli.logging.Log;
import org.apache.juli.logging.LogFactory;
@@ -456,11 +455,7 @@ public final class EmbeddedServletOption
String v=config.getInitParameter( k );
setProperty( k, v);
}
-
- // quick hack
- String validating=config.getInitParameter( "validating");
- if( "false".equals( validating )) ParserUtils.validating=false;
-
+
String keepgen = config.getInitParameter("keepgenerated");
if (keepgen != null) {
if (keepgen.equalsIgnoreCase("true")) {
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/JspC.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/JspC.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/JspC.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/JspC.java Thu Nov 21 14:49:30 2013
@@ -156,6 +156,7 @@ public class JspC extends Task implement
protected URLClassLoader loader = null;
protected boolean trimSpaces = false;
protected boolean genStringAsCharArray = false;
+ protected boolean validateXml;
protected boolean xpoweredBy;
protected boolean mappedFile = false;
protected boolean poolingEnabled = true;
@@ -843,7 +844,11 @@ public class JspC extends Task implement
}
public void setValidateXml( boolean b ) {
- org.apache.jasper.xmlparser.ParserUtils.validating=b;
+ this.validateXml = b;
+ }
+
+ public boolean isValidateXml() {
+ return validateXml;
}
public void setListErrors( boolean b ) {
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/ImplicitTagLibraryInfo.java Thu Nov 21 14:49:30 2013
@@ -14,7 +14,6 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.apache.jasper.compiler;
import java.io.InputStream;
@@ -29,6 +28,7 @@ import javax.servlet.jsp.tagext.TagFileI
import javax.servlet.jsp.tagext.TagInfo;
import javax.servlet.jsp.tagext.TagLibraryInfo;
+import org.apache.jasper.Constants;
import org.apache.jasper.JasperException;
import org.apache.jasper.JspCompilationContext;
import org.apache.jasper.util.ExceptionUtils;
@@ -124,7 +124,11 @@ class ImplicitTagLibraryInfo extends Tag
pi.addDependant(path, ctxt.getLastModified(path));
}
- ParserUtils pu = new ParserUtils();
+ boolean validate = Boolean.parseBoolean(
+ ctxt.getServletContext().getInitParameter(
+ Constants.XML_VALIDATION_ATTR));
+
+ ParserUtils pu = new ParserUtils(validate);
TreeNode tld = pu.parseXMLDocument(uri, in);
if (tld.findAttribute("version") != null) {
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspConfig.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspConfig.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspConfig.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspConfig.java Thu Nov 21 14:49:30 2013
@@ -22,6 +22,7 @@ import java.util.Vector;
import javax.servlet.ServletContext;
+import org.apache.jasper.Constants;
import org.apache.jasper.JasperException;
import org.apache.jasper.xmlparser.ParserUtils;
import org.apache.jasper.xmlparser.TreeNode;
@@ -77,9 +78,12 @@ public class JspConfig {
try {
webXml = new WebXml(ctxt);
+ boolean validate = Boolean.parseBoolean(
+ ctxt.getInitParameter(Constants.XML_VALIDATION_ATTR));
+
TreeNode webApp = null;
if (webXml.getInputSource() != null) {
- ParserUtils pu = new ParserUtils();
+ ParserUtils pu = new ParserUtils(validate);
webApp = pu.parseXMLDocument(webXml.getSystemId(),
webXml.getInputSource());
}
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java Thu Nov 21 14:49:30 2013
@@ -30,6 +30,7 @@ import javax.servlet.jsp.tagext.TagLibra
import javax.xml.parsers.SAXParser;
import javax.xml.parsers.SAXParserFactory;
+import org.apache.jasper.Constants;
import org.apache.jasper.JasperException;
import org.apache.jasper.JspCompilationContext;
import org.xml.sax.Attributes;
@@ -162,8 +163,13 @@ class JspDocumentParser
jspDocParser.isTop = false;
}
+ boolean validate = Boolean.parseBoolean(
+ pc.getJspCompilationContext().getServletContext().getInitParameter(
+ Constants.XML_VALIDATION_ATTR));
+ jspDocParser.isValidating = validate;
+
// Parse the input
- SAXParser saxParser = getSAXParser(false, jspDocParser);
+ SAXParser saxParser = getSAXParser(validate, jspDocParser);
InputStream inStream = null;
try {
inStream = JspUtil.getInputStream(path, jarFile,
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TagLibraryInfoImpl.java Thu Nov 21 14:49:30 2013
@@ -43,6 +43,7 @@ import javax.servlet.jsp.tagext.TagVaria
import javax.servlet.jsp.tagext.ValidationMessage;
import javax.servlet.jsp.tagext.VariableInfo;
+import org.apache.jasper.Constants;
import org.apache.jasper.JasperException;
import org.apache.jasper.JspCompilationContext;
import org.apache.jasper.util.ExceptionUtils;
@@ -212,8 +213,12 @@ class TagLibraryInfoImpl extends TagLibr
Vector<TagFileInfo> tagFileVector = new Vector<TagFileInfo>();
Hashtable<String, FunctionInfo> functionTable = new Hashtable<String, FunctionInfo>();
+ boolean validate = Boolean.parseBoolean(
+ ctxt.getServletContext().getInitParameter(
+ Constants.XML_VALIDATION_ATTR));
+
// Create an iterator over the child elements of our <taglib> element
- ParserUtils pu = new ParserUtils();
+ ParserUtils pu = new ParserUtils(validate);
TreeNode tld = pu.parseXMLDocument(uri, in);
// Check to see if the <taglib> root element contains a 'version'
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TagPluginManager.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TagPluginManager.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TagPluginManager.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TagPluginManager.java Thu Nov 21 14:49:30 2013
@@ -120,7 +120,7 @@ public class TagPluginManager {
throws JasperException {
TreeNode root =
- (new ParserUtils()).parseXMLDocument(TAG_PLUGINS_XML, is);
+ (new ParserUtils(false)).parseXMLDocument(TAG_PLUGINS_XML, is);
if (root == null) {
return;
}
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/compiler/TldLocationsCache.java Thu Nov 21 14:49:30 2013
@@ -286,9 +286,13 @@ public class TldLocationsCache {
return;
}
+ boolean validate = Boolean.parseBoolean(
+ ctxt.getInitParameter(
+ Constants.XML_VALIDATION_ATTR));
+
// Parse the web application deployment descriptor
TreeNode webtld = null;
- webtld = new ParserUtils().parseXMLDocument(webXml.getSystemId(),
+ webtld = new ParserUtils(validate).parseXMLDocument(webXml.getSystemId(),
webXml.getInputSource());
// Allow taglib to be an element of the root or jsp-config (JSP2.0)
@@ -491,8 +495,12 @@ public class TldLocationsCache {
// Parse the tag library descriptor at the specified resource path
String uri = null;
- TreeNode tld =
- new ParserUtils().parseXMLDocument(resourcePath, stream);
+ boolean validate = Boolean.parseBoolean(
+ ctxt.getInitParameter(
+ Constants.XML_VALIDATION_ATTR));
+
+ TreeNode tld = new ParserUtils(validate).parseXMLDocument(
+ resourcePath, stream);
TreeNode uriNode = tld.findChild("uri");
if (uriNode != null) {
String body = uriNode.getBody();
Modified: tomcat/tc7.0.x/trunk/java/org/apache/jasper/xmlparser/ParserUtils.java
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/java/org/apache/jasper/xmlparser/ParserUtils.java?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/java/org/apache/jasper/xmlparser/ParserUtils.java (original)
+++ tomcat/tc7.0.x/trunk/java/org/apache/jasper/xmlparser/ParserUtils.java Thu Nov 21 14:49:30 2013
@@ -63,9 +63,11 @@ public class ParserUtils {
*/
static EntityResolver entityResolver = new MyEntityResolver();
- // Turn off for JSP 2.0 until switch over to using xschema.
- public static boolean validating = false;
+ private final boolean validating;
+ public ParserUtils(boolean validating) {
+ this.validating = validating;
+ }
// --------------------------------------------------------- Public Methods
Modified: tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/changelog.xml Thu Nov 21 14:49:30 2013
@@ -140,6 +140,10 @@
<bug>55798</bug>: Log an error if the MemoryUserDatabase is unable to
find the specified user database file. (markt)
</fix>
+ <add>
+ Extend the reach of the Context attribute xmlValidation to cover XML
+ parsing by Jasper the JSP engine. (markt)
+ </add>
</changelog>
</subsection>
<subsection name="Coyote">
Modified: tomcat/tc7.0.x/trunk/webapps/docs/config/context.xml
URL: http://svn.apache.org/viewvc/tomcat/tc7.0.x/trunk/webapps/docs/config/context.xml?rev=1544198&r1=1544197&r2=1544198&view=diff
==============================================================================
--- tomcat/tc7.0.x/trunk/webapps/docs/config/context.xml (original)
+++ tomcat/tc7.0.x/trunk/webapps/docs/config/context.xml Thu Nov 21 14:49:30 2013
@@ -554,8 +554,12 @@
</attribute>
<attribute name="xmlValidation" required="false">
- <p>If the value of this flag is <code>true</code>, the XML files
- will be validated on context startup. If the
+ <p>If the value of this flag is <code>true</code>, the parsing of
+ <code>web.xml</code>, <code>web-fragment.xml</code>, <code>*.tld</code>,
+ <code>*.jspx</code> and <code>*.tagx</code> files for this web
+ application will use a validating parser. Note that the
+ <code>tagPlugins.xml</code> file (if any) is never parsed using a
+ validating parser. If the
<code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>
<a href="systemprops.html">system property</a> is set to
<code>true</code>, the default value of this attribute will be
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org