You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tomee.apache.org by rm...@apache.org on 2014/08/15 10:30:20 UTC

svn commit: r1618116 - /tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java

Author: rmannibucau
Date: Fri Aug 15 08:30:20 2014
New Revision: 1618116

URL: http://svn.apache.org/r1618116
Log:
avoid infinite loop when real datasource for openejb point of view is a proxy

Modified:
    tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java

Modified: tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java
URL: http://svn.apache.org/viewvc/tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java?rev=1618116&r1=1618115&r2=1618116&view=diff
==============================================================================
--- tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java (original)
+++ tomee/tomee/trunk/container/openejb-core/src/main/java/org/apache/openejb/resource/jdbc/DataSourceFactory.java Fri Aug 15 08:30:20 2014
@@ -348,10 +348,12 @@ public class DataSourceFactory {
         Object ds = o;
         while (Proxy.isProxyClass(ds.getClass())) {
             final InvocationHandler handler = Proxy.getInvocationHandler(o);
-            if (handler instanceof LoggingSqlDataSource) {
-                ds = ((LoggingSqlDataSource) handler).getDelegate();
+            if (LoggingSqlDataSource.class.isInstance(handler)) {
+                ds = LoggingSqlDataSource.class.cast(handler).getDelegate();
             } else if (FlushableDataSourceHandler.class.isInstance(handler)) {
                 ds = FlushableDataSourceHandler.class.cast(handler).getDelegate();
+            } else {
+                break;
             }
         }