Author: jboynes Date: Mon Dec 1 02:08:41 2014 New Revision: 1642617 URL: http://svn.apache.org/r1642617 Log: JSTL TLVs need different namespace awareness
Added: tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PageParser.java - copied, changed from r1642613, tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/ParserUtil.java Removed: tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/ParserUtil.java Modified: tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLV.java tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/ScriptFreeTLV.java Copied: tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PageParser.java (from r1642613, tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/ParserUtil.java) URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PageParser.java?p2=tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PageParser.java&p1=tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/ParserUtil.java&r1=1642613&r2=1642617&rev=1642617&view=diff ============================================================================== --- tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/ParserUtil.java (original) +++ tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PageParser.java Mon Dec 1 02:08:41 2014 @@ -35,14 +35,15 @@ import org.xml.sax.helpers.DefaultHandle /** * Support class for working with the SAX Parser. */ -class ParserUtil { +class PageParser { - private static final SAXParserFactory PARSER_FACTORY; - static { - PARSER_FACTORY = AccessController.doPrivileged(new PrivilegedAction<SAXParserFactory>() { + private final SAXParserFactory parserFactory; + + PageParser(boolean namespaceAware) { + parserFactory = AccessController.doPrivileged(new PrivilegedAction<SAXParserFactory>() { public SAXParserFactory run() { ClassLoader original = Thread.currentThread().getContextClassLoader(); - ClassLoader ours = ParserUtil.class.getClassLoader(); + ClassLoader ours = PageParser.class.getClassLoader(); try { if (original != ours) { Thread.currentThread().setContextClassLoader(ours); @@ -56,8 +57,9 @@ class ParserUtil { } }); try { - PARSER_FACTORY.setValidating(true); - PARSER_FACTORY.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); + parserFactory.setNamespaceAware(namespaceAware); + parserFactory.setValidating(false); + parserFactory.setFeature(XMLConstants.FEATURE_SECURE_PROCESSING, true); } catch (ParserConfigurationException e) { throw new ExceptionInInitializerError(e); } catch (SAXNotRecognizedException e) { @@ -67,11 +69,8 @@ class ParserUtil { } } - private ParserUtil() { - } - - static void parse(PageData pageData, DefaultHandler handler) throws ParserConfigurationException, SAXException, IOException { - SAXParser parser = PARSER_FACTORY.newSAXParser(); + void parse(PageData pageData, DefaultHandler handler) throws ParserConfigurationException, SAXException, IOException { + SAXParser parser = parserFactory.newSAXParser(); InputStream is = pageData.getInputStream(); try { parser.parse(is, handler); Modified: tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLV.java URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLV.java?rev=1642617&r1=1642616&r2=1642617&view=diff ============================================================================== --- tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLV.java (original) +++ tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/PermittedTaglibsTLV.java Mon Dec 1 02:08:41 2014 @@ -17,7 +17,6 @@ package javax.servlet.jsp.jstl.tlv; import java.io.IOException; -import java.io.InputStream; import java.util.HashSet; import java.util.Set; import java.util.StringTokenizer; @@ -26,8 +25,6 @@ import javax.servlet.jsp.tagext.PageData import javax.servlet.jsp.tagext.TagLibraryValidator; import javax.servlet.jsp.tagext.ValidationMessage; import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParser; -import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; @@ -52,17 +49,18 @@ public class PermittedTaglibsTLV extends // Constants // parameter names - private final String PERMITTED_TAGLIBS_PARAM = "permittedTaglibs"; + private static final String PERMITTED_TAGLIBS_PARAM = "permittedTaglibs"; // URI for "<jsp:root>" element - private final String JSP_ROOT_URI = "http://java.sun.com/JSP/Page";; + private static final String JSP_ROOT_URI = "http://java.sun.com/JSP/Page";; // local name of "<jsp:root>" element - private final String JSP_ROOT_NAME = "root"; + private static final String JSP_ROOT_NAME = "root"; // QName for "<jsp:root>" element - private final String JSP_ROOT_QN = "jsp:root"; + private static final String JSP_ROOT_QN = "jsp:root"; + private static final PageParser parser = new PageParser(false); //********************************************************************* // Validation and configuration state (protected) @@ -104,7 +102,7 @@ public class PermittedTaglibsTLV extends DefaultHandler h = new PermittedTaglibsHandler(); // parse the page - ParserUtil.parse(page, h); + parser.parse(page, h); if (failed) { return vmFromString( Modified: tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/ScriptFreeTLV.java URL: http://svn.apache.org/viewvc/tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/ScriptFreeTLV.java?rev=1642617&r1=1642616&r2=1642617&view=diff ============================================================================== --- tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/ScriptFreeTLV.java (original) +++ tomcat/taglibs/standard/trunk/spec/src/main/java/javax/servlet/jsp/jstl/tlv/ScriptFreeTLV.java Mon Dec 1 02:08:41 2014 @@ -17,14 +17,12 @@ package javax.servlet.jsp.jstl.tlv; import java.io.IOException; -import java.io.InputStream; import java.util.Map; import javax.servlet.jsp.tagext.PageData; import javax.servlet.jsp.tagext.TagLibraryValidator; import javax.servlet.jsp.tagext.ValidationMessage; import javax.xml.parsers.ParserConfigurationException; -import javax.xml.parsers.SAXParserFactory; import org.xml.sax.Attributes; import org.xml.sax.SAXException; @@ -53,22 +51,13 @@ import org.xml.sax.helpers.DefaultHandle * @author Shawn Bayern (minor changes) */ public class ScriptFreeTLV extends TagLibraryValidator { + + private static final PageParser parser = new PageParser(true); + private boolean allowDeclarations = false; private boolean allowScriptlets = false; private boolean allowExpressions = false; private boolean allowRTExpressions = false; - private SAXParserFactory factory; - - /** - * Constructs a new validator instance. - * Initializes the parser factory to create non-validating, namespace-aware - * SAX parsers. - */ - public ScriptFreeTLV() { - factory = SAXParserFactory.newInstance(); - factory.setValidating(false); - factory.setNamespaceAware(true); - } /** * Sets the values of the initialization parameters, as supplied in the TLD. @@ -106,7 +95,7 @@ public class ScriptFreeTLV extends TagLi public ValidationMessage[] validate(String prefix, String uri, PageData page) { try { MyContentHandler handler = new MyContentHandler(); - ParserUtil.parse(page, handler); + parser.parse(page, handler); return handler.reportResults(); } catch (ParserConfigurationException e) { return vmFromString(e.toString()); @@ -191,7 +180,7 @@ public class ScriptFreeTLV extends TagLi public ValidationMessage[] reportResults() { if (declarationCount + scriptletCount + expressionCount + rtExpressionCount > 0) { - StringBuffer results = new StringBuffer("JSP page contains "); + StringBuilder results = new StringBuilder("JSP page contains "); boolean first = true; if (declarationCount > 0) { results.append(Integer.toString(declarationCount)); --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org