DruidDataSource支持Filter

git-svn-id: http://code.alibabatech.com/svn/druid/trunk@45 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
wenshao
2011-05-13 03:17:43 +00:00
parent fed8ac01a8
commit 3df3d8b83b
2 changed files with 27 additions and 12 deletions
@@ -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<szujobs@hotmail.com>
@@ -586,6 +587,20 @@ public abstract class DruidDataAbstractSource implements DataSource, DataSourceP
public List<Filter> 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;
@@ -56,12 +56,12 @@ public class DruidLoaderUtils {
}
public static void loadFilter(List<Filter> filterConfigList, String filterItem) throws SQLException {
if (filterItem.length() == 0) {
public static void loadFilter(List<Filter> 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);
}
}
}