/sitebricks/src/main/java/com/google/sitebricks/compiler/template/MvelTemplateCompiler.java

http://github.com/dhanji/sitebricks · Java · 37 lines · 26 code · 7 blank · 4 comment · 0 complexity · 0e7d12dd2f16fbe683e1854d1ab8c9d0 MD5 · raw file

  1. package com.google.sitebricks.compiler.template;
  2. import com.google.common.collect.ImmutableSet;
  3. import com.google.sitebricks.Renderable;
  4. import com.google.sitebricks.Respond;
  5. import com.google.sitebricks.Template;
  6. import com.google.sitebricks.compiler.TemplateCompiler;
  7. import org.mvel2.templates.CompiledTemplate;
  8. import org.mvel2.templates.TemplateRuntime;
  9. import java.util.HashMap;
  10. import java.util.Set;
  11. /**
  12. * Creates renderables, given an MVEL template page.
  13. */
  14. public class MvelTemplateCompiler implements TemplateCompiler {
  15. public Renderable compile(final Class<?> page, final Template template) {
  16. // Compile template immediately.
  17. final CompiledTemplate compiledTemplate = org.mvel2.templates.TemplateCompiler.compileTemplate(template.getText());
  18. return new Renderable() {
  19. @Override
  20. public void render(Object bound, Respond respond) {
  21. assert page.isInstance(bound);
  22. respond.write(TemplateRuntime.execute(compiledTemplate, bound, new HashMap()).toString());
  23. }
  24. @Override
  25. public <T extends Renderable> Set<T> collect(Class<T> clazz) {
  26. return ImmutableSet.of();
  27. }
  28. };
  29. }
  30. }