From 39935b6cbb027c17a616a03ad4aba7663d271625 Mon Sep 17 00:00:00 2001 From: wenshao Date: Thu, 15 Sep 2011 07:50:58 +0000 Subject: [PATCH] =?UTF-8?q?=E6=B5=8B=E8=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit git-svn-id: http://code.alibabatech.com/svn/druid/trunk@761 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../com/alibaba/druid/pool/PoolableConnection.java | 10 ++++++++++ .../druid/bvt/pool/basic/TestDataSourceBasic.java | 6 ++++++ 2 files changed, 16 insertions(+) diff --git a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java index ac6e7fa8a8..f413b0272b 100644 --- a/src/main/java/com/alibaba/druid/pool/PoolableConnection.java +++ b/src/main/java/com/alibaba/druid/pool/PoolableConnection.java @@ -503,16 +503,26 @@ public class PoolableConnection implements PooledConnection, Connection { // //////////////////// + @SuppressWarnings("unchecked") @Override public T unwrap(Class iface) throws SQLException { if (conn == null) { return null; } + + if (iface == PoolableConnection.class) { + return (T) this; + } + return conn.unwrap(iface); } @Override public boolean isWrapperFor(Class iface) throws SQLException { + if (iface == PoolableConnection.class) { + return true; + } + return conn.isWrapperFor(iface); } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/basic/TestDataSourceBasic.java b/src/test/java/com/alibaba/druid/bvt/pool/basic/TestDataSourceBasic.java index 72ee5b8bba..ee96b19614 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/basic/TestDataSourceBasic.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/basic/TestDataSourceBasic.java @@ -5,6 +5,7 @@ import java.sql.PreparedStatement; import com.alibaba.druid.mock.MockDriver; import com.alibaba.druid.pool.DruidDataSource; +import com.alibaba.druid.pool.PoolableConnection; import com.alibaba.druid.stat.DruidDataSourceStatManager; import com.mysql.jdbc.ResultSet; @@ -45,6 +46,11 @@ public class TestDataSourceBasic extends TestCase { public void test_prepare() throws Exception { Connection conn = dataSource.getConnection(); + + PoolableConnection wrap = conn.unwrap(PoolableConnection.class); + Assert.assertTrue(wrap.isWrapperFor(PoolableConnection.class)); + Assert.assertNotNull(wrap); + conn.setAutoCommit(false); conn.setAutoCommit(false); Assert.assertEquals(1, dataSource.getActiveConnectionStackTrace().size());