funkman 2003/06/21 10:37:17 Modified: catalina/src/share/org/apache/catalina/valves ErrorReportValve.java Log: Dig as deep as possible to display possible nesting of ServletExceptions Revision Changes Path 1.4 +16 -10 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/ErrorReportValve.java Index: ErrorReportValve.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/valves/ErrorReportValve.java,v retrieving revision 1.3 retrieving revision 1.4 diff -u -r1.3 -r1.4 --- ErrorReportValve.java 9 Oct 2002 12:42:51 -0000 1.3 +++ ErrorReportValve.java 21 Jun 2003 17:37:17 -0000 1.4 @@ -99,7 +99,7 @@ * * <p>This Valve should be attached at the Host level, although it will work * if attached to a Context.</p> - * + * * <p>HTML code from the Cocoon 2 project.</p> * * @author Remy Maucherat @@ -153,7 +153,7 @@ /** - * Invoke the next Valve in the sequence. When the invoke returns, check + * Invoke the next Valve in the sequence. When the invoke returns, check * the response state, and output an error report is necessary. * * @param request The servlet request to be processed @@ -172,7 +172,7 @@ context.invokeNext(request, response); ServletRequest sreq = (ServletRequest) request; - Throwable throwable = + Throwable throwable = (Throwable) sreq.getAttribute(Globals.EXCEPTION_ATTR); ServletResponse sresp = (ServletResponse) response; @@ -228,7 +228,7 @@ /** * Prints out an error report. - * + * * @param request The request being processed * @param response The response being generated * @param exception The exception that occurred (which possibly wraps @@ -326,7 +326,7 @@ sb.append("</b> <pre>"); sb.append(stackTrace.toString()); sb.append("</pre></p>"); - if (rootCause != null) { + while (rootCause != null) { stackTrace = new StringWriter(); rootCause.printStackTrace(new PrintWriter(stackTrace)); sb.append("<p><b>"); @@ -334,6 +334,12 @@ sb.append("</b> <pre>"); sb.append(stackTrace.toString()); sb.append("</pre></p>"); + + /* In case root cause is somehow heavily nested */ + if (rootCause instanceof ServletException) + rootCause = ((ServletException) rootCause).getRootCause(); + else + rootCause = null; } } @@ -346,7 +352,7 @@ Writer writer = response.getReporter(); if (writer != null) { - + Locale locale = Locale.getDefault(); try {
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]