diff --git a/src/main/java/com/alibaba/druid/wall/WallConfig.java b/src/main/java/com/alibaba/druid/wall/WallConfig.java index d86e6f1b0d..5b7ae9ba7d 100644 --- a/src/main/java/com/alibaba/druid/wall/WallConfig.java +++ b/src/main/java/com/alibaba/druid/wall/WallConfig.java @@ -7,7 +7,7 @@ import java.util.Set; import com.alibaba.druid.wall.spi.WallVisitorUtils; -public class WallConfig { +public class WallConfig implements WallConfigMBean { private boolean noneBaseStatementAllow = false; diff --git a/src/main/java/com/alibaba/druid/wall/WallConfigMBean.java b/src/main/java/com/alibaba/druid/wall/WallConfigMBean.java new file mode 100644 index 0000000000..a85847486d --- /dev/null +++ b/src/main/java/com/alibaba/druid/wall/WallConfigMBean.java @@ -0,0 +1,119 @@ +package com.alibaba.druid.wall; + +import java.util.Set; + +public interface WallConfigMBean { + + boolean isInited(); + + String getDir(); + + void setDir(String dir); + + void init(); + + void loadConfig(String dir); + + boolean isNoneBaseStatementAllow(); + + void setNoneBaseStatementAllow(boolean noneBaseStatementAllow); + + boolean isTruncateAllow(); + + void setTruncateAllow(boolean truncateAllow); + + boolean isSelelctAllow(); + + void setSelelctAllow(boolean selelctAllow); + + boolean isSelectIntoAllow(); + + void setSelectIntoAllow(boolean selectIntoAllow); + + boolean isSelectIntoOutfileAllow(); + + void setSelectIntoOutfileAllow(boolean selectIntoOutfileAllow); + + boolean isSelectUnionCheck(); + + void setSelectUnionCheck(boolean selectUnionCheck); + + boolean isSelectWhereAlwayTrueCheck(); + + void setSelectWhereAlwayTrueCheck(boolean selectWhereAlwayTrueCheck); + + boolean isSelectHavingAlwayTrueCheck(); + + void setSelectHavingAlwayTrueCheck(boolean selectHavingAlwayTrueCheck); + + boolean isDeleteAllow(); + + void setDeleteAllow(boolean deleteAllow); + + boolean isDeleteWhereAlwayTrueCheck(); + + void setDeleteWhereAlwayTrueCheck(boolean deleteWhereAlwayTrueCheck); + + boolean isUpdateAllow(); + + void setUpdateAllow(boolean updateAllow); + + boolean isUpdateWhereAlayTrueCheck(); + + void setUpdateWhereAlayTrueCheck(boolean updateWhereAlayTrueCheck); + + boolean isInsertAllow(); + + void setInsertAllow(boolean insertAllow); + + boolean isMergeAllow(); + + void setMergeAllow(boolean mergeAllow); + + boolean isMultiStatementAllow(); + + void setMultiStatementAllow(boolean multiStatementAllow); + + boolean isSchemaCheck(); + + void setSchemaCheck(boolean schemaCheck); + + boolean isTableCheck(); + + void setTableCheck(boolean tableCheck); + + boolean isFunctionCheck(); + + void setFunctionCheck(boolean functionCheck); + + boolean isVariantCheck(); + + void setVariantCheck(boolean variantCheck); + + boolean isObjectCheck(); + + void setObjectCheck(boolean objectCheck); + + boolean isCommentAllow(); + + void setCommentAllow(boolean commentAllow); + + Set getPermitFunctions(); + + Set getPermitTables(); + + Set getPermitSchemas(); + + Set getPermitVariants(); + + Set getPermitObjects(); + + Set getReadOnlyTables(); + + boolean isPermitObjects(String name); + + boolean isPermitSchema(String name); + + boolean isPermitFunction(String name); + +} diff --git a/src/main/java/com/alibaba/druid/wall/WallFilterMBean.java b/src/main/java/com/alibaba/druid/wall/WallFilterMBean.java index 4f554cc6c7..1debadb3b6 100644 --- a/src/main/java/com/alibaba/druid/wall/WallFilterMBean.java +++ b/src/main/java/com/alibaba/druid/wall/WallFilterMBean.java @@ -1,5 +1,7 @@ package com.alibaba.druid.wall; +import java.util.Set; + public interface WallFilterMBean { String getDbType(); @@ -15,4 +17,6 @@ public interface WallFilterMBean { boolean isInited(); void clearProviderCache(); + + Set getProviderWhiteList(); } diff --git a/src/test/java/com/alibaba/druid/bvt/pool/SpringFilterTest.java b/src/test/java/com/alibaba/druid/bvt/pool/SpringFilterTest.java index a7a84e7583..7b36079014 100644 --- a/src/test/java/com/alibaba/druid/bvt/pool/SpringFilterTest.java +++ b/src/test/java/com/alibaba/druid/bvt/pool/SpringFilterTest.java @@ -2,6 +2,7 @@ package com.alibaba.druid.bvt.pool; import java.sql.Connection; import java.sql.SQLException; +import java.sql.Statement; import java.util.Properties; import java.util.concurrent.atomic.AtomicLong; @@ -35,6 +36,12 @@ public class SpringFilterTest extends TestCase { DataSource dataSource = (DataSource) context.getBean("dataSource"); Connection conn = dataSource.getConnection(); + + Statement stmt = conn.createStatement(); + stmt.execute("select 1"); + stmt.execute("select 2"); + stmt.execute("select 1"); + stmt.close(); conn.close(); TestFilter filter = (TestFilter) context.getBean("test-filter"); diff --git a/src/test/java/com/alibaba/druid/spring/MBeanServerFactoryBean.java b/src/test/java/com/alibaba/druid/spring/MBeanServerFactoryBean.java new file mode 100755 index 0000000000..9ca2f6c909 --- /dev/null +++ b/src/test/java/com/alibaba/druid/spring/MBeanServerFactoryBean.java @@ -0,0 +1,30 @@ +/* + * Copyright 2011 Alibaba.com All right reserved. This software is the + * confidential and proprietary information of Alibaba.com ("Confidential + * Information"). You shall not disclose such Confidential Information and shall + * use it only in accordance with the terms of the license agreement you entered + * into with Alibaba.com. + */ +package com.alibaba.druid.spring; + +import java.lang.management.ManagementFactory; + +import javax.management.MBeanServer; + +import org.springframework.beans.factory.FactoryBean; + +public class MBeanServerFactoryBean implements FactoryBean { + + public MBeanServer getObject() throws Exception { + return ManagementFactory.getPlatformMBeanServer(); + } + + public Class getObjectType() { + return ManagementFactory.getPlatformMBeanServer().getClass(); + } + + public boolean isSingleton() { + return true; + } + +} diff --git a/src/test/resources/com/alibaba/druid/pool/spring-config-1.xml b/src/test/resources/com/alibaba/druid/pool/spring-config-1.xml index 40e604ac01..cb4de6ef20 100644 --- a/src/test/resources/com/alibaba/druid/pool/spring-config-1.xml +++ b/src/test/resources/com/alibaba/druid/pool/spring-config-1.xml @@ -22,8 +22,8 @@ http://www.springframework.org/schema/aop http://www.springframework.org/schema/ - + jdbc:mock: @@ -42,4 +42,20 @@ http://www.springframework.org/schema/aop http://www.springframework.org/schema/ + + + + + + + + + + + +