View Javadoc

1   package br.com.ibnetwork.guara.view;
2   
3   import java.io.ByteArrayOutputStream;
4   import java.io.IOException;
5   import java.io.OutputStreamWriter;
6   import java.io.Writer;
7   
8   import javax.servlet.http.HttpServletResponse;
9   
10  import org.apache.commons.logging.Log;
11  import org.apache.commons.logging.LogFactory;
12  
13  import br.com.ibnetwork.guara.pipeline.PipelineException;
14  import br.com.ibnetwork.guara.rundata.RunData;
15  
16  public class TemplateUtils 
17  {
18  	private static final String DEFAULT_CONTENT_TYPE = "text/html; charset=ISO-8859-1";
19      
20      private static Log logger = LogFactory.getLog(TemplateUtils.class);
21  
22      public static String renderTemplate(TemplateEngine engine, String encoding, Context ctx, String templateName)
23      {
24          ByteArrayOutputStream bytes = null;
25          String result;
26          try
27          {
28              bytes = new ByteArrayOutputStream();
29              OutputStreamWriter writer = new OutputStreamWriter(bytes, encoding);
30              engine.merge(templateName, ctx, writer);
31              writer.flush();
32              result = bytes.toString(encoding);
33              return result;
34          }
35          catch (Throwable t)
36          {
37              throw new PipelineException("Error rendering template ["+templateName+"]",t);
38          }
39          finally
40          {
41              try
42              {
43                  if (bytes != null)
44                  {
45                      bytes.close();
46                  }
47              }
48              catch (IOException e)
49              {
50                  logger.warn("Error closing output stream",e);
51              }
52          }
53      }
54  
55      public static void renderOutput(TemplateEngine engine, RunData runData, String templateName)
56      {
57          renderOutput(engine,runData,templateName,DEFAULT_CONTENT_TYPE);
58      }
59      
60      public static void renderOutput(TemplateEngine engine, RunData runData, String templateName, String contentType)
61      {
62          HttpServletResponse response = runData.getResponse();
63          response.setContentType(contentType);
64          Context ctx = runData.getContext();
65          Writer writer = null;
66          try
67          {
68              writer = response.getWriter();
69              engine.merge(templateName,ctx,writer);
70              writer.flush();
71          }
72          catch(Exception e)
73          {
74              logger.error("Error rendering layout ["+templateName+"]",e);
75          }
76          finally
77          {
78              if(writer != null)
79              {
80                  try
81                  {
82                      writer.close();
83                  }
84                  catch (IOException e)
85                  {
86                      logger.warn("Error closing output stream",e);                    
87                  }
88              }
89          }
90      }
91  
92  }