You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by kk...@apache.org on 2011/11/13 23:59:35 UTC

svn commit: r1201542 - in /tomcat/trunk/java/org/apache: catalina/core/AprLifecycleListener.java jasper/util/ExceptionUtils.java tomcat/util/ExceptionUtils.java

Author: kkolinko
Date: Sun Nov 13 22:59:35 2011
New Revision: 1201542

URL: http://svn.apache.org/viewvc?rev=1201542&view=rev
Log:
Improve processing of errors that are wrapped into InvocationTargetException.
Rethrow errors that must be rethrown.
Add helper methods to ExceptionUtils classes.

Modified:
    tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java
    tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java
    tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java

Modified: tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java?rev=1201542&r1=1201541&r2=1201542&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java (original)
+++ tomcat/trunk/java/org/apache/catalina/core/AprLifecycleListener.java Sun Nov 13 22:59:35 2011
@@ -108,6 +108,7 @@ public class AprLifecycleListener
                     try {
                         initializeSSL();
                     } catch (Throwable t) {
+                        t = ExceptionUtils.unwrapInvocationTargetException(t);
                         ExceptionUtils.handleThrowable(t);
                         log.error(sm.getString("aprListener.sslInit"), t);
                     }
@@ -129,6 +130,7 @@ public class AprLifecycleListener
                 try {
                     terminateAPR();
                 } catch (Throwable t) {
+                    t = ExceptionUtils.unwrapInvocationTargetException(t);
                     ExceptionUtils.handleThrowable(t);
                     log.info(sm.getString("aprListener.aprDestroy"));
                 }
@@ -180,6 +182,7 @@ public class AprLifecycleListener
             patch = clazz.getField("TCN_PATCH_VERSION").getInt(null);
             apver = major * 1000 + minor * 100 + patch;
         } catch (Throwable t) {
+            t = ExceptionUtils.unwrapInvocationTargetException(t);
             ExceptionUtils.handleThrowable(t);
             log.info(sm.getString("aprListener.aprInit",
                     System.getProperty("java.library.path")));
@@ -196,6 +199,7 @@ public class AprLifecycleListener
                 // is below required.
                 terminateAPR();
             } catch (Throwable t) {
+                t = ExceptionUtils.unwrapInvocationTargetException(t);
                 ExceptionUtils.handleThrowable(t);
             }
             return;

Modified: tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java?rev=1201542&r1=1201541&r2=1201542&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java (original)
+++ tomcat/trunk/java/org/apache/jasper/util/ExceptionUtils.java Sun Nov 13 22:59:35 2011
@@ -16,6 +16,9 @@
  */
 package org.apache.jasper.util;
 
+import java.lang.reflect.InvocationTargetException;
+
+
 /**
  * Utilities for handling Throwables and Exceptions.
  */
@@ -35,4 +38,19 @@ public class ExceptionUtils {
         }
         // All other instances of Throwable will be silently swallowed
     }
+
+    /**
+     * Checks whether the supplied Throwable is an instance of
+     * <code>InvocationTargetException</code> and returns the throwable that is
+     * wrapped by it, if there is any.
+     *
+     * @param t the Throwable to check
+     * @return <code>t</code> or <code>t.getCause()</code>
+     */
+    public static Throwable unwrapInvocationTargetException(Throwable t) {
+        if (t instanceof InvocationTargetException && t.getCause() != null) {
+            return t.getCause();
+        }
+        return t;
+    }
 }

Modified: tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java
URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java?rev=1201542&r1=1201541&r2=1201542&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java (original)
+++ tomcat/trunk/java/org/apache/tomcat/util/ExceptionUtils.java Sun Nov 13 22:59:35 2011
@@ -16,6 +16,9 @@
  */
 package org.apache.tomcat.util;
 
+import java.lang.reflect.InvocationTargetException;
+
+
 /**
  * Utilities for handling Throwables and Exceptions.
  */
@@ -35,4 +38,19 @@ public class ExceptionUtils {
         }
         // All other instances of Throwable will be silently swallowed
     }
+
+    /**
+     * Checks whether the supplied Throwable is an instance of
+     * <code>InvocationTargetException</code> and returns the throwable that is
+     * wrapped by it, if there is any.
+     *
+     * @param t the Throwable to check
+     * @return <code>t</code> or <code>t.getCause()</code>
+     */
+    public static Throwable unwrapInvocationTargetException(Throwable t) {
+        if (t instanceof InvocationTargetException && t.getCause() != null) {
+            return t.getCause();
+        }
+        return t;
+    }
 }



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