All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.github.zhangxd1989.basetool.extra.template.engine.freemarker.FreemarkerTemplate Maven / Gradle / Ivy

package com.github.zhangxd1989.basetool.extra.template.engine.freemarker;

import com.github.zhangxd1989.basetool.extra.template.AbstractTemplate;
import com.github.zhangxd1989.basetool.extra.template.TemplateException;
import com.github.zhangxd1989.basetool.io.IORuntimeException;
import com.github.zhangxd1989.basetool.io.IoUtil;

import java.io.IOException;
import java.io.OutputStream;
import java.io.Serializable;
import java.io.Writer;
import java.util.Map;


/**
 * Freemarker模板实现
 *
 * @author sheldon
 */
public class FreemarkerTemplate extends AbstractTemplate implements Serializable {

    private static final long serialVersionUID = -7085676870667730175L;

    freemarker.template.Template rawTemplate;

    /**
     * 包装Freemarker模板
     *
     * @param beetlTemplate Freemarker的模板对象 {@link freemarker.template.Template}
     * @return {@link FreemarkerTemplate}
     */
    public static FreemarkerTemplate wrap(freemarker.template.Template beetlTemplate) {
        return (null == beetlTemplate) ? null : new FreemarkerTemplate(beetlTemplate);
    }

    /**
     * 构造
     *
     * @param freemarkerTemplate Freemarker的模板对象 {@link freemarker.template.Template}
     */
    public FreemarkerTemplate(freemarker.template.Template freemarkerTemplate) {
        this.rawTemplate = freemarkerTemplate;
    }

    @Override
    public void render(Map bindingMap, Writer writer) {
        try {
            rawTemplate.process(bindingMap, writer);
        } catch (freemarker.template.TemplateException e) {
            throw new TemplateException(e);
        } catch (IOException e) {
            throw new IORuntimeException(e);
        }
    }

    @Override
    public void render(Map bindingMap, OutputStream out) {
        render(bindingMap, IoUtil.getWriter(out, this.rawTemplate.getEncoding()));
    }

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy