diff --git a/pom.xml b/pom.xml
index 067aa03609..62b060b3c2 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,6 +33,12 @@
http://code.alibabatech.com/mvn/releases/
default
+
+
+ springsource-repo
+ SpringSource Repository
+ http://repo.springsource.org/release
+
@@ -164,12 +170,22 @@
1.1.1
provided
+
org.springframework
spring
- 2.5.6
+ 2.0
provided
+
+
log4j
log4j
@@ -209,14 +225,14 @@
1.2.4
provided
-
+
postgresql
postgresql
9.1-901-1.jdbc4
provided
-
+
com.oracle
ojdbc5
@@ -224,14 +240,8 @@
provided
-
+
junit
diff --git a/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java b/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java
index 957347ca9e..25b2106fbe 100644
--- a/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java
+++ b/src/main/java/com/alibaba/druid/filter/stat/StatFilter.java
@@ -643,7 +643,7 @@ public class StatFilter extends FilterEventAdapter implements StatFilterMBean {
return dataSource.getUrl();
}
- public final JdbcSqlStat createSqlStat(StatementProxy statement, String sql) {
+ public JdbcSqlStat createSqlStat(StatementProxy statement, String sql) {
final ConcurrentMap sqlStatMap = dataSourceStat.getSqlStatMap();
JdbcSqlStat sqlStat = sqlStatMap.get(sql);
if (sqlStat == null) {
diff --git a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java
index 237f1f3b09..550d43c7cf 100644
--- a/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java
+++ b/src/main/java/com/alibaba/druid/pool/DruidAbstractDataSource.java
@@ -218,6 +218,9 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements
}
public void setOracle(boolean isOracle) {
+ if (inited) {
+ throw new IllegalStateException();
+ }
this.isOracle = isOracle;
}
diff --git a/src/main/java/com/alibaba/druid/support/spring/DruidNativeJdbcExtractor.java b/src/main/java/com/alibaba/druid/support/spring/DruidNativeJdbcExtractor.java
index b3e66404da..4996359da6 100644
--- a/src/main/java/com/alibaba/druid/support/spring/DruidNativeJdbcExtractor.java
+++ b/src/main/java/com/alibaba/druid/support/spring/DruidNativeJdbcExtractor.java
@@ -1,7 +1,33 @@
package com.alibaba.druid.support.spring;
-import org.springframework.jdbc.support.nativejdbc.Jdbc4NativeJdbcExtractor;
+import java.sql.CallableStatement;
+import java.sql.Connection;
+import java.sql.PreparedStatement;
+import java.sql.ResultSet;
+import java.sql.SQLException;
+import java.sql.Statement;
-public class DruidNativeJdbcExtractor extends Jdbc4NativeJdbcExtractor {
+import org.springframework.jdbc.support.nativejdbc.NativeJdbcExtractorAdapter;
+public class DruidNativeJdbcExtractor extends NativeJdbcExtractorAdapter {
+
+ protected Connection doGetNativeConnection(Connection con) throws SQLException {
+ return (Connection) con.unwrap(Connection.class);
+ }
+
+ public Statement getNativeStatement(Statement stmt) throws SQLException {
+ return (Statement) stmt.unwrap(Statement.class);
+ }
+
+ public PreparedStatement getNativePreparedStatement(PreparedStatement ps) throws SQLException {
+ return (PreparedStatement) ps.unwrap(PreparedStatement.class);
+ }
+
+ public CallableStatement getNativeCallableStatement(CallableStatement cs) throws SQLException {
+ return (CallableStatement) cs.unwrap(CallableStatement.class);
+ }
+
+ public ResultSet getNativeResultSet(ResultSet rs) throws SQLException {
+ return (ResultSet) rs.unwrap(ResultSet.class);
+ }
}
diff --git a/src/test/java/com/alibaba/druid/bvt/spring/DruidJdbcExtractorTest.java b/src/test/java/com/alibaba/druid/bvt/spring/DruidJdbcExtractorTest.java
index 558266433c..444aa34cd2 100644
--- a/src/test/java/com/alibaba/druid/bvt/spring/DruidJdbcExtractorTest.java
+++ b/src/test/java/com/alibaba/druid/bvt/spring/DruidJdbcExtractorTest.java
@@ -7,8 +7,6 @@ import java.sql.Statement;
import junit.framework.Assert;
import junit.framework.TestCase;
-import org.springframework.jdbc.support.nativejdbc.Jdbc4NativeJdbcExtractor;
-
import com.alibaba.druid.mock.MockCallableStatement;
import com.alibaba.druid.mock.MockConnection;
import com.alibaba.druid.mock.MockPreparedStatement;
@@ -56,7 +54,7 @@ public class DruidJdbcExtractorTest extends TestCase {
DruidDataSource dataSource = new DruidDataSource();
try {
- Jdbc4NativeJdbcExtractor extractor = new Jdbc4NativeJdbcExtractor();
+ DruidNativeJdbcExtractor extractor = new DruidNativeJdbcExtractor();
dataSource.setUrl("jdbc:mock:xx1");
dataSource.setFilters("stat");
diff --git a/src/test/java/com/alibaba/druid/bvt/spring/Jdbc4ExtractorTest.java b/src/test/java/com/alibaba/druid/bvt/spring/Jdbc4ExtractorTest.java
deleted file mode 100644
index a54a7025c3..0000000000
--- a/src/test/java/com/alibaba/druid/bvt/spring/Jdbc4ExtractorTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-package com.alibaba.druid.bvt.spring;
-
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.Statement;
-
-import junit.framework.Assert;
-import junit.framework.TestCase;
-
-import org.springframework.jdbc.support.nativejdbc.Jdbc4NativeJdbcExtractor;
-
-import com.alibaba.druid.mock.MockCallableStatement;
-import com.alibaba.druid.mock.MockConnection;
-import com.alibaba.druid.mock.MockPreparedStatement;
-import com.alibaba.druid.mock.MockResultSet;
-import com.alibaba.druid.mock.MockStatement;
-import com.alibaba.druid.pool.DruidDataSource;
-import com.alibaba.druid.support.spring.DruidNativeJdbcExtractor;
-
-public class Jdbc4ExtractorTest extends TestCase {
-
- public void test_spring() throws Exception {
- DruidDataSource dataSource = new DruidDataSource();
-
- try {
- Jdbc4NativeJdbcExtractor extractor = new Jdbc4NativeJdbcExtractor();
-
- dataSource.setUrl("jdbc:mock:xx1");
- Connection conn = dataSource.getConnection();
- Assert.assertEquals(true, extractor.getNativeConnection(conn) instanceof MockConnection);
-
- Statement stmt = conn.createStatement();
- Assert.assertEquals(true, extractor.getNativeConnectionFromStatement(stmt) instanceof MockConnection);
- Assert.assertEquals(true, extractor.getNativeStatement(stmt) instanceof MockStatement);
-
- stmt.close();
-
- PreparedStatement preStmt = conn.prepareStatement("select 1");
- Assert.assertEquals(true, extractor.getNativeConnectionFromStatement(preStmt) instanceof MockConnection);
- Assert.assertEquals(true, extractor.getNativeStatement(preStmt) instanceof MockPreparedStatement);
- Assert.assertEquals(true, extractor.getNativePreparedStatement(preStmt) instanceof MockPreparedStatement);
- ResultSet rs = preStmt.executeQuery();
- Assert.assertEquals(true, extractor.getNativeResultSet(rs) instanceof MockResultSet);
- rs.close();
-
- preStmt.close();
-
- PreparedStatement callStmt = conn.prepareCall("select 1");
- Assert.assertEquals(true, extractor.getNativeConnectionFromStatement(callStmt) instanceof MockConnection);
- Assert.assertEquals(true, extractor.getNativeStatement(callStmt) instanceof MockCallableStatement);
- Assert.assertEquals(true, extractor.getNativePreparedStatement(callStmt) instanceof MockCallableStatement);
- callStmt.close();
-
- conn.close();
- } finally {
- dataSource.close();
- }
- }
-
- public void test_spring_filter() throws Exception {
- DruidDataSource dataSource = new DruidDataSource();
-
- try {
- DruidNativeJdbcExtractor extractor = new DruidNativeJdbcExtractor();
-
- dataSource.setUrl("jdbc:mock:xx1");
- dataSource.setFilters("stat");
- Connection conn = dataSource.getConnection();
- Assert.assertEquals(true, extractor.getNativeConnection(conn) instanceof MockConnection);
-
- Statement stmt = conn.createStatement();
- Assert.assertEquals(true, extractor.getNativeConnectionFromStatement(stmt) instanceof MockConnection);
- Assert.assertEquals(true, extractor.getNativeStatement(stmt) instanceof MockStatement);
-
- stmt.close();
-
- PreparedStatement preStmt = conn.prepareStatement("select 1");
- Assert.assertEquals(true, extractor.getNativeConnectionFromStatement(preStmt) instanceof MockConnection);
- Assert.assertEquals(true, extractor.getNativeStatement(preStmt) instanceof MockPreparedStatement);
- Assert.assertEquals(true, extractor.getNativePreparedStatement(preStmt) instanceof MockPreparedStatement);
- ResultSet rs = preStmt.executeQuery();
- Assert.assertEquals(true, extractor.getNativeResultSet(rs) instanceof MockResultSet);
- rs.close();
-
- preStmt.close();
-
- PreparedStatement callStmt = conn.prepareCall("select 1");
- Assert.assertEquals(true, extractor.getNativeConnectionFromStatement(callStmt) instanceof MockConnection);
- Assert.assertEquals(true, extractor.getNativeStatement(callStmt) instanceof MockCallableStatement);
- Assert.assertEquals(true, extractor.getNativePreparedStatement(callStmt) instanceof MockCallableStatement);
- callStmt.close();
-
- conn.close();
- } finally {
- dataSource.close();
- }
- }
-}