/plugin/src/main/java/com/atlassian/developer/calliope/plugin/macro/TemplateRendererMacro.java
Java | 65 lines | 54 code | 10 blank | 1 comment | 0 complexity | 8709e6a5ce923827816660fb41644d84 MD5 | raw file
- package com.atlassian.developer.calliope.plugin.macro;
- import java.io.IOException;
- import java.io.PrintWriter;
- import java.io.StringWriter;
- import java.io.Writer;
- import java.util.Map;
- import com.atlassian.renderer.RenderContext;
- import com.atlassian.renderer.v2.RenderMode;
- import com.atlassian.renderer.v2.macro.BaseMacro;
- import com.atlassian.renderer.v2.macro.MacroException;
- import com.atlassian.templaterenderer.TemplateRenderer;
- import com.google.common.collect.ImmutableMap;
- import static com.atlassian.renderer.v2.RenderMode.F_LINEBREAKS;
- import static com.atlassian.renderer.v2.RenderMode.F_PARAGRAPHS;
- import static com.atlassian.renderer.v2.RenderMode.suppress;
- import static com.google.common.base.Preconditions.checkNotNull;
- public abstract class TemplateRendererMacro extends BaseMacro
- {
- private final TemplateRenderer renderer;
- private final String path;
- protected TemplateRendererMacro(TemplateRenderer renderer, String path)
- {
- this.renderer = renderer;
- this.path = path;
- }
- public boolean hasBody()
- {
- return true;
- }
- public RenderMode getBodyRenderMode()
- {
- return suppress(F_LINEBREAKS | F_PARAGRAPHS);
- }
- @SuppressWarnings("unchecked")
- public final String execute(final Map parameters, String body, RenderContext renderContext) throws MacroException
- {
- Writer writer = new StringWriter();
- try
- {
- renderer.render(path, getTemplateRendererContext(parameters, body), writer);
- }
- catch (IOException e)
- {
- PrintWriter printWriter = new PrintWriter(writer);
- e.printStackTrace(printWriter);
- printWriter.close();
- }
- return writer.toString();
- }
- // TODO: terrible api design for subclasses; fix.
- protected Map<String, Object> getTemplateRendererContext(Map<String, String> parameters, String body)
- {
- return ImmutableMap.<String, Object> of("body", checkNotNull(body, "body"));
- }
- }