Support dbcp2 (and thus commons-pool2) in addition to dbcp1
This commit is contained in:
@@ -18,6 +18,7 @@ ext {
|
||||
jedisVersion = "2.4.1"
|
||||
|
||||
commonDbcpVersion = "1.3"
|
||||
commonDbcp2Version = "2.0"
|
||||
|
||||
mysqlDriverVersion = "5.0.5"
|
||||
mariadbDriverVersion = "1.1.3"
|
||||
|
||||
@@ -18,6 +18,13 @@ dependencies {
|
||||
optional("org.springframework:spring-context-support:$springVersion")
|
||||
optional("org.apache.tomcat:tomcat-jdbc:$tomcatVersion")
|
||||
optional("org.apache.tomcat:tomcat-dbcp:$tomcatVersion")
|
||||
optional("org.apache.commons:commons-dbcp2:$commonDbcp2Version") {
|
||||
exclude(module: 'commons-logging')
|
||||
exclude(module: 'commons-pool')
|
||||
exclude(module: 'xerces')
|
||||
exclude(module: 'xercesImpl')
|
||||
exclude(module: 'xml-apis')
|
||||
}
|
||||
optional("commons-dbcp:commons-dbcp:$commonDbcpVersion") {
|
||||
exclude(module: 'commons-logging')
|
||||
exclude(module: 'commons-pool')
|
||||
|
||||
@@ -23,6 +23,11 @@ public class BasicDbcpPooledDataSourceCreator<SI extends RelationalServiceInfo>
|
||||
org.apache.commons.dbcp.BasicDataSource ds = new org.apache.commons.dbcp.BasicDataSource();
|
||||
setBasicDataSourceProperties(ds, serviceInfo, serviceConnectorConfig, driverClassName, validationQuery);
|
||||
return ds;
|
||||
} else if (hasClass("org.apache.commons.dbcp2.BasicDataSource")) {
|
||||
logger.info("Found DBCP on the classpath. Using it for DataSource connection pooling.");
|
||||
org.apache.commons.dbcp2.BasicDataSource ds = new org.apache.commons.dbcp2.BasicDataSource();
|
||||
setBasicDataSourceProperties(ds, serviceInfo, serviceConnectorConfig, driverClassName, validationQuery);
|
||||
return ds;
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
package org.springframework.cloud.config;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
public class CommonPoolCloudConfigTestHelper {
|
||||
|
||||
public static void assertCommonsPoolProperties(Object pool, int maxActive, int minIdle, long maxWait) {
|
||||
assertEquals(maxActive, getValue(pool, "maxActive", "maxTotal"));
|
||||
assertEquals(minIdle, getValue(pool, "minIdle"));
|
||||
assertEquals(maxWait, getValue(pool, "maxWait", "maxWaitMillis"));
|
||||
}
|
||||
|
||||
protected static Object getValue(Object object, String... fieldNames) {
|
||||
for (String fieldName : fieldNames) {
|
||||
try {
|
||||
return ReflectionTestUtils.getField(object, fieldName);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -13,12 +13,10 @@ import org.springframework.test.util.ReflectionTestUtils;
|
||||
* @author Ramnivas Laddad
|
||||
*
|
||||
*/
|
||||
public class DataSourceCloudConfigTestHelper {
|
||||
public class DataSourceCloudConfigTestHelper extends CommonPoolCloudConfigTestHelper {
|
||||
|
||||
public static void assertPoolProperties(DataSource dataSource, int maxActive, int minIdle, long maxWait) {
|
||||
assertEquals(maxActive, ReflectionTestUtils.getField(dataSource, "maxActive"));
|
||||
assertEquals(minIdle, ReflectionTestUtils.getField(dataSource, "minIdle"));
|
||||
assertEquals(maxWait, ReflectionTestUtils.getField(dataSource, "maxWait"));
|
||||
assertCommonsPoolProperties(dataSource, maxActive, minIdle, maxWait);
|
||||
}
|
||||
|
||||
public static void assertConnectionProperties(DataSource dataSource, Properties connectionProp) {
|
||||
|
||||
@@ -1,7 +1,5 @@
|
||||
package org.springframework.cloud.config;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
|
||||
import org.springframework.data.redis.connection.RedisConnectionFactory;
|
||||
import org.springframework.test.util.ReflectionTestUtils;
|
||||
|
||||
@@ -12,22 +10,11 @@ import redis.clients.jedis.JedisPoolConfig;
|
||||
* @author Ramnivas Laddad
|
||||
*
|
||||
*/
|
||||
public class RedisConnectionFactoryCloudConfigTestHelper {
|
||||
public class RedisConnectionFactoryCloudConfigTestHelper extends CommonPoolCloudConfigTestHelper {
|
||||
|
||||
public static void assertPoolProperties(RedisConnectionFactory connector, int maxActive, int minIdle, long maxWait) {
|
||||
JedisPoolConfig poolConfig = (JedisPoolConfig) ReflectionTestUtils.getField(connector, "poolConfig");
|
||||
assertEquals(maxActive, getValue(poolConfig, "maxActive", "maxTotal"));
|
||||
assertEquals(minIdle, getValue(poolConfig, "minIdle"));
|
||||
assertEquals(maxWait, getValue(poolConfig, "maxWait", "maxWaitMillis"));
|
||||
assertCommonsPoolProperties(poolConfig, maxActive, minIdle, maxWait);
|
||||
}
|
||||
|
||||
private static Object getValue(Object object, String... fieldNames) {
|
||||
for (String fieldName : fieldNames) {
|
||||
try {
|
||||
return ReflectionTestUtils.getField(object, fieldName);
|
||||
} catch (IllegalArgumentException ex) {
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -9,6 +9,7 @@ import java.util.Properties;
|
||||
import javax.sql.DataSource;
|
||||
|
||||
import org.junit.Test;
|
||||
import org.springframework.cloud.config.DataSourceCloudConfigTestHelper;
|
||||
import org.springframework.cloud.service.PooledServiceConnectorConfig.PoolConfig;
|
||||
import org.springframework.cloud.service.common.RelationalServiceInfo;
|
||||
import org.springframework.cloud.service.relational.DataSourceConfig.ConnectionConfig;
|
||||
@@ -42,7 +43,7 @@ public abstract class AbstractDataSourceCreatorTest<C extends DataSourceCreator<
|
||||
DataSource dataSource = getCreator().create(relationalServiceInfo, config);
|
||||
|
||||
assertDataSourceProperties(relationalServiceInfo, dataSource);
|
||||
assertPoolProperties(dataSource, 5, 0, 100);
|
||||
DataSourceCloudConfigTestHelper.assertPoolProperties(dataSource, 5, 0, 100);
|
||||
|
||||
Properties connectionProp = new Properties();
|
||||
connectionProp.put("foo", "bar");
|
||||
@@ -63,9 +64,4 @@ public abstract class AbstractDataSourceCreatorTest<C extends DataSourceCreator<
|
||||
assertTrue(((String) ReflectionTestUtils.invokeGetterMethod(dataSource, "validationQuery")).startsWith(getValidationQueryStart()));
|
||||
}
|
||||
|
||||
private void assertPoolProperties(DataSource dataSource, int maxActive, int minIdle, long maxWait) {
|
||||
assertEquals(maxActive, ReflectionTestUtils.getField(dataSource, "maxActive"));
|
||||
assertEquals(minIdle, ReflectionTestUtils.getField(dataSource, "minIdle"));
|
||||
assertEquals(maxWait, ReflectionTestUtils.getField(dataSource, "maxWait"));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user