in src/main/java/org/apache/sling/scripting/jsp/jasper/compiler/Parser.java [1611:1665]
private void parseBody(Node parent, String tag, String bodyType)
throws JasperException {
if (bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_TAG_DEPENDENT)) {
parseTagDependentBody(parent, tag);
} else if (bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_EMPTY)) {
if (!reader.matchesETag(tag)) {
err.jspError(start, "jasper.error.emptybodycontent.nonempty",
tag);
}
} else if (bodyType == JAVAX_BODY_CONTENT_PLUGIN) { //NOSONAR
// (note the == since we won't recognize JAVAX_*
// from outside this module).
parsePluginTags(parent);
if (!reader.matchesETag(tag)) {
err.jspError(reader.mark(), "jsp.error.unterminated", "<"
+ tag);
}
} else if (bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_JSP)
|| bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_SCRIPTLESS)
|| (bodyType == JAVAX_BODY_CONTENT_PARAM) //NOSONAR
|| (bodyType == JAVAX_BODY_CONTENT_TEMPLATE_TEXT)) { //NOSONAR
while (reader.hasMoreInput()) {
if (reader.matchesETag(tag)) {
return;
}
// Check for nested jsp:body or jsp:attribute
if (tag.equals("jsp:body") || tag.equals("jsp:attribute")) {
if (reader.matches("<jsp:attribute")) {
err.jspError(reader.mark(),
"jsp.error.nested.jspattribute");
} else if (reader.matches("<jsp:body")) {
err.jspError(reader.mark(), "jsp.error.nested.jspbody");
}
}
if (bodyType.equalsIgnoreCase(TagInfo.BODY_CONTENT_JSP)) {
parseElements(parent);
} else if (bodyType
.equalsIgnoreCase(TagInfo.BODY_CONTENT_SCRIPTLESS)) {
parseElementsScriptless(parent);
} else if (bodyType == JAVAX_BODY_CONTENT_PARAM) { //NOSONAR
// (note the == since we won't recognize JAVAX_*
// from outside this module).
reader.skipSpaces();
parseParam(parent);
} else if (bodyType == JAVAX_BODY_CONTENT_TEMPLATE_TEXT) { //NOSONAR
parseElementsTemplateText(parent);
}
}
err.jspError(start, "jsp.error.unterminated", "<" + tag);
} else {
err.jspError(start, "jasper.error.bad.bodycontent.type");
}
}