public Object getObjectInstance()

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);
    }