Clover coverage report - Coverage timestamp: do jan 22 2004 21:12:32 CET FRAMES NO FRAMES |
file stats: | LOC: | 74 |  | Methods: | 4
| NCLOC: | 24 |  | Classes: | 1
Source file | Conditionals | Statements | Methods | TOTAL
SplitServletOutputStream.java | - | 0% | 0% | 0% |

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: 1.1 $
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 |  |