package org.easyrec.plugin.configuration;
public interface Configurable<C extends Configuration> {
/**
* Returns the current configuration. Implementations must never return
* null. If no implentation is currently set, a call to this method creates
* a new configuration using default values, sets it as the
* {@link Configurable}'s configuration and returns it.
*
* @return
*/
public C getConfiguration();
/**
* Configures this <code>Configurable</code> instance.
*
* @param <C>
* @param config
*/
public void setConfiguration(C config);
/**
* @return
*/
public C newConfiguration();
/**
* @return
*/
public Class<C> getConfigurationClass();
}