bundles/org.apache.jasper.glassfish/src/org/apache/jasper/compiler/Parser.java
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 ) {
            // (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",
                    "&lt;" + tag  );
            }
        }
        else if( bodyType.equalsIgnoreCase( TagInfo.BODY_CONTENT_JSP ) ||
            bodyType.equalsIgnoreCase( TagInfo.BODY_CONTENT_SCRIPTLESS ) ||
            (bodyType == JAVAX_BODY_CONTENT_PARAM) ||
            (bodyType == JAVAX_BODY_CONTENT_TEMPLATE_TEXT) )
        {
            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 ) {
                    // (note the == since we won't recognize JAVAX_* 
                    // from outside this module).
                    reader.skipSpaces();
                    parseParam( parent );
                }
		else if (bodyType == JAVAX_BODY_CONTENT_TEMPLATE_TEXT) {
		    parseElementsTemplateText(parent);
		}
            }
            err.jspError(start, "jsp.error.unterminated", "&lt;"+tag );
        }
        else {
            err.jspError(start, "jsp.error.tld.badbodycontent", bodyType,
                         tag);
        }
    }
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 ) {
            // (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",
                    "&lt;" + tag  );
            }
        }
        else if( bodyType.equalsIgnoreCase( TagInfo.BODY_CONTENT_JSP ) ||
            bodyType.equalsIgnoreCase( TagInfo.BODY_CONTENT_SCRIPTLESS ) ||
            (bodyType == JAVAX_BODY_CONTENT_PARAM) ||
            (bodyType == JAVAX_BODY_CONTENT_TEMPLATE_TEXT) )
        {
            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 ) {
                    // (note the == since we won't recognize JAVAX_* 
                    // from outside this module).
                    reader.skipSpaces();
                    parseParam( parent );
                }
		else if (bodyType == JAVAX_BODY_CONTENT_TEMPLATE_TEXT) {
		    parseElementsTemplateText(parent);
		}
            }
            err.jspError(start, "jsp.error.unterminated", "&lt;"+tag );
        }
        else {
            err.jspError(start, "jsp.error.tld.badbodycontent", bodyType,
                         tag);
        }
    }
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 ) { // (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" , "&lt;" + tag ) ; } } else if ( bodyType . equalsIgnoreCase ( TagInfo . BODY_CONTENT_JSP ) || bodyType . equalsIgnoreCase ( TagInfo . BODY_CONTENT_SCRIPTLESS ) || ( bodyType == JAVAX_BODY_CONTENT_PARAM ) || ( bodyType == JAVAX_BODY_CONTENT_TEMPLATE_TEXT ) ) { 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 ) { // (note the == since we won't recognize JAVAX_*  // from outside this module). reader . skipSpaces ( ) ; parseParam ( parent ) ; } else if ( bodyType == JAVAX_BODY_CONTENT_TEMPLATE_TEXT ) { parseElementsTemplateText ( parent ) ; } } err . jspError ( start , "jsp.error.unterminated" , "&lt;" + tag ) ; } else { err . jspError ( start , "jsp.error.tld.badbodycontent" , bodyType , tag ) ; } }
/*
Parse the body as JSP content.
@param tag The name of the tag whose end tag would terminate the body
@param bodyType One of the TagInfo body types
/ * Parse the body as JSP content .