package comeon.templates; import comeon.model.Media; import comeon.model.Template; import comeon.model.TemplateKind; import comeon.model.User; import comeon.model.processors.PostProcessor; import java.util.HashMap; import java.util.Map; import java.util.Set; public abstract class BaseTemplateKind implements TemplateKind { private final Set<PostProcessor> postProcessors; protected BaseTemplateKind(final Set<PostProcessor> postProcessors) { this.postProcessors = postProcessors; } @Override public final String render(final Template template, final String templateText, final User user, final Media media) { final Map<String, Object> context = new HashMap<>(); for (final PostProcessor processor : postProcessors) { processor.process(user, media, context); } return this.doRender(template, templateText, context); } protected abstract String doRender(Template template, String templateText, Map<String, Object> context); }