support spring 2.0

This commit is contained in:
wenshao
2012-01-05 10:39:28 +08:00
parent 54bc95671b
commit 00f0168dc0
6 changed files with 54 additions and 116 deletions
+21 -11
View File
@@ -33,6 +33,12 @@
<url>http://code.alibabatech.com/mvn/releases/</url>
<layout>default</layout>
</repository>
<repository>
<id>springsource-repo</id>
<name>SpringSource Repository</name>
<url>http://repo.springsource.org/release</url>
</repository>
</repositories>
<distributionManagement>
@@ -164,12 +170,22 @@
<version>1.1.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring</artifactId>
<version>2.5.6</version>
<version>2.0</version>
<scope>provided</scope>
</dependency>
<!--
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.1.0.RELEASE</version>
<scope>provided</scope>
</dependency>
-->
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
@@ -209,14 +225,14 @@
<version>1.2.4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>9.1-901-1.jdbc4</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.oracle</groupId>
<artifactId>ojdbc5</artifactId>
@@ -224,14 +240,8 @@
<scope>provided</scope>
</dependency>
<!--
<dependency>
<groupId>com.alibaba.external</groupId>
<artifactId>jdbc.oracle</artifactId>
<version>10.2.0.2</version>
<scope>provided</scope>
</dependency>
-->
<!-- <dependency> <groupId>com.alibaba.external</groupId> <artifactId>jdbc.oracle</artifactId>
<version>10.2.0.2</version> <scope>provided</scope> </dependency> -->
<dependency>
<groupId>junit</groupId>
@@ -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<String, JdbcSqlStat> sqlStatMap = dataSourceStat.getSqlStatMap();
JdbcSqlStat sqlStat = sqlStatMap.get(sql);
if (sqlStat == null) {
@@ -218,6 +218,9 @@ public abstract class DruidAbstractDataSource extends WrapperAdapter implements
}
public void setOracle(boolean isOracle) {
if (inited) {
throw new IllegalStateException();
}
this.isOracle = isOracle;
}
@@ -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);
}
}
@@ -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");
@@ -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();
}
}
}