package org.deploymentobjects.core; import java.io.StringWriter; import java.util.Map; import java.util.Properties; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; import org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader; public class VelocityTemplate implements Template { VelocityEngine ve; public VelocityTemplate(){ Properties props = new Properties(); // TODO switch to URL props.setProperty(VelocityEngine.RESOURCE_LOADER, "classpath"); props.setProperty("classpath." + VelocityEngine.RESOURCE_LOADER + ".class", ClasspathResourceLoader.class.getName()); ve = new VelocityEngine(props); ve.init(); } @Override public String encode(String templateName, Map<String, Object> vars) { VelocityContext context = new VelocityContext(); for (String key : vars.keySet()) { context.put(key, vars.get(key)); } org.apache.velocity.Template template = null; template = ve.getTemplate(templateName); StringWriter sw = new StringWriter(); template.merge(context, sw); return sw.toString(); } }