package org.jboss.windup.config; import org.jboss.windup.config.loader.RuleLoaderContext; import org.jboss.windup.config.metadata.RuleProviderMetadata; import org.ocpsoft.rewrite.config.Configuration; import org.ocpsoft.rewrite.config.ConfigurationProvider; import org.ocpsoft.rewrite.config.Rule; /** * A windup-specific implementation of {@link ConfigurationProvider}. Provides {@link Rule} instances and relevant {@link RuleProviderMetadata} for * those {@link Rule} instances. * * @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a> */ public interface RuleProvider extends ConfigurationProvider<RuleLoaderContext> { /** * Get the {@link RuleProviderMetadata} for this {@link RuleProvider}. */ RuleProviderMetadata getMetadata(); /** * KEEP - The purpose of this override is to make sure that reflection (interface.getClass().getMethods()) * keeps a method with the specific type. Otherwise, type erasure will get rid of it and callers will get * ClassCastExceptions in some obscure cases. */ @Override Configuration getConfiguration(RuleLoaderContext context); }