Author: kkolinko
Date: Mon Nov 14 06:48:46 2011
New Revision: 1201608

URL: http://svn.apache.org/viewvc?rev=1201608&view=rev
Log:
Improve processing of errors that are wrapped into InvocationTargetException.
Rethrow errors that must be rethrown:
process exceptions thrown from Constructor.newInstance().
In DataSourceLinkFactory: unwrap exception from within 
InvocationTargetException.

Modified:
    tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java
    tomcat/trunk/java/org/apache/jasper/servlet/JspServlet.java
    tomcat/trunk/java/org/apache/naming/factory/DataSourceLinkFactory.java

Modified: tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java?rev=1201608&r1=1201607&r2=1201608&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java (original)
+++ tomcat/trunk/java/org/apache/catalina/loader/WebappLoader.java Mon Nov 14 
06:48:46 2011
@@ -603,6 +603,7 @@ public class WebappLoader extends Lifecy
                 .registerComponent(classLoader, cloname, null);
 
         } catch (Throwable t) {
+            t = ExceptionUtils.unwrapInvocationTargetException(t);
             ExceptionUtils.handleThrowable(t);
             log.error( "LifecycleException ", t );
             throw new LifecycleException("start: ", t);

Modified: tomcat/trunk/java/org/apache/jasper/servlet/JspServlet.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/jasper/servlet/JspServlet.java?rev=1201608&r1=1201607&r2=1201608&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/jasper/servlet/JspServlet.java (original)
+++ tomcat/trunk/java/org/apache/jasper/servlet/JspServlet.java Mon Nov 14 
06:48:46 2011
@@ -104,6 +104,7 @@ public class JspServlet extends HttpServ
                 Object[] args = { config, context };
                 options = (Options) ctor.newInstance(args);
             } catch (Throwable e) {
+                e = ExceptionUtils.unwrapInvocationTargetException(e);
                 ExceptionUtils.handleThrowable(e);
                 // Need to localize this.
                 log.warn("Failed to load engineOptionsClass", e);

Modified: tomcat/trunk/java/org/apache/naming/factory/DataSourceLinkFactory.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/naming/factory/DataSourceLinkFactory.java?rev=1201608&r1=1201607&r2=1201608&view=diff
==============================================================================
--- tomcat/trunk/java/org/apache/naming/factory/DataSourceLinkFactory.java 
(original)
+++ tomcat/trunk/java/org/apache/naming/factory/DataSourceLinkFactory.java Mon 
Nov 14 06:48:46 2011
@@ -76,6 +76,18 @@ public class DataSourceLinkFactory exten
             DataSourceHandler handler = new 
DataSourceHandler((DataSource)datasource, username, password);
             return proxyConstructor.newInstance(handler);
         }catch (Exception x) {
+            if (x instanceof InvocationTargetException) {
+                Throwable cause = x.getCause();
+                if (cause instanceof ThreadDeath) {
+                    throw (ThreadDeath) cause;
+                }
+                if (cause instanceof VirtualMachineError) {
+                    throw (VirtualMachineError) cause;
+                }
+                if (cause instanceof Exception) {
+                    x = (Exception) cause;
+                }
+            }
             if (x instanceof NamingException) throw (NamingException)x;
             else {
                 NamingException nx = new NamingException(x.getMessage());



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

Reply via email to