package org.jboss.windup.reporting.ruleexecution; import java.util.List; import org.jboss.windup.config.GraphRewrite; import org.jboss.windup.config.AbstractRuleProvider; import org.jboss.windup.reporting.freemarker.WindupFreeMarkerMethod; import org.jboss.windup.util.ExecutionStatistics; import freemarker.ext.beans.StringModel; import freemarker.template.TemplateModelException; import org.jboss.windup.util.Util; /** * Returns information about which {@link Rule}s have been evaluated by windup as well as their execution results. * * @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a> * */ public class GetRuleExecutionResults implements WindupFreeMarkerMethod { public static final String NAME = "getRuleExecutionResults"; private GraphRewrite event; @Override public String getMethodName() { return NAME; } @Override public String getDescription() { return "Takes a parameter of type " + AbstractRuleProvider.class.getSimpleName() + " and returns a List<" + RuleExecutionInformation.class.getSimpleName() + "> containing metadata related to the current " + Util.WINDUP_BRAND_NAME_LONG + " execution."; } @Override public Object exec(@SuppressWarnings("rawtypes") List arguments) throws TemplateModelException { ExecutionStatistics.get().begin(NAME); if (arguments.size() != 1) { throw new TemplateModelException("Error, method expects one argument (AbstractRuleProvider)"); } StringModel stringModelArg = (StringModel) arguments.get(0); AbstractRuleProvider ruleProvider = (AbstractRuleProvider) stringModelArg.getWrappedObject(); List<RuleExecutionInformation> result = RuleExecutionResultsListener.instance(this.event).getRuleExecutionInformation(ruleProvider); ExecutionStatistics.get().end(NAME); return result; } @Override public void setContext(GraphRewrite event) { this.event = event; } }