Author: fhanik
Date: Fri Jan  2 17:25:56 2009
New Revision: 730884

URL: http://svn.apache.org/viewvc?rev=730884&view=rev
Log:
Handle invocation target exceptions and throw the original exception when it 
happens

Modified:
    
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java
    
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/AbstractQueryReport.java

Modified: 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java?rev=730884&r1=730883&r2=730884&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/ProxyConnection.java
 Fri Jan  2 17:25:56 2009
@@ -16,6 +16,7 @@
  */
 package org.apache.tomcat.jdbc.pool;
 
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.sql.Connection;
 import java.sql.SQLException;
@@ -84,7 +85,16 @@
             return connection.getConnection();
         }
         if (isClosed()) throw new SQLException("Connection has already been 
closed.");
-        return method.invoke(connection.getConnection(),args);
+        try {
+            return method.invoke(connection.getConnection(),args);
+        }catch (Throwable t) {
+            if (t instanceof InvocationTargetException) {
+                InvocationTargetException it = (InvocationTargetException)t;
+                throw it.getCause()!=null?it.getCause():it;
+            } else {
+                throw t;
+            }
+        }
     }
     
     public boolean isClosed() {

Modified: 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/AbstractQueryReport.java
URL: 
http://svn.apache.org/viewvc/tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/AbstractQueryReport.java?rev=730884&r1=730883&r2=730884&view=diff
==============================================================================
--- 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/AbstractQueryReport.java
 (original)
+++ 
tomcat/trunk/modules/jdbc-pool/java/org/apache/tomcat/jdbc/pool/interceptor/AbstractQueryReport.java
 Fri Jan  2 17:25:56 2009
@@ -19,6 +19,7 @@
 
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.sql.CallableStatement;
@@ -231,7 +232,12 @@
                 result =  method.invoke(delegate,args);
             }catch (Throwable t) {
                 reportFailedQuery(query,args,name,start,t);
-                throw t;
+                if (t instanceof InvocationTargetException) {
+                    InvocationTargetException it = 
(InvocationTargetException)t;
+                    throw it.getCause()!=null?it.getCause():it;
+                } else {
+                    throw t;
+                }
             }
             //measure the time
             long delta = 
(process)?(System.currentTimeMillis()-start):Long.MIN_VALUE;



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

Reply via email to