package org.jboss.windup.reporting.ruleexecution; import java.util.List; import org.jboss.windup.config.AbstractRuleProvider; import org.jboss.windup.config.GraphRewrite; import org.jboss.windup.config.RuleProvider; import org.jboss.windup.config.metadata.RuleProviderRegistry; import org.jboss.windup.reporting.freemarker.WindupFreeMarkerMethod; import org.jboss.windup.util.ExecutionStatistics; import freemarker.template.TemplateModelException; /** * Returns a {@link List} of all {@link AbstractRuleProvider}s loaded by Windup. * * Can be called from Freemarker as follows: * * getAllRuleProviders() * * @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a> * */ public class GetAllRuleProviders implements WindupFreeMarkerMethod { private static final String NAME = "getAllRuleProviders"; private GraphRewrite event; @Override public void setContext(GraphRewrite event) { this.event = event; } @Override public String getMethodName() { return NAME; } @Override public String getDescription() { return "Takes no parameters and returns a List<" + AbstractRuleProvider.class.getSimpleName() + "> containing all loaded Rule Providers."; } @Override public Object exec(@SuppressWarnings("rawtypes") List arguments) throws TemplateModelException { ExecutionStatistics.get().begin(NAME); List<RuleProvider> result = RuleProviderRegistry.instance(this.event).getProviders(); ExecutionStatistics.get().end(NAME); return result; } }