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();
+ }
}
}
}