修正isWrapFor && unwrap

git-svn-id: http://code.alibabatech.com/svn/druid/trunk@478 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-07-19 09:48:20 +00:00
parent babcee9b43
commit 97e4f4ecde
5 changed files with 33 additions and 10 deletions
@@ -447,15 +447,14 @@ public class PoolableConnection implements PooledConnection, Connection {
@Override
public <T> T unwrap(Class<T> iface) throws SQLException {
checkOpen();
if (conn == null) {
return null;
}
return conn.unwrap(iface);
}
@Override
public boolean isWrapperFor(Class<?> iface) throws SQLException {
checkOpen();
return conn.isWrapperFor(iface);
}
@@ -42,6 +42,7 @@ public final class PoolableResultSet extends PoolableWrapper implements ResultSe
private boolean closed = false;
public PoolableResultSet(PoolableStatement stmt, ResultSet rs){
super(rs);
this.stmt = stmt;
this.rs = rs;
}
@@ -30,14 +30,17 @@ import com.alibaba.druid.logging.LogFactory;
* @author wenshao<szujobs@hotmail.com>
*/
public class PoolableStatement extends PoolableWrapper implements Statement {
private final static Log LOG = LogFactory.getLog(PoolableStatement.class);
private final static Log LOG = LogFactory.getLog(PoolableStatement.class);
private final Statement stmt;
protected PoolableConnection conn;
protected final List<ResultSet> resultSetTrace = new ArrayList<ResultSet>();
protected boolean closed = false;
public PoolableStatement(PoolableConnection conn, Statement stmt){
super(stmt);
this.conn = conn;
this.stmt = stmt;
}
@@ -23,6 +23,12 @@ import java.sql.Wrapper;
*/
public class PoolableWrapper implements Wrapper {
private final Wrapper wraaper;
public PoolableWrapper(Wrapper wraaper){
this.wraaper = wraaper;
}
@Override
public boolean isWrapperFor(Class<?> iface) throws SQLException {
if (iface == null) {
@@ -32,8 +38,12 @@ public class PoolableWrapper implements Wrapper {
if (iface.isInstance(this)) {
return true;
}
if (iface.isInstance(wraaper)) {
return true;
}
return false;
return wraaper.isWrapperFor(iface);
}
@SuppressWarnings("unchecked")
@@ -46,8 +56,12 @@ public class PoolableWrapper implements Wrapper {
if (iface.isInstance(this)) {
return (T) this;
}
if (iface.isInstance(wraaper)) {
return (T) wraaper;
}
return null;
return wraaper.unwrap(iface);
}
}