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 2010/03/03 22:00:22 UTC
svn commit: r918684 -
/tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java
Author: markt
Date: Wed Mar 3 21:00:22 2010
New Revision: 918684
URL: http://svn.apache.org/viewvc?rev=918684&view=rev
Log:
Revert previous fix for https://issues.apache.org/bugzilla/show_bug.cgi?id=47977 that caused regression https://issues.apache.org/bugzilla/show_bug.cgi?id=48827 and implement an alternative fix
Modified:
tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java
Modified: tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java?rev=918684&r1=918683&r2=918684&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java (original)
+++ tomcat/trunk/java/org/apache/jasper/compiler/JspDocumentParser.java Wed Mar 3 21:00:22 2010
@@ -109,8 +109,6 @@
// Flag set to delay incrementing tagDependentNesting until jsp:body
// is first encountered
private boolean tagDependentPending = false;
- // Tag being parsed that should have an empty body
- private Node tagEmptyBody = null;
/*
* Constructor
@@ -271,8 +269,6 @@
AttributesImpl nonTaglibAttrs = null;
AttributesImpl nonTaglibXmlnsAttrs = null;
- checkEmptyBody();
-
processChars();
checkPrefixes(uri, qName, attrs);
@@ -430,10 +426,9 @@
if (scriptlessBodyNode == null
&& bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_SCRIPTLESS)) {
scriptlessBodyNode = node;
- } else if (TagInfo.BODY_CONTENT_TAG_DEPENDENT.equalsIgnoreCase(bodyType)) {
+ }
+ else if (TagInfo.BODY_CONTENT_TAG_DEPENDENT.equalsIgnoreCase(bodyType)) {
tagDependentPending = true;
- } else if (TagInfo.BODY_CONTENT_EMPTY.equalsIgnoreCase(bodyType)) {
- tagEmptyBody = node;
}
}
}
@@ -458,10 +453,7 @@
* @throws SAXException
*/
@Override
- public void characters(char[] buf, int offset, int len)
- throws SAXException {
-
- checkEmptyBody();
+ public void characters(char[] buf, int offset, int len) {
if (charBuffer == null) {
charBuffer = new StringBuilder();
@@ -621,10 +613,6 @@
public void endElement(String uri, String localName, String qName)
throws SAXException {
- if (tagEmptyBody != null) {
- tagEmptyBody = null;
- }
-
processChars();
if (directivesOnly &&
@@ -676,6 +664,23 @@
scriptlessBodyNode = null;
}
+ if (current instanceof Node.CustomTag) {
+ String bodyType = getBodyType((Node.CustomTag) current);
+ if (TagInfo.BODY_CONTENT_EMPTY.equalsIgnoreCase(bodyType)) {
+ // Children - if any - must be JSP attributes
+ Node.Nodes children = current.getBody();
+ if (children != null && children.size() > 0) {
+ for (int i = 0; i < children.size(); i++) {
+ Node child = children.getNode(i);
+ if (!(child instanceof Node.NamedAttribute)) {
+ throw new SAXParseException(Localizer.getMessage(
+ "jasper.error.emptybodycontent.nonempty",
+ current.qName), locator);
+ }
+ }
+ }
+ }
+ }
if (current.getParent() != null) {
current = current.getParent();
}
@@ -715,7 +720,6 @@
*/
public void startCDATA() throws SAXException {
- checkEmptyBody();
processChars(); // Flush char buffer and remove white spaces
startMark = new Mark(ctxt, path, locator.getLineNumber(),
locator.getColumnNumber());
@@ -1401,13 +1405,6 @@
return "";
}
- private void checkEmptyBody() throws SAXException {
- if (tagEmptyBody != null) {
- throw new SAXParseException(Localizer.getMessage(
- "jasper.error.emptybodycontent.nonempty",
- tagEmptyBody.qName), locator);
- }
- }
/*
* Gets SAXParser.
*
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org