package org.jboss.windup.reporting.freemarker; import java.util.List; import org.jboss.windup.graph.model.ProjectModel; import org.jboss.windup.graph.traversal.ArchiveSHA1ToFilePathMapper; import org.jboss.windup.graph.traversal.ProjectModelTraversal; import org.jboss.windup.util.ExecutionStatistics; import freemarker.ext.beans.StringModel; import freemarker.template.TemplateModelException; /** * <p> * Gets an instance of {@link ArchiveSHA1ToFilePathMapper} that is used for mapping from * a SHA1 String to a list of paths where this archive can be found. * </p> * * <p> * Example call: * * <pre> * getArchiveSHA1ToPathMapper(traversal:ProjectModelTraversal) * </pre> * </p> * * @author <a href="mailto:jesse.sightler@gmail.com">Jesse Sightler</a> */ public class GetArchiveSHA1ToPathsMapperMethod implements WindupFreeMarkerMethod { public static final String NAME = "getArchiveSHA1ToPathMapper"; @Override public String getMethodName() { return NAME; } @Override public String getDescription() { return "Gets an instance of a mapper for converting from the SHA1 hash of an archive to a List of file paths."; } @Override public Object exec(List arguments) throws TemplateModelException { ExecutionStatistics.get().begin(NAME); if (arguments.size() < 1) { throw new TemplateModelException("Error, method expects at least one argument (" + ProjectModel.class.getSimpleName() + ")"); } StringModel stringModelArg = (StringModel) arguments.get(0); ProjectModelTraversal traversal = (ProjectModelTraversal) stringModelArg.getWrappedObject(); ArchiveSHA1ToFilePathMapper mapper = new ArchiveSHA1ToFilePathMapper(traversal); ExecutionStatistics.get().end(NAME); return mapper; } }