Author: rmannibucau
Date: Tue Aug 21 15:09:58 2012
New Revision: 1375597

URL: http://svn.apache.org/viewvc?rev=1375597&view=rev
Log:
TOMEE-395 some unwrapping of invocationtargetexception. Thanks chunlinyao

Modified:
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingSqlConnection.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingSqlDataSource.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/TimeWatcherExecutor.java
    
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
    
openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingSqlConnection.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingSqlConnection.java?rev=1375597&r1=1375596&r2=1375597&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingSqlConnection.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingSqlConnection.java
 Tue Aug 21 15:09:58 2012
@@ -17,6 +17,7 @@
 package org.apache.openejb.resource.jdbc.logging;
 
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.sql.CallableStatement;
@@ -37,7 +38,12 @@ public class LoggingSqlConnection implem
 
     @Override
     public Object invoke(final Object proxy, final Method method, final 
Object[] args) throws Throwable {
-        final Object result = method.invoke(delegate, args);
+        final Object result;
+        try {
+            result = method.invoke(delegate, args);
+        } catch (InvocationTargetException ite) {
+            throw ite.getCause();
+        }
 
         final String mtd = method.getName();
 

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingSqlDataSource.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingSqlDataSource.java?rev=1375597&r1=1375596&r2=1375597&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingSqlDataSource.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/LoggingSqlDataSource.java
 Tue Aug 21 15:09:58 2012
@@ -18,6 +18,7 @@ package org.apache.openejb.resource.jdbc
 
 import javax.sql.DataSource;
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.sql.Connection;
@@ -33,7 +34,13 @@ public class LoggingSqlDataSource implem
 
     @Override
     public Object invoke(final Object proxy, final Method method, final 
Object[] args) throws Throwable {
-        final Object result = method.invoke(delegate, args);
+        final Object result;
+        try {
+            result = method.invoke(delegate, args);
+        } catch (InvocationTargetException ite) {
+            throw ite.getCause();
+        }
+
         if ("getConnection".equals(method.getName())) {
             return Proxy.newProxyInstance(delegate.getClass().getClassLoader(),
                     INTERFACES, new LoggingSqlConnection((Connection) result));

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/TimeWatcherExecutor.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/TimeWatcherExecutor.java?rev=1375597&r1=1375596&r2=1375597&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/TimeWatcherExecutor.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/logging/TimeWatcherExecutor.java
 Tue Aug 21 15:09:58 2012
@@ -25,12 +25,19 @@ public final class TimeWatcherExecutor {
         // no-op
     }
 
-    public static TimerWatcherResult execute(final Method mtd, final Object 
instance, final Object[] args, boolean watch) throws InvocationTargetException, 
IllegalAccessException {
+    public static TimerWatcherResult execute(final Method mtd, final Object 
instance, final Object[] args, boolean watch) throws Throwable {
         long start = 0, duration = 0;
         if (watch) {
             start = System.nanoTime();
         }
-        final Object result = mtd.invoke(instance, args);
+
+        final Object result;
+        try {
+            result = mtd.invoke(instance, args);
+        } catch (InvocationTargetException ite) {
+            throw ite.getCause();
+        }
+
         if (watch) {
             duration = TimeUnit.NANOSECONDS.toMillis(System.nanoTime() - 
start);
         }

Modified: 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java?rev=1375597&r1=1375596&r2=1375597&view=diff
==============================================================================
--- 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
 (original)
+++ 
openejb/trunk/openejb/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/managed/local/ManagedConnection.java
 Tue Aug 21 15:09:58 2012
@@ -73,7 +73,7 @@ public class ManagedConnection implement
             final Transaction transaction = 
transactionManager.getTransaction();
 
             if (transaction == null) { // shouldn't be possible
-                return method.invoke(delegate, args);
+                return invoke(method, delegate, args);
             }
 
             // if we have a tx check it is the same this connection is linked 
to
@@ -117,7 +117,7 @@ public class ManagedConnection implement
                 return invokeUnderTransaction(delegate, method, args);
             }
 
-            return method.invoke(delegate, args);
+            return invoke(method, delegate, args);
         } catch (InvocationTargetException ite) {
             throw ite.getTargetException();
         }
@@ -125,6 +125,14 @@ public class ManagedConnection implement
 
     }
 
+    private static Object invoke(final Method method, final Connection 
delegate, final Object[] args) throws Throwable {
+        try {
+            return method.invoke(delegate, args);
+        } catch (InvocationTargetException ite) {
+            throw ite.getCause();
+        }
+    }
+
     private Object invokeUnderTransaction(final Connection delegate, final 
Method method, final Object[] args) throws Exception {
         final String mtdName = method.getName();
         if ("setAutoCommit".equals(mtdName)

Modified: 
openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java
URL: 
http://svn.apache.org/viewvc/openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java?rev=1375597&r1=1375596&r2=1375597&view=diff
==============================================================================
--- 
openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java
 (original)
+++ 
openejb/trunk/openejb/tomee/tomee-jdbc/src/main/java/org/apache/tomee/jdbc/TomEEDataSourceCreator.java
 Tue Aug 21 15:09:58 2012
@@ -35,6 +35,7 @@ import org.apache.tomcat.jdbc.pool.Poole
 import javax.management.ObjectName;
 import javax.sql.DataSource;
 import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.lang.reflect.Proxy;
 import java.sql.Connection;
@@ -240,7 +241,11 @@ public class TomEEDataSourceCreator exte
             if ("hashCode".equals(method.getName())) {
                 return hashCode;
             }
-            return method.invoke(delegate, args);
+            try {
+                return method.invoke(delegate, args);
+            } catch (InvocationTargetException ite) {
+                throw ite.getCause();
+            }
         }
     }
 }


Reply via email to