package org.webpieces.templating.impl; import java.util.Map; import org.codehaus.groovy.runtime.InvokerHelper; import org.webpieces.templating.api.HtmlTagLookup; import org.webpieces.templating.api.RouterLookup; import org.webpieces.templating.api.Template; import org.webpieces.templating.api.TemplateResult; import groovy.lang.Binding; public class TemplateImpl implements Template { private Class<?> compiledTemplate; private HtmlTagLookup tagLookup; private RouterLookup urlLookup; public TemplateImpl(RouterLookup urlLookup, HtmlTagLookup tagLookup, Class<?> compiledTemplate) { this.urlLookup = urlLookup; this.tagLookup = tagLookup; this.compiledTemplate = compiledTemplate; } @Override public TemplateResult run(Map<String, Object> args, Map<Object, Object> templateProps) { Binding binding = new Binding(args); GroovyTemplateSuperclass t = (GroovyTemplateSuperclass) InvokerHelper.createScript(compiledTemplate, binding); t.initialize(GroovyTemplateSuperclass.ESCAPE_HTML_FORMATTER, tagLookup, templateProps, urlLookup); t.run(); return new TemplateResultImpl(t); } }