/* See LICENSE for licensing and NOTICE for copyright. */ package org.ldaptive.props; import java.io.Reader; import java.util.Properties; import java.util.Set; import org.ldaptive.BindConnectionInitializer; /** * Reads properties specific to {@link BindConnectionInitializer} and returns an initialized object of that type. * * @author Middleware Services */ public final class BindConnectionInitializerPropertySource extends AbstractPropertySource<BindConnectionInitializer> { /** Invoker for bind connection initializer. */ private static final BindConnectionInitializerPropertyInvoker INVOKER = new BindConnectionInitializerPropertyInvoker( BindConnectionInitializer.class); /** * Creates a new bind connection initializer property source using the default properties file. * * @param initializer bind connection initializer to invoke properties on */ public BindConnectionInitializerPropertySource(final BindConnectionInitializer initializer) { this(initializer, PROPERTIES_FILE); } /** * Creates a new bind connection initializer property source. * * @param initializer bind connection initializer to invoke properties on * @param paths to read properties from */ public BindConnectionInitializerPropertySource(final BindConnectionInitializer initializer, final String... paths) { this(initializer, loadProperties(paths)); } /** * Creates a new bind connection initializer property source. * * @param initializer bind connection initializer to invoke properties on * @param readers to read properties from */ public BindConnectionInitializerPropertySource(final BindConnectionInitializer initializer, final Reader... readers) { this(initializer, loadProperties(readers)); } /** * Creates a new bind connection initializer property source. * * @param initializer bind connection initializer to invoke properties on * @param props to read properties from */ public BindConnectionInitializerPropertySource(final BindConnectionInitializer initializer, final Properties props) { this(initializer, PropertyDomain.LDAP, props); } /** * Creates a new bind connection initializer property source. * * @param initializer bind connection initializer to invoke properties on * @param domain that properties are in * @param props to read properties from */ public BindConnectionInitializerPropertySource( final BindConnectionInitializer initializer, final PropertyDomain domain, final Properties props) { super(initializer, domain, props); } @Override public void initialize() { initializeObject(INVOKER); } /** * Returns the property names for this property source. * * @return all property names */ public static Set<String> getProperties() { return INVOKER.getProperties(); } }