Clover coverage report - angkor - 0.4
Coverage timestamp: ti okt 15 2002 22:32:48 CEST
file stats: LOC: 116   Methods: 12
NCLOC: 85   Classes: 2
Clover is not free. You have 30 days to evaluate it. Please visit http://www.thecortex.net/clover to obtain a licensed version of Clover.
 
 Source file Conditionals Statements Methods TOTAL
PrerenderedComponentsRegistry.java 0% 0% 0% 0%
 1   
 /*
 2   
  * Angkor Web Framework
 3   
  *
 4   
  * Distributable under LGPL license.
 5   
  * See terms of license at gnu.org.
 6   
  */
 7   
 
 8   
 package com.tirsen.angkor.jsp;
 9   
 
 10   
 import com.tirsen.angkor.Application;
 11   
 import com.tirsen.angkor.RenderContext;
 12   
 import com.tirsen.angkor.View;
 13   
 
 14   
 import javax.servlet.ServletException;
 15   
 import java.io.CharArrayWriter;
 16   
 import java.io.IOException;
 17   
 import java.io.OutputStream;
 18   
 import java.io.OutputStreamWriter;
 19   
 import java.io.PrintWriter;
 20   
 import java.io.Writer;
 21   
 import java.util.HashMap;
 22   
 import java.util.Map;
 23   
 
 24   
 /**
 25   
  * <!-- $Id: PrerenderedComponentsRegistry.java,v 1.3 2002/10/09 21:37:37 tirsen Exp $ -->
 26   
  * <!-- $Author: tirsen $ -->
 27   
  *
 28   
  * @author Jon Tirs&acute;n (tirsen@users.sourceforge.net)
 29   
  * @version $Revision: 1.3 $
 30   
  */
 31   
 public class PrerenderedComponentsRegistry
 32   
 {
 33   
     private Map prerenderedBuffers;
 34   
     private Application application;
 35   
     private RenderContext context;
 36   
 
 37   
     private class PrerenderContext extends RenderContext
 38   
     {
 39   
         private PrintWriter writer;
 40   
         private CharArrayWriter buffer;
 41   
 
 42  0
         public PrerenderContext()
 43   
         {
 44  0
             super(null, null);
 45   
         }
 46   
 
 47  0
         public String getRequestPath()
 48   
         {
 49  0
             return context.getRequestPath();
 50   
         }
 51   
 
 52  0
         public String encodeURL(String url)
 53   
         {
 54  0
             return context.encodeURL(url);
 55   
         }
 56   
 
 57  0
         public Application getApplication()
 58   
         {
 59  0
             return application;
 60   
         }
 61   
 
 62  0
         public PrintWriter getWriter() throws IOException
 63   
         {
 64  0
             return writer;
 65   
         }
 66   
 
 67  0
         public void setBuffer(CharArrayWriter buffer)
 68   
         {
 69  0
             this.buffer = buffer;
 70  0
             this.writer = new PrintWriter(buffer);
 71   
         }
 72   
     }
 73   
 
 74  0
     public PrerenderedComponentsRegistry(RenderContext context)
 75   
     {
 76  0
         this.context = context;
 77  0
         this.application = context.getApplication();
 78   
     }
 79   
 
 80  0
     public void prerender(String name, View view) throws ServletException, IOException
 81   
     {
 82  0
         if (prerenderedBuffers == null) prerenderedBuffers = new HashMap();
 83  0
         PrerenderContext prerenderContext = new PrerenderContext();
 84  0
         CharArrayWriter buffer = new CharArrayWriter();
 85  0
         prerenderContext.setBuffer(buffer);
 86  0
         view.render(prerenderContext);
 87  0
         prerenderedBuffers.put(name, buffer);
 88   
     }
 89   
 
 90  0
     public void render(String name, OutputStream output) throws IOException
 91   
     {
 92  0
         OutputStreamWriter writer = new OutputStreamWriter(output);
 93  0
         render(name, writer);
 94  0
         writer.flush();
 95   
     }
 96   
 
 97  0
     public void render(String name, Writer writer) throws IOException
 98   
     {
 99  0
         CharArrayWriter buffer = getBuffer(name);
 100  0
         buffer.writeTo(writer);
 101   
     }
 102   
 
 103  0
     private CharArrayWriter getBuffer(String name)
 104   
     {
 105  0
         if (prerenderedBuffers == null) throw new IllegalStateException("Components of this registry has not been prerendered.");
 106  0
         CharArrayWriter buffer = (CharArrayWriter) prerenderedBuffers.get(name);
 107  0
         if (buffer == null) throw new IllegalArgumentException("Component " + name + " was not prerendered for this request.");
 108  0
         return buffer;
 109   
     }
 110   
 
 111  0
     public void reset()
 112   
     {
 113  0
         prerenderedBuffers = null;
 114   
     }
 115   
 }
 116