package com.google.sitebricks.compiler.template;
import com.google.common.collect.ImmutableSet;
import com.google.sitebricks.Renderable;
import com.google.sitebricks.Respond;
import com.google.sitebricks.Template;
import com.google.sitebricks.compiler.TemplateCompiler;
import org.mvel2.templates.CompiledTemplate;
import org.mvel2.templates.TemplateRuntime;
import java.util.HashMap;
import java.util.Set;
/**
* Creates renderables, given an MVEL template page.
*/
public class MvelTemplateCompiler implements TemplateCompiler {
public Renderable compile(final Class<?> page, final Template template) {
// Compile template immediately.
final CompiledTemplate compiledTemplate = org.mvel2.templates.TemplateCompiler.compileTemplate(template.getText());
return new Renderable() {
@Override
public void render(Object bound, Respond respond) {
assert page.isInstance(bound);
respond.write(TemplateRuntime.execute(compiledTemplate, bound, new HashMap()).toString());
}
@Override
public <T extends Renderable> Set<T> collect(Class<T> clazz) {
return ImmutableSet.of();
}
};
}
}