Search in sources :

Example 6 with Filter

use of com.alibaba.druid.filter.Filter in project druid by alibaba.

the class HoldableUnsupportTest method setUp.

protected void setUp() throws Exception {
    dataSource = new DruidDataSource();
    dataSource.setUrl("jdbc:mock:xxx");
    Filter filter = new FilterAdapter() {

        @Override
        public int connection_getHoldability(FilterChain chain, ConnectionProxy connection) throws SQLException {
            throw new UnsupportedOperationException();
        }
    };
    dataSource.getProxyFilters().add(filter);
}
Also used : Filter(com.alibaba.druid.filter.Filter) FilterChain(com.alibaba.druid.filter.FilterChain) FilterAdapter(com.alibaba.druid.filter.FilterAdapter) DruidDataSource(com.alibaba.druid.pool.DruidDataSource) ConnectionProxy(com.alibaba.druid.proxy.jdbc.ConnectionProxy)

Example 7 with Filter

use of com.alibaba.druid.filter.Filter in project druid by alibaba.

the class DruidLoaderUtilsTest method testLoadFilter.

public void testLoadFilter() throws SQLException {
    List<Filter> filters = new ArrayList<Filter>();
    // log4j
    String filterItem = "log4j";
    FilterManager.loadFilter(filters, filterItem);
    Filter filterConfig = filters.get(0);
    Assert.assertNotNull(filterConfig);
    Assert.assertEquals("com.alibaba.druid.filter.logging.Log4jFilter", filterConfig.getClass().getName());
    // stat
    filterItem = "stat";
    filters.clear();
    FilterManager.loadFilter(filters, filterItem);
    filterConfig = filters.get(0);
    Assert.assertNotNull(filterConfig);
    Assert.assertEquals("com.alibaba.druid.filter.stat.StatFilter", filterConfig.getClass().getName());
    // default
    filterItem = "default";
    filters.clear();
    FilterManager.loadFilter(filters, filterItem);
    filterConfig = filters.get(0);
    Assert.assertNotNull(filterConfig);
    Assert.assertEquals("com.alibaba.druid.filter.stat.StatFilter", filterConfig.getClass().getName());
    // counter
    filterItem = "stat";
    filters.clear();
    FilterManager.loadFilter(filters, filterItem);
    filterConfig = filters.get(0);
    Assert.assertNotNull(filterConfig);
    Assert.assertEquals("com.alibaba.druid.filter.stat.StatFilter", filterConfig.getClass().getName());
    // commonLogging
    filterItem = "commonLogging";
    filters.clear();
    FilterManager.loadFilter(filters, filterItem);
    filterConfig = filters.get(0);
    Assert.assertNotNull(filterConfig);
    Assert.assertEquals("com.alibaba.druid.filter.logging.CommonsLogFilter", filterConfig.getClass().getName());
    // encoding
    filterItem = "encoding";
    filters.clear();
    FilterManager.loadFilter(filters, filterItem);
    filterConfig = filters.get(0);
    Assert.assertNotNull(filterConfig);
    Assert.assertEquals("com.alibaba.druid.filter.encoding.EncodingConvertFilter", filterConfig.getClass().getName());
    // 判定重复
    filterItem = "stat";
    filters.clear();
    FilterManager.loadFilter(filters, filterItem);
    filterItem = "default";
    FilterManager.loadFilter(filters, filterItem);
    for (Iterator<Filter> iterator = filters.iterator(); iterator.hasNext(); ) {
        Filter filter = (Filter) iterator.next();
        System.out.println(filter.getClass().getName());
    }
// default
}
Also used : Filter(com.alibaba.druid.filter.Filter) ArrayList(java.util.ArrayList)

Example 8 with Filter

use of com.alibaba.druid.filter.Filter in project druid by alibaba.

the class DruidDataSource method initFromWrapDriverUrl.

