package org.jboss.windup.reporting.freemarker;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.inject.Inject;
import org.jboss.forge.furnace.proxy.Proxies;
import org.jboss.forge.furnace.services.Imported;
import org.jboss.windup.config.GraphRewrite;
import freemarker.template.TemplateModelException;
/**
*
* Returns a list of all FreeMarker Template Directives that have been added by Windup and the currently loaded addons.
*
* Called as follows:
*
* getAllFreeMarkerDirectives()
*
* @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a>
*
*/
public class GetAllFreeMarkerDirectivesMethod implements WindupFreeMarkerMethod
{
@Inject
private Imported<WindupFreeMarkerTemplateDirective> directives;
@Override
public String getDescription()
{
return "This method takes no parameters, and returns a List of hashes containing a 'name', 'class', and 'description' field.";
}
@Override
public Object exec(@SuppressWarnings("rawtypes") List arguments) throws TemplateModelException
{
List<Map<String, String>> results = new ArrayList<>();
for (WindupFreeMarkerTemplateDirective directive : directives)
{
Map<String, String> directiveInfo = new HashMap<>();
directiveInfo.put("name", directive.getDirectiveName());
directiveInfo.put("description", directive.getDescription());
directiveInfo.put("class", Proxies.unwrapProxyClassName(directive.getClass()));
results.add(directiveInfo);
}
return results;
}
@Override
public void setContext(GraphRewrite event)
{
}
}