package org.jboss.windup.config.loader;
import java.util.List;
import org.jboss.windup.config.AbstractRuleProvider;
import org.jboss.windup.config.RuleProvider;
/**
* Each configuration extension will implement this interface to provide a list of WindupRuleProviders. A
* GraphConfigurationLoader will pull in all WindupRuleProviders and sort them based upon the provider's metadata.
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
public interface RuleProviderLoader
{
/**
* Indicates that these are not classloader based Java rules. Instead these are rules loaded from the filesystem.
*
* This can be used to display only XML rules to the user, in cases where they are not interested in other rules.
*/
boolean isFileBased();
/**
* Return all {@link AbstractRuleProvider} instances that are relevant for this loader.
*/
List<RuleProvider> getProviders(RuleLoaderContext ruleLoaderContext);
}