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; } }