kinman      2003/10/29 13:53:43

  Modified:    jasper2/src/share/org/apache/jasper/compiler Parser.java
               jasper2/src/share/org/apache/jasper/resources
                        messages.properties
  Log:
  - Fix 10903: Generate errors for unbalanced end tags.
  
  Revision  Changes    Path
  1.84      +33 -5     
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Parser.java
  
  Index: Parser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/Parser.java,v
  retrieving revision 1.83
  retrieving revision 1.84
  diff -u -r1.83 -r1.84
  --- Parser.java       28 Oct 2003 23:04:11 -0000      1.83
  +++ Parser.java       29 Oct 2003 21:53:43 -0000      1.84
  @@ -1596,7 +1596,8 @@
        } else if (reader.matches("<jsp:")) {
            parseStandardAction(parent);
        } else if (!parseCustomTag(parent)) {
  -         parseTemplateText(parent);
  +            checkUnbalancedEndTag();
  +            parseTemplateText(parent);
        }
       }
   
  @@ -1650,7 +1651,8 @@
        } else if (reader.matches("<jsp:")) {
            parseStandardAction(parent);
        } else if (!parseCustomTag(parent)) {
  -         parseTemplateText(parent);
  +            checkUnbalancedEndTag();
  +            parseTemplateText(parent);
        }
           
           scriptlessCount--;
  @@ -1712,8 +1714,34 @@
               err.jspError( reader.mark(), "jsp.error.not.in.template",
                "Custom actions" );
        } else {
  +            checkUnbalancedEndTag();
               parseTemplateText(parent);
        }
  +    }
  +
  +    /*
  +     * Flag as error if an unbalanced end tag appears by itself.
  +     */
  +    private void checkUnbalancedEndTag() throws JasperException {
  +
  +        if (!reader.matches("</")) {
  +            return;
  +        }
  +
  +        // Check for unbalanced standard actions
  +        if (reader.matches("jsp:")) {
  +            err.jspError(start, "jsp.error.unbalanced.endtag", "jsp:");
  +        }
  +
  +        // Check for unbalanced custom actions
  +        String tagName = reader.parseToken(false);
  +        int i = tagName.indexOf(':');
  +        if (i == -1 || pageInfo.getURI(tagName.substring(0, i)) == null) {
  +            reader.reset(start);
  +            return;
  +        }
  +
  +        err.jspError(start, "jsp.error.unbalanced.endtag", tagName);
       }
   
       /**
  
  
  
  1.134     +2 -1      
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages.properties
  
  Index: messages.properties
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/resources/messages.properties,v
  retrieving revision 1.133
  retrieving revision 1.134
  diff -u -r1.133 -r1.134
  --- messages.properties       9 Sep 2003 21:46:22 -0000       1.133
  +++ messages.properties       29 Oct 2003 21:53:43 -0000      1.134
  @@ -402,3 +402,4 @@
   jsp.error.data.file.read=Error reading file \"{0}\"
   jsp.error.prefix.refined=Attempt to redefine the prefix {0} to {1}, when it was 
already defined as {2} in the current scope.
   jsp.error.nested_jsproot=Nested &lt;jsp:root&gt;
  +jsp.error.unbalanced.endtag=The end tag \"&lt;/{0}\" is unbalanced
  
  
  

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

Reply via email to