Add username and password properties as well as cleanup validation (not complete).

pull/60/head
Brett Wooldridge 11 years ago
parent 783bb5ae29
commit 8ec2953efd

@ -31,7 +31,6 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.zaxxer.hikari.proxy.JavassistProxyFactory;
import com.zaxxer.hikari.util.DriverDataSource;
import com.zaxxer.hikari.util.PropertyBeanSetter;
public class HikariConfig implements HikariConfigMBean
@ -62,8 +61,10 @@ public class HikariConfig implements HikariConfigMBean
private String connectionTestQuery;
private String dataSourceClassName;
private String jdbcUrl;
private String password;
private String poolName;
private String transactionIsolationName;
private String username;
private boolean isAutoCommit;
private boolean isReadOnly;
private boolean isInitializationFailFast;
@ -529,6 +530,24 @@ public class HikariConfig implements HikariConfigMBean
this.maxPoolSize = maxPoolSize;
}
/**
* Get the default password to use for DataSource.getConnection(username, password) calls.
* @return the password
*/
public String getPassword()
{
return password;
}
/**
* Set the default password to use for DataSource.getConnection(username, password) calls.
* @param password the password
*/
public void setPassword(String password)
{
this.password = password;
}
/** {@inheritDoc} */
@Override
public String getPoolName()
@ -564,10 +583,32 @@ public class HikariConfig implements HikariConfigMBean
this.transactionIsolationName = isolationLevel;
}
/**
* Get the default username used for DataSource.getConnection(username, password) calls.
*
* @return the username
*/
public String getUsername()
{
return username;
}
/**
* Set the default username used for DataSource.getConnection(username, password) calls.
*
* @param username the username
*/
public void setUsername(String username)
{
this.username = username;
}
public void validate()
{
Logger logger = LoggerFactory.getLogger(getClass());
validateNumerics();
if (connectionCustomizerClassName != null && connectionCustomizer == null)
{
try
@ -582,35 +623,59 @@ public class HikariConfig implements HikariConfigMBean
}
}
if (connectionTimeout == Integer.MAX_VALUE)
{
logger.warn("No connection wait timeout is set, this might cause an infinite wait.");
}
else if (connectionTimeout < TimeUnit.MILLISECONDS.toMillis(100))
{
logger.warn("connectionTimeout is less than 100ms, did you specify the wrong time unit? Using default instead.");
connectionTimeout = CONNECTION_TIMEOUT;
}
if (jdbcUrl != null)
{
logger.info("Really, a JDBC URL? It's time to party like it's 1999!");
dataSource = new DriverDataSource(jdbcUrl, dataSourceProperties);
}
else if (dataSource == null && dataSourceClassName == null)
{
logger.error("one of either dataSource or dataSourceClassName must be specified");
throw new IllegalStateException("one of either dataSource or dataSourceClassName must be specified");
logger.error("one of either dataSource, dataSourceClassName, or jdbcUrl and driverClassName must be specified");
throw new IllegalArgumentException("one of either dataSource or dataSourceClassName must be specified");
}
else if (dataSource != null && dataSourceClassName != null)
{
logger.warn("both dataSource and dataSourceClassName are specified, ignoring dataSourceClassName");
}
if (!isJdbc4connectionTest && connectionTestQuery == null)
{
logger.error("Either jdbc4ConnectionTest must be enabled or a connectionTestQuery must be specified.");
throw new IllegalStateException("Either jdbc4ConnectionTest must be enabled or a connectionTestQuery must be specified.");
}
if (transactionIsolationName != null)
{
try
{
Field field = Connection.class.getField(transactionIsolationName);
int level = field.getInt(null);
this.transactionIsolation = level;
}
catch (Exception e)
{
throw new IllegalArgumentException("Invalid transaction isolation value: " + transactionIsolationName);
}
}
}
private void validateNumerics()
{
Logger logger = LoggerFactory.getLogger(getClass());
if (connectionTimeout == Integer.MAX_VALUE)
{
logger.warn("No connection wait timeout is set, this might cause an infinite wait.");
}
else if (connectionTimeout < TimeUnit.MILLISECONDS.toMillis(100))
{
logger.warn("connectionTimeout is less than 100ms, did you specify the wrong time unit? Using default instead.");
connectionTimeout = CONNECTION_TIMEOUT;
}
if (idleTimeout < 0)
{
logger.error("idleTimeout cannot be negative.");
throw new IllegalStateException("idleTimeout cannot be negative.");
throw new IllegalArgumentException("idleTimeout cannot be negative.");
}
else if (idleTimeout < TimeUnit.SECONDS.toMillis(30) && idleTimeout != 0)
{
@ -618,12 +683,6 @@ public class HikariConfig implements HikariConfigMBean
idleTimeout = IDLE_TIMEOUT;
}
if (!isJdbc4connectionTest && connectionTestQuery == null)
{
logger.error("Either jdbc4ConnectionTest must be enabled or a connectionTestQuery must be specified.");
throw new IllegalStateException("Either jdbc4ConnectionTest must be enabled or a connectionTestQuery must be specified.");
}
if (leakDetectionThreshold != 0 && leakDetectionThreshold < TimeUnit.SECONDS.toMillis(10))
{
logger.warn("leakDetectionThreshold is less than 10000ms, did you specify the wrong time unit? Disabling leak detection.");
@ -639,7 +698,7 @@ public class HikariConfig implements HikariConfigMBean
if (maxLifetime < 0)
{
logger.error("maxLifetime cannot be negative.");
throw new IllegalStateException("maxLifetime cannot be negative.");
throw new IllegalArgumentException("maxLifetime cannot be negative.");
}
else if (maxLifetime < TimeUnit.SECONDS.toMillis(120) && maxLifetime != 0)
{
@ -658,20 +717,6 @@ public class HikariConfig implements HikariConfigMBean
connectionTimeout = TimeUnit.SECONDS.toMillis(acquireRetries + 1);
}
}
if (transactionIsolationName != null)
{
try
{
Field field = Connection.class.getField(transactionIsolationName);
int level = field.getInt(null);
this.transactionIsolation = level;
}
catch (Exception e)
{
throw new IllegalArgumentException("Invalid transaction isolation value: " + transactionIsolationName);
}
}
}
IConnectionCustomizer getConnectionCustomizer()

Loading…
Cancel
Save