in modules/commons/src/main/java/org/apache/synapse/commons/datasource/factory/DataSourceFactory.java [51:186]
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;
}