Search in sources :

Example 1 with PerUserPoolDataSource

use of org.apache.commons.dbcp.datasources.PerUserPoolDataSource in project wso2-synapse by wso2.

the class DataSourceFactory method createDataSource.

/**
 * Factory method to create a DataSource based on provided information
 * which is encapsulated in the DataSourceInformation object.
 *
 * @param dataSourceInformation Information about DataSource
 * @return DataSource Instance if one can be created ,
 *         otherwise null or exception if provided details are not valid or enough to create
 *         a DataSource
 */
public static DataSource createDataSource(DataSourceInformation dataSourceInformation) {
    String dsType = dataSourceInformation.getType();
    String driver = dataSourceInformation.getDriver();
    if (driver == null || "".equals(driver)) {
        handleException("Database driver class name cannot be found.");
    }
    String url = dataSourceInformation.getUrl();
    if (url == null || "".equals(url)) {
        handleException("Database connection URL cannot be found.");
    }
    String user = dataSourceInformation.getSecretInformation().getUser();
    String password = dataSourceInformation.getSecretInformation().getResolvedSecret();
    int defaultTransactionIsolation = dataSourceInformation.getDefaultTransactionIsolation();
    if (DataSourceInformation.BASIC_DATA_SOURCE.equals(dsType)) {
        BasicDataSource basicDataSource = new BasicDataSource();
        basicDataSource.setDriverClassName(driver);
        basicDataSource.setUrl(url);
        if (user != null && !"".equals(user)) {
            basicDataSource.setUsername(user);
        }
        if (password != null && !"".equals(password)) {
            basicDataSource.setPassword(password);
        }
        basicDataSource.setMaxActive(dataSourceInformation.getMaxActive());
        basicDataSource.setMaxIdle(dataSourceInformation.getMaxIdle());
        basicDataSource.setMaxWait(dataSourceInformation.getMaxWait());
        basicDataSource.setMinIdle(dataSourceInformation.getMinIdle());
        basicDataSource.setDefaultAutoCommit(dataSourceInformation.isDefaultAutoCommit());
        basicDataSource.setDefaultReadOnly(dataSourceInformation.isDefaultReadOnly());
        basicDataSource.setTestOnBorrow(dataSourceInformation.isTestOnBorrow());
        basicDataSource.setTestOnReturn(dataSourceInformation.isTestOnReturn());
        basicDataSource.setTestWhileIdle(dataSourceInformation.isTestWhileIdle());
        basicDataSource.setMinEvictableIdleTimeMillis(dataSourceInformation.getMinEvictableIdleTimeMillis());
        basicDataSource.setTimeBetweenEvictionRunsMillis(dataSourceInformation.getTimeBetweenEvictionRunsMillis());
        basicDataSource.setNumTestsPerEvictionRun(dataSourceInformation.getNumTestsPerEvictionRun());
        basicDataSource.setMaxOpenPreparedStatements(dataSourceInformation.getMaxOpenPreparedStatements());
        basicDataSource.setAccessToUnderlyingConnectionAllowed(dataSourceInformation.isAccessToUnderlyingConnectionAllowed());
        basicDataSource.setInitialSize(dataSourceInformation.getInitialSize());
        basicDataSource.setPoolPreparedStatements(dataSourceInformation.isPoolPreparedStatements());
        if (defaultTransactionIsolation != -1) {
            basicDataSource.setDefaultTransactionIsolation(defaultTransactionIsolation);
        }
        String defaultCatalog = dataSourceInformation.getDefaultCatalog();
        if (defaultCatalog != null && !"".equals(defaultCatalog)) {
            basicDataSource.setDefaultCatalog(defaultCatalog);
        }
        String validationQuery = dataSourceInformation.getValidationQuery();
        if (validationQuery != null && !"".equals(validationQuery)) {
            basicDataSource.setValidationQuery(validationQuery);
        }
        return basicDataSource;
    } else if (DataSourceInformation.PER_USER_POOL_DATA_SOURCE.equals(dsType)) {
        DriverAdapterCPDS adapterCPDS = new DriverAdapterCPDS();
        try {
            adapterCPDS.setDriver(driver);
        } catch (ClassNotFoundException e) {
            handleException("Error setting driver : " + driver + " in DriverAdapterCPDS", e);
        }
        adapterCPDS.setUrl(url);
        if (user != null && !"".equals(user)) {
            adapterCPDS.setUser(user);
        }
        if (password != null && !"".equals(password)) {
            adapterCPDS.setPassword(password);
        }
        adapterCPDS.setPoolPreparedStatements(dataSourceInformation.isPoolPreparedStatements());
        adapterCPDS.setMaxIdle(dataSourceInformation.getMaxIdle());
        PerUserPoolDataSource perUserPoolDataSource = new PerUserPoolDataSource();
        perUserPoolDataSource.setConnectionPoolDataSource(adapterCPDS);
        perUserPoolDataSource.setDefaultMaxActive(dataSourceInformation.getMaxActive());
        perUserPoolDataSource.setDefaultMaxIdle(dataSourceInformation.getMaxIdle());
        perUserPoolDataSource.setDefaultMaxWait((int) dataSourceInformation.getMaxWait());
        perUserPoolDataSource.setDefaultAutoCommit(dataSourceInformation.isDefaultAutoCommit());
        perUserPoolDataSource.setDefaultReadOnly(dataSourceInformation.isDefaultReadOnly());
        perUserPoolDataSource.setTestOnBorrow(dataSourceInformation.isTestOnBorrow());
        perUserPoolDataSource.setTestOnReturn(dataSourceInformation.isTestOnReturn());
        perUserPoolDataSource.setTestWhileIdle(dataSourceInformation.isTestWhileIdle());
        perUserPoolDataSource.setMinEvictableIdleTimeMillis((int) dataSourceInformation.getMinEvictableIdleTimeMillis());
        perUserPoolDataSource.setTimeBetweenEvictionRunsMillis((int) dataSourceInformation.getTimeBetweenEvictionRunsMillis());
        perUserPoolDataSource.setNumTestsPerEvictionRun(dataSourceInformation.getNumTestsPerEvictionRun());
        if (defaultTransactionIsolation != -1) {
            perUserPoolDataSource.setDefaultTransactionIsolation(defaultTransactionIsolation);
        }
        String validationQuery = dataSourceInformation.getValidationQuery();
        if (validationQuery != null && !"".equals(validationQuery)) {
            perUserPoolDataSource.setValidationQuery(validationQuery);
        }
        return perUserPoolDataSource;
    } else {
        handleException("Unsupported DataSource : " + dsType);
    }
    return null;
}
Also used : DriverAdapterCPDS(org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS) PerUserPoolDataSource(org.apache.commons.dbcp.datasources.PerUserPoolDataSource) BasicDataSource(org.apache.commons.dbcp.BasicDataSource)

Aggregations

BasicDataSource (org.apache.commons.dbcp.BasicDataSource)1 DriverAdapterCPDS (org.apache.commons.dbcp.cpdsadapter.DriverAdapterCPDS)1 PerUserPoolDataSource (org.apache.commons.dbcp.datasources.PerUserPoolDataSource)1