You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by ma...@apache.org on 2007/01/20 03:58:38 UTC

svn commit: r498052 - /tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java

Author: markt
Date: Fri Jan 19 18:58:37 2007
New Revision: 498052

URL: http://svn.apache.org/viewvc?view=rev&rev=498052
Log:
Revert this while I figure why the build broke

Modified:
    tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java

Modified: tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java
URL: http://svn.apache.org/viewvc/tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java?view=diff&rev=498052&r1=498051&r2=498052
==============================================================================
--- tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java (original)
+++ tomcat/container/tc5.5.x/catalina/src/share/org/apache/catalina/core/StandardWrapper.java Fri Jan 19 18:58:37 2007
@@ -28,8 +28,6 @@
 import java.security.AccessController;
 import java.security.PrivilegedActionException;
 import java.security.PrivilegedExceptionAction;
-import java.sql.SQLException;
-
 import javax.servlet.Servlet;
 import javax.servlet.ServletConfig;
 import javax.servlet.ServletContext;
@@ -38,7 +36,6 @@
 import javax.servlet.ServletResponse;
 import javax.servlet.SingleThreadModel;
 import javax.servlet.UnavailableException;
-import javax.servlet.jsp.JspException;
 import javax.management.ListenerNotFoundException;
 import javax.management.MBeanNotificationInfo;
 import javax.management.Notification;
@@ -59,6 +56,7 @@
 import org.apache.catalina.security.SecurityUtil;
 import org.apache.catalina.util.Enumerator;
 import org.apache.catalina.util.InstanceSupport;
+import org.apache.tomcat.util.IntrospectionUtils;
 import org.apache.tomcat.util.log.SystemLogHandler;
 import org.apache.commons.modeler.Registry;
 
@@ -634,33 +632,23 @@
      * @param e The servlet exception
      */
     public static Throwable getRootCause(ServletException e) {
-        Throwable rootCause = e.getRootCause();
-        return findRootCause(e, rootCause);
-    }
+        Throwable rootCause = e;
+        Throwable rootCauseCheck = null;
+        // Extra aggressive rootCause finding
+        do {
+            try {
+                rootCauseCheck = (Throwable)IntrospectionUtils.getProperty
+                                            (rootCause, "rootCause");
+                if (rootCause == rootCauseCheck)
+                    rootCauseCheck = null;
+                else if (rootCauseCheck != null)
+                    rootCause = rootCauseCheck;
 
-    /*
-     * Work through the root causes using specific methods for well known types
-     * and getCause() for the rest. Stop when the next rootCause is null or
-     * an exception is found that has itself as its own rootCause. 
-     */
-    private static final Throwable findRootCause(Throwable theException,
-            Throwable theRootCause) {
-        
-        Throwable deeperRootCause = null;
-
-        if (theRootCause == null || theRootCause == theException) {
-            deeperRootCause = theException;
-        } else if (theRootCause instanceof ServletException) {
-            deeperRootCause = ((ServletException) theRootCause).getRootCause();
-        } else if (theRootCause instanceof JspException) {
-            deeperRootCause = ((JspException) theRootCause).getRootCause();
-        } else if (theRootCause instanceof SQLException) {
-            deeperRootCause = ((SQLException) theRootCause).getNextException();
-        } else {
-            deeperRootCause = theRootCause.getCause();
-        }
-        
-        return deeperRootCause;
+            } catch (ClassCastException ex) {
+                rootCauseCheck = null;
+            }
+        } while (rootCauseCheck != null);
+        return rootCause;
     }
 
 



---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org