/* See LICENSE for licensing and NOTICE for copyright. */
package org.ldaptive.props;
import java.io.Reader;
import java.util.Properties;
/**
* Reads simple properties and returns an initialized object of the supplied type.
*
* @param <T> type of object to invoke properties on
*
* @author Middleware Services
*/
public final class SimplePropertySource<T> extends AbstractPropertySource<T>
{
/** Invoker for simple properties. */
private final SimplePropertyInvoker invoker;
/**
* Creates a new simple property source using the default properties file.
*
* @param t object to invoke properties on
*/
public SimplePropertySource(final T t)
{
this(t, PROPERTIES_FILE);
}
/**
* Creates a new simple property source.
*
* @param t object to invoke properties on
* @param paths to read properties from
*/
public SimplePropertySource(final T t, final String... paths)
{
this(t, loadProperties(paths));
}
/**
* Creates a new simple property source.
*
* @param t object to invoke properties on
* @param readers to read properties from
*/
public SimplePropertySource(final T t, final Reader... readers)
{
this(t, loadProperties(readers));
}
/**
* Creates a new simple property source.
*
* @param t object to invoke properties on
* @param props to read properties from
*/
public SimplePropertySource(final T t, final Properties props)
{
this(t, PropertyDomain.LDAP, props);
}
/**
* Creates a new simple property source.
*
* @param t object to invoke properties on
* @param domain that properties are in
* @param props to read properties from
*/
public SimplePropertySource(final T t, final PropertyDomain domain, final Properties props)
{
super(t, domain, props);
invoker = new SimplePropertyInvoker(t.getClass());
}
@Override
public void initialize()
{
initializeObject(invoker);
}
}