private void initFromWrapDriverUrl() throws SQLException {
    if (!jdbcUrl.startsWith(DruidDriver.DEFAULT_PREFIX)) {
        return;
    }
    DataSourceProxyConfig config = DruidDriver.parseConfig(jdbcUrl, null);
    this.driverClass = config.getRawDriverClassName();
    LOG.error("error url : '" + jdbcUrl + "', it should be : '" + config.getRawUrl() + "'");
    this.jdbcUrl = config.getRawUrl();
    if (this.name == null) {
        this.name = config.getName();
    }
    for (Filter filter : config.getFilters()) {
        addFilter(filter);
    }
}
Also used : DataSourceProxyConfig(com.alibaba.druid.proxy.jdbc.DataSourceProxyConfig) WallFilter(com.alibaba.druid.wall.WallFilter) Filter(com.alibaba.druid.filter.Filter)

Example 9 with Filter

use of com.alibaba.druid.filter.Filter in project druid by alibaba.

the class DruidDataSource method setConnectProperties.

@SuppressWarnings("rawtypes")
public void setConnectProperties(Properties properties) {
    if (properties == null) {
        properties = new Properties();
    }
    boolean equals;
    if (properties.size() == this.connectProperties.size()) {
        equals = true;
        for (Map.Entry entry : properties.entrySet()) {
            Object value = this.connectProperties.get(entry.getKey());
            Object entryValue = entry.getValue();
            if (value == null && entryValue != null) {
                equals = false;
                break;
            }
            if (!value.equals(entry.getValue())) {
                equals = false;
                break;
            }
        }
    } else {
        equals = false;
    }
    if (!equals) {
        if (inited && LOG.isInfoEnabled()) {
            LOG.info("connectProperties changed : " + this.connectProperties + " -> " + properties);
        }
        configFromPropety(properties);
        for (Filter filter : this.filters) {
            filter.configFromProperties(properties);
        }
        if (exceptionSorter != null) {
            exceptionSorter.configFromProperties(properties);
        }
        if (validConnectionChecker != null) {
            validConnectionChecker.configFromProperties(properties);
        }
        if (statLogger != null) {
            statLogger.configFromProperties(properties);
        }
    }
    this.connectProperties = properties;
}
Also used : WallFilter(com.alibaba.druid.wall.WallFilter) Filter(com.alibaba.druid.filter.Filter) Properties(java.util.Properties) Map(java.util.Map) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap)

Example 10 with Filter

use of com.alibaba.druid.filter.Filter in project druid by alibaba.

the class DruidDataSource method addFilter.

/**
     * 会去重复
     * 
     * @param filter
     */
private void addFilter(Filter filter) {
    boolean exists = false;
    for (Filter initedFilter : this.filters) {
        if (initedFilter.getClass() == filter.getClass()) {
            exists = true;
            break;
        }
    }
    if (!exists) {
        filter.init(this);
        this.filters.add(filter);
    }
}
Also used : WallFilter(com.alibaba.druid.wall.WallFilter) Filter(com.alibaba.druid.filter.Filter)

Aggregations

Filter (com.alibaba.druid.filter.Filter)16 WallFilter (com.alibaba.druid.wall.WallFilter)7 SQLException (java.sql.SQLException)4 ArrayList (java.util.ArrayList)3 FilterChainImpl (com.alibaba.druid.filter.FilterChainImpl)2 DruidDataSource (com.alibaba.druid.pool.DruidDataSource)2 DataSourceProxyConfig (com.alibaba.druid.proxy.jdbc.DataSourceProxyConfig)2 ConnectionEvent (javax.sql.ConnectionEvent)2 ConnectionEventListener (javax.sql.ConnectionEventListener)2 TransactionTimeoutException (com.alibaba.druid.TransactionTimeoutException)1 AutoLoad (com.alibaba.druid.filter.AutoLoad)1 FilterAdapter (com.alibaba.druid.filter.FilterAdapter)1 FilterChain (com.alibaba.druid.filter.FilterChain)1 MockDriver (com.alibaba.druid.mock.MockDriver)1 ConnectionProxy (com.alibaba.druid.proxy.jdbc.ConnectionProxy)1 DataSourceProxy (com.alibaba.druid.proxy.jdbc.DataSourceProxy)1 DataSourceProxyImpl (com.alibaba.druid.proxy.jdbc.DataSourceProxyImpl)1 JdbcDataSourceStat (com.alibaba.druid.stat.JdbcDataSourceStat)1 WallConfig (com.alibaba.druid.wall.WallConfig)1 Connection (java.sql.Connection)1