in src/main/java/org/apache/sling/datasource/internal/DriverDataSource.java [149:182]
private Driver getDriver() throws SQLException {
if (driver != null) {
return driver;
}
final String url = poolProperties.getUrl();
Collection<Driver> drivers = driverRegistry.getDrivers();
if(!drivers.isEmpty()) {
log.debug("Looking for driver for [{}] against registered drivers", url);
driver = findMatchingDriver(drivers);
}
if(driver == null && poolProperties.getDriverClassName() != null){
log.debug("Looking for driver for [{}] via provided className [{}]",
url, poolProperties.getDriverClassName());
driver = loadDriverClass();
}
if(driver == null){
//This one is redundant as DriverManager would filter out drivers
//whose classes are not visible from our bundle classloader which
//means that this list would be empty in most cases
log.debug("Looking for driver from DriverManager");
driver = findMatchingDriver(Collections.list(DriverManager.getDrivers()));
}
if(driver == null){
String msg = String.format("Not able to find any matching driver for url [%s] " +
"and driverClassName [%s]",url,poolProperties.getDriverClassName());
throw new SQLException(msg);
}
return driver;
}