package io.cattle.platform.configitem.server.template.impl;
import io.cattle.platform.configitem.server.resource.Resource;
import java.io.IOException;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.io.Writer;
import java.util.Map;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import freemarker.template.Template;
import freemarker.template.TemplateException;
public class FreemarkerTemplate implements io.cattle.platform.configitem.server.template.Template {
private static final Logger log = LoggerFactory.getLogger(FreemarkerTemplate.class);
String outputName;
Template template;
Resource resource;
public FreemarkerTemplate(String outputName, Template template, Resource resource) {
super();
this.outputName = outputName;
this.template = template;
this.resource = resource;
}
@Override
public String getOutputName() {
return outputName;
}
@Override
public void execute(Map<String, Object> context, OutputStream os) throws IOException {
Writer writer = null;
try {
writer = new OutputStreamWriter(os);
template.process(context, writer);
} catch (TemplateException e) {
log.error("Failed to run template for [{}]", resource.getName(), e);
throw new IOException(e);
} finally {
writer.flush();
}
}
@Override
public long getSize() {
return -1;
}
}