https://bz.apache.org/bugzilla/show_bug.cgi?id=59569
Bug ID: 59569 Summary: isWrapperFor/unwrap implementations incorrect Product: Tomcat Modules Version: unspecified Hardware: PC Status: NEW Severity: normal Priority: P2 Component: jdbc-pool Assignee: dev@tomcat.apache.org Reporter: batterseapo...@hotmail.com In org.apache.tomcat.jdbc.pool.DataSourceProxy, isWrapperFor/unwrap always return false/null respectively. This is a spec violation, not least becaues unwrap should throw instead of returning null. A similar issue affects org.apache.tomcat.jdbc.pool.ProxyConnection. Correct implementations of these functions should look something like this (for DataSourceProxy): @SuppressWarnings("unused") // Has to match signature in DataSource public boolean isWrapperFor(Class<?> iface) throws SQLException { return poolProperties.getDataSource() instanceof DataSource && ((DataSource)poolProperties.getDataSource()).isWrapperFor(iface); } @SuppressWarnings("unused") // Has to match signature in DataSource public <T> T unwrap(Class<T> iface) throws SQLException { if (poolProperties.getDataSource() instanceof DataSource) { return ((DataSource)poolProperties.getDataSource()).unwrap(iface); } else { throw new SQLException("Not a wrapper for " + iface); } } And for ProxyConnection: public boolean isWrapperFor(Class<?> iface) throws SQLException { if (iface == XAConnection.class && connection.getXAConnection()!=null) { return true; } else { return connection.getConnection().isWrapperFor(iface); } } public Object unwrap(Class<?> iface) throws SQLException { if (iface == PooledConnection.class) { return connection; }else if (iface == XAConnection.class) { return connection.getXAConnection(); } else { return connection.getConnection().unwrap(iface); } } -- You are receiving this mail because: You are the assignee for the bug. --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org