From 8af9c6f976da4562184e2765dd32b1619b344e2d Mon Sep 17 00:00:00 2001 From: wenshao Date: Mon, 27 May 2013 18:14:42 +0800 Subject: [PATCH] fixed testcase --- .../vendor/MySqlValidConnectionChecker.java | 31 ++++++++++++++++--- .../druid/sql/ast/expr/SQLBinaryOperator.java | 8 +++++ .../com/alibaba/druid/wall/WallFilter.java | 1 + .../com/alibaba/druid/wall/WallProvider.java | 3 +- .../druid/bvt/pool/DruidDataSourceTest5.java | 4 +-- ...ruidDataSourceTest_testOnBorrowFailed.java | 4 +-- ...dDataSourceTest_testOnWhileIdleFailed.java | 4 +-- 7 files changed, 43 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/vendor/MySqlValidConnectionChecker.java b/src/main/java/com/alibaba/druid/pool/vendor/MySqlValidConnectionChecker.java index 3b81c8f453..e4609cfb2c 100644 --- a/src/main/java/com/alibaba/druid/pool/vendor/MySqlValidConnectionChecker.java +++ b/src/main/java/com/alibaba/druid/pool/vendor/MySqlValidConnectionChecker.java @@ -22,6 +22,7 @@ import java.sql.Connection; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; +import java.util.Properties; import com.alibaba.druid.pool.DruidPooledConnection; import com.alibaba.druid.pool.ValidConnectionChecker; @@ -33,23 +34,43 @@ import com.alibaba.druid.util.JdbcUtils; public class MySqlValidConnectionChecker extends ValidConnectionCheckerAdapter implements ValidConnectionChecker, Serializable { - private static final long serialVersionUID = 1L; - private static final Log LOG = LogFactory.getLog(MySqlValidConnectionChecker.class); + private static final long serialVersionUID = 1L; + private static final Log LOG = LogFactory.getLog(MySqlValidConnectionChecker.class); private Class clazz; private Method ping; - private boolean driverHasPingMethod = false; + private boolean usePingMethod = false; public MySqlValidConnectionChecker(){ try { clazz = JdbcUtils.loadDriverClass("com.mysql.jdbc.Connection"); ping = clazz.getMethod("ping"); if (ping != null) { - driverHasPingMethod = true; + usePingMethod = true; } } catch (Exception e) { LOG.warn("Cannot resolve com.mysq.jdbc.Connection.ping method. Will use 'SELECT 1' instead.", e); } + + configFromProperties(System.getProperties()); + } + + @Override + public void configFromProperties(Properties properties) { + String property = properties.getProperty("druid.mysql.usePingMethod"); + if ("true".equals(property)) { + setUsePingMethod(true); + } else if ("false".equals(property)) { + setUsePingMethod(false); + } + } + + public boolean isUsePingMethod() { + return usePingMethod; + } + + public void setUsePingMethod(boolean usePingMethod) { + this.usePingMethod = usePingMethod; } public boolean isValidConnection(Connection conn, String valiateQuery, int validationQueryTimeout) { @@ -62,7 +83,7 @@ public class MySqlValidConnectionChecker extends ValidConnectionCheckerAdapter i return false; } - if (driverHasPingMethod) { + if (usePingMethod) { if (conn instanceof DruidPooledConnection) { conn = ((DruidPooledConnection) conn).getConnection(); } diff --git a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOperator.java b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOperator.java index 294f3ff4a3..b7ec29bb94 100644 --- a/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOperator.java +++ b/src/main/java/com/alibaba/druid/sql/ast/expr/SQLBinaryOperator.java @@ -89,6 +89,14 @@ public enum SQLBinaryOperator { this.priority = priority; } + public String getName() { + return this.name; + } + + public int getPriority() { + return this.priority; + } + public boolean isRelational() { switch (this) { case Equality: diff --git a/src/main/java/com/alibaba/druid/wall/WallFilter.java b/src/main/java/com/alibaba/druid/wall/WallFilter.java index 91070bfd5d..d4957b8fe3 100644 --- a/src/main/java/com/alibaba/druid/wall/WallFilter.java +++ b/src/main/java/com/alibaba/druid/wall/WallFilter.java @@ -587,6 +587,7 @@ public class WallFilter extends FilterAdapter implements WallFilterMBean { } } + //TODO return sql; } diff --git a/src/main/java/com/alibaba/druid/wall/WallProvider.java b/src/main/java/com/alibaba/druid/wall/WallProvider.java index 4659e65e4a..e0360277b1 100644 --- a/src/main/java/com/alibaba/druid/wall/WallProvider.java +++ b/src/main/java/com/alibaba/druid/wall/WallProvider.java @@ -585,11 +585,12 @@ public abstract class WallProvider { } public static T doPrivileged(PrivilegedAction action) { + final Boolean original = privileged.get(); privileged.set(Boolean.TRUE); try { return action.run(); } finally { - privileged.set(null); + privileged.set(original); } } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest5.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest5.java index c9bf17ca9c..6e2d4383f0 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest5.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest5.java @@ -9,7 +9,7 @@ import junit.framework.TestCase; import org.junit.Assert; import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.pool.ValidConnectionChecker; +import com.alibaba.druid.pool.ValidConnectionCheckerAdapter; public class DruidDataSourceTest5 extends TestCase { @@ -25,7 +25,7 @@ public class DruidDataSourceTest5 extends TestCase { dataSource.setTestOnBorrow(false); dataSource.setInitialSize(1); - dataSource.setValidConnectionChecker(new ValidConnectionChecker() { + dataSource.setValidConnectionChecker(new ValidConnectionCheckerAdapter() { @Override public boolean isValidConnection(Connection c, String query, int validationQueryTimeout) { diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_testOnBorrowFailed.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_testOnBorrowFailed.java index 7461907b09..581526d8bf 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_testOnBorrowFailed.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_testOnBorrowFailed.java @@ -10,7 +10,7 @@ import junit.framework.TestCase; import org.junit.Assert; import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.pool.ValidConnectionChecker; +import com.alibaba.druid.pool.ValidConnectionCheckerAdapter; /** * 这个场景测试defaultAutoCommit @@ -28,7 +28,7 @@ public class DruidDataSourceTest_testOnBorrowFailed extends TestCase { dataSource.setUrl("jdbc:mock:xxx"); dataSource.setTestOnBorrow(true); dataSource.setValidationQuery("select 'x'"); - dataSource.setValidConnectionChecker(new ValidConnectionChecker() { + dataSource.setValidConnectionChecker(new ValidConnectionCheckerAdapter() { @Override public boolean isValidConnection(Connection c, String query, int validationQueryTimeout) { diff --git a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_testOnWhileIdleFailed.java b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_testOnWhileIdleFailed.java index e5fd9f6974..ed3cc878ec 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_testOnWhileIdleFailed.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/DruidDataSourceTest_testOnWhileIdleFailed.java @@ -10,7 +10,7 @@ import junit.framework.TestCase; import org.junit.Assert; import com.alibaba.druid.pool.DruidDataSource; -import com.alibaba.druid.pool.ValidConnectionChecker; +import com.alibaba.druid.pool.ValidConnectionCheckerAdapter; /** * 这个场景测试defaultAutoCommit @@ -30,7 +30,7 @@ public class DruidDataSourceTest_testOnWhileIdleFailed extends TestCase { dataSource.setTestWhileIdle(true); dataSource.setTimeBetweenEvictionRunsMillis(20); dataSource.setValidationQuery("select 'x'"); - dataSource.setValidConnectionChecker(new ValidConnectionChecker() { + dataSource.setValidConnectionChecker(new ValidConnectionCheckerAdapter() { @Override public boolean isValidConnection(Connection c, String query, int validationQueryTimeout) {