001 package com.khubla.pragmatach.plugin.freemarker; 002 003 import java.io.PrintWriter; 004 import java.io.Writer; 005 import java.util.Map; 006 007 import javax.servlet.http.HttpServletResponse; 008 009 import com.khubla.pragmatach.framework.api.PragmatachException; 010 import com.khubla.pragmatach.framework.controller.impl.AbstractResponse; 011 012 import freemarker.template.Template; 013 014 /** 015 * @author tome 016 */ 017 public class FreemarkerResponse extends AbstractResponse { 018 /** 019 * template 020 */ 021 private final Template template; 022 /** 023 * context 024 */ 025 private final Map<String, Object> context; 026 027 public FreemarkerResponse(Map<String, String> cacheHeaders, Template template, Map<String, Object> context) { 028 super(cacheHeaders); 029 this.template = template; 030 this.context = context; 031 } 032 033 @Override 034 public String getContentType() throws PragmatachException { 035 return CONTENT_TYPE_HTML; 036 } 037 038 @Override 039 public Map<String, String> getHeaders() throws PragmatachException { 040 return super.getCacheHeaders(); 041 } 042 043 @Override 044 public void render(HttpServletResponse httpServletResponse) throws PragmatachException { 045 try { 046 final Writer writer = new PrintWriter(httpServletResponse.getOutputStream()); 047 template.process(context, writer); 048 } catch (final Exception e) { 049 throw new PragmatachException("Exception in render", e); 050 } 051 } 052 }