View Javadoc

1   /*
2    * Copyright (C) The Apache Software Foundation. All rights reserved.
3    *
4    * This software is published under the terms of the Apache Software License
5    * version 1.1, a copy of which has been included with this distribution in
6    * the LICENSE file.
7    * 
8    * $Id: BufferedServletOutputStream.java 155459 2005-02-26 13:24:44Z dirkv $
9    */
10  package org.apache.commons.messagelet.impl;
11  
12  import java.io.ByteArrayOutputStream;
13  import java.io.IOException;
14  import java.io.OutputStream;
15  import java.io.UnsupportedEncodingException;
16  
17  import javax.servlet.ServletOutputStream;
18  
19  /** 
20   * <p><code>BufferedServletOutputStream</code> implements
21   * a buffered ServletOutputStream in a similar way to
22   * ByteArrayOutputStream represents a buffered OutputStream.</p>
23   *
24    * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
25    * @version $Revision: 155459 $
26   */
27  public class BufferedServletOutputStream extends ServletOutputStream {
28      
29      /** The underlying <code>ByteArrayOutputStream</code> that the output
30       * is written to */
31      protected ByteArrayOutputStream buffer;
32      
33      
34      public BufferedServletOutputStream() {
35          buffer = new ByteArrayOutputStream();
36      }
37      
38      public BufferedServletOutputStream(int size) {
39          buffer = new ByteArrayOutputStream(size);
40      }
41      
42      // Delegating methods from OutputStream
43      //-------------------------------------------------------------------------    
44      
45      public void write(byte[] b) throws  IOException {
46          buffer.write(b);
47      }
48      
49      public void write(byte[] b, int off, int len) throws  IOException {
50          buffer.write(b, off, len);
51      }
52      
53      public void write(int b) throws  IOException {
54          buffer.write(b);
55      }
56          
57      public void close() throws  IOException {
58          buffer.close();
59      }
60      
61      public void flush() throws  IOException {
62          buffer.flush();
63      }    
64      
65      
66      // Methods promoted from ByteArrayOutputStream
67      //-------------------------------------------------------------------------    
68      
69      /** Resets the count field of this buffer to zero, 
70       * so that all currently accumulated output in the 
71       * ouput stream is discarded. 
72       */
73      public void reset() {
74          buffer.reset();
75      }
76   
77      /** Returns the current size of the buffer. 
78       */ 
79      public int size() {
80          return buffer.size();
81      }
82      
83  
84      
85      /** Creates a newly allocated byte array. 
86       */
87      public byte[] toByteArray() {
88          return buffer.toByteArray();
89      }
90      
91      /** Converts the buffer's contents into a string, 
92       * translating bytes into characters according 
93       * to the platform's default character encoding. 
94       */          
95      public String toString() {
96          return buffer.toString();
97      }
98         
99      /** Converts the buffer's contents into a string, 
100      * translating bytes into characters according 
101      * to the specified character encoding. 
102      */
103     public String toString(String enc) throws UnsupportedEncodingException {
104         return buffer.toString(enc);
105     }
106           
107     /** Writes the complete contents of this buffer
108      * to the specified output stream argument, 
109      * as if by calling the output stream's write 
110      * method using out.write(buf, 0, count). 
111      */
112     public void writeTo(OutputStream out) throws  IOException {
113         buffer.writeTo(out);
114     }
115     
116 }