package org.togglz.core.spi;
import java.util.Set;
import org.togglz.core.Feature;
import org.togglz.core.metadata.FeatureMetaData;
import org.togglz.core.metadata.enums.EnumFeatureMetaData;
/**
* Implementations of this interface are responsible for providing feature base data. The default implementation
* {@link EnumFeatureMetaData} for example is used if features a defined using a feature enum. Users can provide custom
* implementations to support something like a dynamic list of features.
*
* @author Christian Kaltepoth
*/
public interface FeatureProvider {
/**
* Returns a list of all valid features, never <code>null</code>.
*/
Set<Feature> getFeatures();
/**
* Returns the {@link FeatureMetaData} for the given feature. May return null if no metadata is available.
*/
FeatureMetaData getMetaData(Feature feature);
}