DO NOT REPLY TO THIS EMAIL, BUT PLEASE POST YOUR BUG RELATED COMMENTS THROUGH THE WEB INTERFACE AVAILABLE AT <http://nagoya.apache.org/bugzilla/show_bug.cgi?id=27300>. ANY REPLY MADE TO THIS MESSAGE WILL NOT BE COLLECTED AND INSERTED IN THE BUG DATABASE.
http://nagoya.apache.org/bugzilla/show_bug.cgi?id=27300 SMAP line numbers incorrect when JSP comments are present Summary: SMAP line numbers incorrect when JSP comments are present Product: Tomcat 5 Version: 5.0.19 Platform: All OS/Version: All Status: NEW Severity: Normal Priority: Other Component: Jasper AssignedTo: [EMAIL PROTECTED] ReportedBy: [EMAIL PROTECTED] If a JSP contains JSP comments, the generated servlet does not contain the JSP comments. Consequently, the SMAP line mappings are incorrect. For example, given a JSP: <html> <head> <title>Untitled Document</title> </head> <%-- JSP comment --%> <body> </body> </html> The relevant section of the generated servlet (lines 42 to 49, inclusive) is: out.write("<html>\n"); out.write(" <head>\n"); out.write(" <title>Untitled Document</title>\n"); out.write(" </head>\n"); out.write(" \n"); out.write(" <body>\n"); out.write(" </body>\n"); out.write("</html>"); And the Generated SMAP is: SMAP test_jsp.java JSP *S JSP *F + 0 test.jsp test.jsp *L 1,8:42 *E The fix requires the following two modications: 1) In the class org.apache.jasper.compiler.TextOptimizer, the overriden method visit(Node.Comment n) must be removed. 2) The inner class org.apache.jasper.compiler.Generator.GenerateVisitor must override the method visit(Node.Comment n). I tested this, using the following code, which works correctly: public void visit(Node.Comment n) throws JasperException { n.setBeginJavaLine(out.getJavaLine()); out.printin("out.write(\"<%--"); String text = n.getText(); boolean newLine = false; if (text != null) { for (int i = 0; i < text.toCharArray().length; i++) { if (newLine) { out.printin("out.write(\""); } char ch = text.charAt(i); if (ch == '\n') { out.println("\\n\");"); newLine = true; } else { out.print(ch); newLine = false; } } } // @todo: should the closing tag have a newline appended to it? if (newLine) { out.printil("out.write(\"--%>\");"); } else { out.println("--%>\");"); } n.setEndJavaLine(out.getJavaLine()); } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
