luehe       2003/01/10 16:52:14

  Modified:    jasper2/src/share/org/apache/jasper/compiler Generator.java
                        Node.java
  Log:
  Fixed 15961: getBodyContent() is not returning null when the action
  has only jsp:attribute actions within the body.
  
  Revision  Changes    Path
  1.147     +6 -6      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java
  
  Index: Generator.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Generator.java,v
  retrieving revision 1.146
  retrieving revision 1.147
  diff -u -r1.146 -r1.147
  --- Generator.java    8 Jan 2003 22:15:56 -0000       1.146
  +++ Generator.java    11 Jan 2003 00:52:14 -0000      1.147
  @@ -1958,7 +1958,7 @@
                syncScriptingVars(n, VariableInfo.AT_BEGIN);
            }
   
  -         if (n.getBody() != null) {
  +         if (!n.hasEmptyBody()) {
                out.printin("if (");
                out.print(tagEvalVar);
                out.println(" != javax.servlet.jsp.tagext.Tag.SKIP_BODY) {");
  @@ -2003,7 +2003,7 @@
                                       String tagHandlerVar,
                                       String tagEvalVar) {
   
  -         if (n.getBody() != null) {
  +         if (!n.hasEmptyBody()) {
                if (n.implementsIterationTag()) {
                    out.printin("int evalDoAfterBody = ");
                    out.print(tagHandlerVar);
  @@ -2120,7 +2120,7 @@
                 * and pass it to tag handler's setJspBody(), unless tag body
                 * is empty
                 */
  -             if (n.getBody() != null) {
  +             if (!n.hasEmptyBody()) {
                    out.printin(tagHandlerVar);
                    out.print(".setJspBody(");
                    generateJspFragment(n, tagHandlerVar);
  
  
  
  1.53      +34 -3     
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Node.java
  
  Index: Node.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Node.java,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- Node.java 11 Jan 2003 00:11:06 -0000      1.52
  +++ Node.java 11 Jan 2003 00:52:14 -0000      1.53
  @@ -1265,6 +1265,37 @@
            }
            return n;
        }
  +
  +     /**
  +      * Returns true if this custom action has an empty body, and false
  +      * otherwise.
  +      *
  +      * A custom action is considered to have an empty body if the 
  +      * following holds true:
  +      * - getBody() returns null, or
  +      * - all immediate children are jsp:attribute actions, or
  +      * - the action's jsp:body is empty.
  +      */
  +      public boolean hasEmptyBody() {
  +          boolean hasEmptyBody = true;
  +          Nodes nodes = getBody();
  +          if (nodes != null) {
  +              int numChildNodes = nodes.size();
  +              for (int i=0; i<numChildNodes; i++) {
  +                  Node n = nodes.getNode(i);
  +                  if (!(n instanceof NamedAttribute)) {
  +                      if (n instanceof JspBody) {
  +                          hasEmptyBody = (n.getBody() == null);
  +                      } else {
  +                          hasEmptyBody = false;
  +                      }
  +                      break;
  +                  }
  +              }
  +          }
  +
  +          return hasEmptyBody;
  +      }
       }
   
       /**
  
  
  

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to