Clover coverage report -
Coverage timestamp: Sa Jul 7 2007 09:11:40 CEST
file stats: LOC: 94   Methods: 6
NCLOC: 34   Classes: 1
 
 Source file Conditionals Statements Methods TOTAL
SplitServletOutputStream.java - 0% 0% 0%
coverage
 1    /*
 2    * Copyright (c) 2002-2003 by OpenSymphony
 3    * All rights reserved.
 4    */
 5    package com.opensymphony.oscache.web.filter;
 6   
 7    import java.io.IOException;
 8    import java.io.OutputStream;
 9   
 10    import javax.servlet.ServletOutputStream;
 11   
 12    /**
 13    * Extends the base <code>ServletOutputStream</code> class so that
 14    * the stream can be captured as it gets written. This is achieved
 15    * by overriding the <code>write()</code> methods and outputting
 16    * the data to two streams - the original stream and a secondary stream
 17    * that is designed to capture the written data.
 18    *
 19    * @version $Revision: 393 $
 20    * @author <a href="mailto:sergek@lokitech.com">Serge Knystautas</a>
 21    */
 22    public class SplitServletOutputStream extends ServletOutputStream {
 23    OutputStream captureStream = null;
 24    OutputStream passThroughStream = null;
 25   
 26    /**
 27    * Constructs a split output stream that both captures and passes through
 28    * the servlet response.
 29    *
 30    * @param captureStream The stream that will be used to capture the data.
 31    * @param passThroughStream The pass-through <code>ServletOutputStream</code>
 32    * that will write the response to the client as originally intended.
 33    */
 34  0 public SplitServletOutputStream(OutputStream captureStream, OutputStream passThroughStream) {
 35  0 this.captureStream = captureStream;
 36  0 this.passThroughStream = passThroughStream;
 37    }
 38   
 39    /**
 40    * Writes the incoming data to both the output streams.
 41    *
 42    * @param value The int data to write.
 43    * @throws IOException
 44    */
 45  0 public void write(int value) throws IOException {
 46  0 captureStream.write(value);
 47  0 passThroughStream.write(value);
 48    }
 49   
 50    /**
 51    * Writes the incoming data to both the output streams.
 52    *
 53    * @param value The bytes to write to the streams.
 54    * @throws IOException
 55    */
 56  0 public void write(byte[] value) throws IOException {
 57  0 captureStream.write(value);
 58  0 passThroughStream.write(value);
 59    }
 60   
 61    /**
 62    * Writes the incoming data to both the output streams.
 63    *
 64    * @param b The bytes to write out to the streams.
 65    * @param off The offset into the byte data where writing should begin.
 66    * @param len The number of bytes to write.
 67    * @throws IOException
 68    */
 69  0 public void write(byte[] b, int off, int len) throws IOException {
 70  0 captureStream.write(b, off, len);
 71  0 passThroughStream.write(b, off, len);
 72    }
 73   
 74    /**
 75    * Flushes both the output streams.
 76    * @throws IOException
 77    */
 78  0 public void flush() throws IOException {
 79  0 super.flush();
 80  0 captureStream.flush(); //why not?
 81  0 passThroughStream.flush();
 82    }
 83   
 84    /**
 85    * Closes both the output streams.
 86    * @throws IOException
 87    */
 88  0 public void close() throws IOException {
 89  0 super.close();
 90  0 captureStream.close();
 91  0 passThroughStream.close();
 92    }
 93   
 94    }