in src/main/java/org/apache/commons/dbcp2/BasicDataSourceFactory.java [403:432]
public Object getObjectInstance(final Object obj, final Name name, final Context nameCtx,
final Hashtable<?, ?> environment) throws SQLException {
// We only know how to deal with {@code javax.naming.Reference}s
// that specify a class name of "javax.sql.DataSource"
if (obj == null || !(obj instanceof Reference)) {
return null;
}
final Reference ref = (Reference) obj;
if (!"javax.sql.DataSource".equals(ref.getClassName())) {
return null;
}
// Check property names and log warnings about obsolete and / or unknown properties
final List<String> warnMessages = new ArrayList<>();
final List<String> infoMessages = new ArrayList<>();
validatePropertyNames(ref, name, warnMessages, infoMessages);
warnMessages.forEach(log::warn);
infoMessages.forEach(log::info);
final Properties properties = new Properties();
ALL_PROPERTY_NAMES.forEach(propertyName -> {
final RefAddr ra = ref.get(propertyName);
if (ra != null) {
properties.setProperty(propertyName, Objects.toString(ra.getContent(), null));
}
});
return createDataSource(properties);
}