package org.jboss.windup.reporting.freemarker;
import org.jboss.windup.config.GraphRewrite;
import freemarker.template.TemplateMethodModelEx;
import org.apache.commons.lang3.StringUtils;
/**
* This interface provides us with a way of looking up all TemplateMethodModel implementations within various windup-related addons.
*
* This makes it possible for windup-addons to provide extension methods that can be easily accessed by the Freemarker templates.
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*
*/
public interface WindupFreeMarkerMethod extends TemplateMethodModelEx
{
/**
* Returns the name to be used for the function inside of Freemarker.
*/
default String getMethodName(){ return StringUtils.uncapitalize(StringUtils.removeEnd(this.getClass().getSimpleName(), "Method")); }
/**
* This should return a description of what this method does, along with any required parameters.
*/
String getDescription();
/**
* Sets the current {@link GraphRewrite} event for {@link #exec(java.util.List)}.
*/
default void setContext(GraphRewrite event) {}
}