funkman 2003/08/06 17:56:25 Modified: catalina/src/share/org/apache/catalina/core ApplicationDispatcher.java Log: Use PropertyUtils to aggressively get the real rootCause as previously committed in StandardWrapperValve and ErrorReportValve Revision Changes Path 1.23 +26 -12 jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java Index: ApplicationDispatcher.java =================================================================== RCS file: /home/cvs/jakarta-tomcat-catalina/catalina/src/share/org/apache/catalina/core/ApplicationDispatcher.java,v retrieving revision 1.22 retrieving revision 1.23 diff -u -r1.22 -r1.23 --- ApplicationDispatcher.java 5 Aug 2003 13:22:03 -0000 1.22 +++ ApplicationDispatcher.java 7 Aug 2003 00:56:25 -0000 1.23 @@ -97,6 +97,7 @@ import org.apache.catalina.core.StandardWrapper; import org.apache.catalina.util.InstanceSupport; import org.apache.catalina.util.StringManager; +import org.apache.commons.beanutils.PropertyUtils; import org.apache.commons.logging.LogFactory; import org.apache.commons.logging.Log; @@ -630,7 +631,7 @@ if (queryString != null) { wrequest.setAttribute(Globals.INCLUDE_QUERY_STRING_ATTR, queryString); - wrequest.setQueryParams(queryString); + wrequest.setQueryParams(queryString); } wrequest.setAttribute(ApplicationFilterFactory.DISPATCHER_TYPE_ATTR, @@ -774,14 +775,27 @@ support.fireInstanceEvent(InstanceEvent.AFTER_DISPATCH_EVENT, servlet, request, response); Throwable rootCause = e; - while (rootCause instanceof ServletException) { - Throwable t = ((ServletException) rootCause).getRootCause(); - if (t != null) { - rootCause = t; - } else { - break; + Throwable rootCauseCheck = null; + + // Extra aggressive rootCause finding + do { + try { + rootCauseCheck = (Throwable)PropertyUtils.getProperty + (rootCause, "rootCause"); + if (rootCauseCheck!=null) + rootCause = rootCauseCheck; + + } catch (ClassCastException ex) { + rootCauseCheck = null; + } catch (IllegalAccessException ex) { + rootCauseCheck = null; + } catch (NoSuchMethodException ex) { + rootCauseCheck = null; + } catch (java.lang.reflect.InvocationTargetException ex) { + rootCauseCheck = null; } - } + } while (rootCauseCheck != null); + log(sm.getString("applicationDispatcher.serviceException", wrapper.getName()), rootCause); servletException = e;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]