in src/main/java/org/apache/commons/dbcp2/datasources/InstanceKeyDataSource.java [1256:1295]
protected ConnectionPoolDataSource testCPDS(final String userName, final String userPassword)
throws javax.naming.NamingException, SQLException {
// The source of physical database connections
ConnectionPoolDataSource cpds = this.dataSource;
if (cpds == null) {
Context ctx = null;
if (jndiEnvironment == null) {
ctx = new InitialContext();
} else {
ctx = new InitialContext(jndiEnvironment);
}
final Object ds = ctx.lookup(dataSourceName);
if (!(ds instanceof ConnectionPoolDataSource)) {
throw new SQLException("Illegal configuration: " + "DataSource " + dataSourceName + " ("
+ ds.getClass().getName() + ")" + " doesn't implement javax.sql.ConnectionPoolDataSource");
}
cpds = (ConnectionPoolDataSource) ds;
}
// try to get a connection with the supplied userName/password
PooledConnection conn = null;
try {
if (userName != null) {
conn = cpds.getPooledConnection(userName, userPassword);
} else {
conn = cpds.getPooledConnection();
}
if (conn == null) {
throw new SQLException("Cannot connect using the supplied userName/password");
}
} finally {
if (conn != null) {
try {
conn.close();
} catch (final SQLException ignored) {
// at least we could connect
}
}
}
return cpds;
}