From 3df3d8b83b9a3db2e3e88a8da0ff8848e9e41864 Mon Sep 17 00:00:00 2001 From: wenshao Date: Fri, 13 May 2011 03:17:43 +0000 Subject: [PATCH] =?UTF-8?q?DruidDataSource=E6=94=AF=E6=8C=81Filter?= 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@45 b9813039-fb51-4c41-a8b9-e21c2acb5095 --- .../druid/pool/DruidDataAbstractSource.java | 15 ++++++++++++ .../alibaba/druid/util/DruidLoaderUtils.java | 24 +++++++++---------- 2 files changed, 27 insertions(+), 12 deletions(-) diff --git a/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java b/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java index e2f0f1e778..ff9d8d0c05 100644 --- a/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java +++ b/src/main/java/com/alibaba/druid/pool/DruidDataAbstractSource.java @@ -34,6 +34,7 @@ import javax.sql.DataSource; import com.alibaba.druid.filter.Filter; import com.alibaba.druid.filter.FilterChainImpl; import com.alibaba.druid.proxy.jdbc.DataSourceProxy; +import com.alibaba.druid.util.DruidLoaderUtils; /** * @author wenshao @@ -586,6 +587,20 @@ public abstract class DruidDataAbstractSource implements DataSource, DataSourceP public List getFilters() { return filters; } + + public void setFilters(String filters) throws SQLException { + this.filters.clear(); + + if (filters == null || filters.length() == 0) { + return; + } + + String[] filterArray = filters.split("\\,"); + + for (String item : filterArray) { + DruidLoaderUtils.loadFilter(this.filters, item); + } + } public long getCreateTimespanNano() { return createTimespan; diff --git a/src/main/java/com/alibaba/druid/util/DruidLoaderUtils.java b/src/main/java/com/alibaba/druid/util/DruidLoaderUtils.java index 1e238ba0f2..56bc0daaa7 100644 --- a/src/main/java/com/alibaba/druid/util/DruidLoaderUtils.java +++ b/src/main/java/com/alibaba/druid/util/DruidLoaderUtils.java @@ -56,12 +56,12 @@ public class DruidLoaderUtils { } - public static void loadFilter(List filterConfigList, String filterItem) throws SQLException { - if (filterItem.length() == 0) { + public static void loadFilter(List filters, String filterName) throws SQLException { + if (filterName.length() == 0) { return; } - String filterClassNames = FilterManager.getFilter(filterItem); + String filterClassNames = FilterManager.getFilter(filterName); if (filterClassNames != null) { filterClassNames = filterClassNames.trim(); } @@ -69,7 +69,7 @@ public class DruidLoaderUtils { if (filterClassNames != null) { for (String filterClassName : filterClassNames.split(",")) { - if (!isExist(filterConfigList, filterClassName)) { + if (!isExist(filters, filterClassName)) { Class filterClass = loadClass(filterClassName); if (filterClass != null) { @@ -78,27 +78,27 @@ public class DruidLoaderUtils { try { filter = (Filter) filterClass.newInstance(); } catch (InstantiationException e) { - throw new SQLException("load managed jdbc driver event listener error. " + filterItem, e); + throw new SQLException("load managed jdbc driver event listener error. " + filterName, e); } catch (IllegalAccessException e) { - throw new SQLException("load managed jdbc driver event listener error. " + filterItem, e); + throw new SQLException("load managed jdbc driver event listener error. " + filterName, e); } - filterConfigList.add(filter); + filters.add(filter); } } } } else { - if (!isExist(filterConfigList, filterItem)) { - Class filterClass = loadClass(filterItem); + if (!isExist(filters, filterName)) { + Class filterClass = loadClass(filterName); if (filterClass != null) { try { Filter filter = (Filter) filterClass.newInstance(); - filterConfigList.add(filter); + filters.add(filter); } catch (InstantiationException e) { - throw new SQLException("load managed jdbc driver event listener error. " + filterItem, e); + throw new SQLException("load managed jdbc driver event listener error. " + filterName, e); } catch (IllegalAccessException e) { - throw new SQLException("load managed jdbc driver event listener error. " + filterItem, e); + throw new SQLException("load managed jdbc driver event listener error. " + filterName, e); } } }