luehe       2002/11/11 11:26:29

  Modified:    jasper2/src/share/org/apache/jasper/compiler
                        JspDocumentParser.java
  Log:
  Fixed 14413: NPE while using jsp:attribute in JSP Document
  
  Revision  Changes    Path
  1.29      +22 -15    
jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java
  
  Index: JspDocumentParser.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-tomcat-jasper/jasper2/src/share/org/apache/jasper/compiler/JspDocumentParser.java,v
  retrieving revision 1.28
  retrieving revision 1.29
  diff -u -r1.28 -r1.29
  --- JspDocumentParser.java    8 Nov 2002 19:55:47 -0000       1.28
  +++ JspDocumentParser.java    11 Nov 2002 19:26:28 -0000      1.29
  @@ -435,19 +435,26 @@
            return;
        }
   
  -     if (current instanceof Node.NamedAttribute
  -             && ((Node.NamedAttribute) current).isTrim()) {
  -         // Ignore any whitespace (including spaces, carriage returns,
  -         // line feeds, and tabs, that appear at the beginning and at the
  -         // end of the body of the <jsp:attribute> action.
  +     if (current instanceof Node.NamedAttribute) {
            Node.Nodes subelems = ((Node.NamedAttribute) current).getBody();
  -         Node firstNode = subelems.getNode(0);
  -         if (firstNode instanceof Node.TemplateText) {
  -             ((Node.TemplateText) firstNode).ltrim();
  +         if (subelems == null) {
  +                throw new SAXParseException(
  +                     err.getString("jsp.error.empty.body.not.allowed",
  +                                   "&lt;jsp:attribute"),
  +                     locator);
            }
  -         Node lastNode = subelems.getNode(subelems.size() - 1);
  -         if (lastNode instanceof Node.TemplateText) {
  -             ((Node.TemplateText) lastNode).rtrim();
  +         if (((Node.NamedAttribute) current).isTrim()) {
  +             // Ignore any whitespace (including spaces, carriage returns,
  +             // line feeds, and tabs, that appear at the beginning and at
  +             // the end of the body of the <jsp:attribute> action.
  +             Node firstNode = subelems.getNode(0);
  +             if (firstNode instanceof Node.TemplateText) {
  +                 ((Node.TemplateText) firstNode).ltrim();
  +             }
  +             Node lastNode = subelems.getNode(subelems.size() - 1);
  +             if (lastNode instanceof Node.TemplateText) {
  +                 ((Node.TemplateText) lastNode).rtrim();
  +             }
            }
        } else if (current instanceof Node.ScriptingElement) {
            checkScriptingBody((Node.ScriptingElement) current);
  
  
  

--
To unsubscribe, e-mail:   <mailto:tomcat-dev-unsubscribe@;jakarta.apache.org>
For additional commands, e-mail: <mailto:tomcat-dev-help@;jakarta.apache.org>

Reply via email to