mirror of
https://github.com/alibaba/druid.git
synced 2023-03-04 19:17:16 +00:00
DruidDataSource支持Filter
git-svn-id: http://code.alibabatech.com/svn/druid/trunk@45 b9813039-fb51-4c41-a8b9-e21c2acb5095
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user