org.apache.sling.engine.impl.output
Class BufferedServletOutputStream

java.lang.Object
  extended by java.io.OutputStream
      extended by javax.servlet.ServletOutputStream
          extended by org.apache.sling.engine.impl.output.BufferedServletOutputStream
All Implemented Interfaces:
Closeable, Flushable, Buffer

public class BufferedServletOutputStream
extends javax.servlet.ServletOutputStream
implements Buffer

The BufferedServletOutputStream is a wrapper for OutputStream objects, which do not have their own buffering support. The main use of this class is to wrap the output stream retrieved from the cache handler, which does not have buffering but buffering needs to be supported.

This class is not multithread safe as it is intended to be used on single requests which are assigned to single threads.


Field Summary
protected  boolean closed
          flag to indicate that the stream has been closed
protected  OutputStream delegatee
          The wrapped ServletOutputStream
 
Constructor Summary
BufferedServletOutputStream(OutputStream delegatee, int bufferSize)
          Creates an instance wrapping the OutputStream and providing an initial buffer bufferSize.
 
Method Summary
 void close()
          Closes this output stream and releases any system resources associated with this stream.
 void flush()
          Flushes this output stream and forces any buffered output bytes to be written out.
 void flushBuffer()
          Flushes the output buffer to the underlying ServletOutputStream.
 int getBufferSize()
          Returns the size of the buffer
 void resetBuffer()
          CLears the buffer.
 void setBufferSize(int bufferSize)
          Sets the buffer size.
 void write(byte[] b, int off, int len)
          Writes len bytes from the specified byte array starting at offset off to this output stream.
 void write(int b)
          Writes the specified byte to this output stream.
 
Methods inherited from class javax.servlet.ServletOutputStream
print, print, print, print, print, print, print, println, println, println, println, println, println, println, println
 
Methods inherited from class java.io.OutputStream
write
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

delegatee

protected OutputStream delegatee
The wrapped ServletOutputStream


closed

protected boolean closed
flag to indicate that the stream has been closed

Constructor Detail

BufferedServletOutputStream

public BufferedServletOutputStream(OutputStream delegatee,
                                   int bufferSize)
Creates an instance wrapping the OutputStream and providing an initial buffer bufferSize.

Parameters:
delegatee - The OutputStream to wrap with buffering
bufferSize - The initial buffer bufferSize in bytes
Method Detail

setBufferSize

public void setBufferSize(int bufferSize)
Sets the buffer size. If the buffer contains data, this method throws an IllegalStateException.

Specified by:
setBufferSize in interface Buffer
Parameters:
bufferSize -
Throws:
IllegalStateException - if the buffer contains data.

getBufferSize

public int getBufferSize()
Returns the size of the buffer

Specified by:
getBufferSize in interface Buffer
Returns:
the size of the buffer

resetBuffer

public void resetBuffer()
CLears the buffer.

Specified by:
resetBuffer in interface Buffer

flushBuffer

public void flushBuffer()
                 throws IOException
Flushes the output buffer to the underlying ServletOutputStream.

Specified by:
flushBuffer in interface Buffer
Throws:
IOException - If the stream is already closed or if an I/O error occurrs flushing the buffer.

flush

public void flush()
           throws IOException
Flushes this output stream and forces any buffered output bytes to be written out. The general contract of flush is that calling it is an indication that, if any bytes previously written have been buffered by the implementation of the output stream, such bytes should immediately be written to their intended destination.

The flush method of OutputStream does nothing.

Specified by:
flush in interface Flushable
Overrides:
flush in class OutputStream
Throws:
IOException - if an I/O error occurs.

close

public void close()
           throws IOException
Closes this output stream and releases any system resources associated with this stream. The general contract of close is that it closes the output stream. A closed stream cannot perform output operations and cannot be reopened.

The close method of OutputStream does nothing.

Specified by:
close in interface Closeable
Overrides:
close in class OutputStream
Throws:
IOException - if an I/O error occurs.

write

public void write(int b)
           throws IOException
Writes the specified byte to this output stream. The general contract for write is that one byte is written to the output stream. The byte to be written is the eight low-order bits of the argument b. The 24 high-order bits of b are ignored.

Subclasses of OutputStream must provide an implementation for this method.

Specified by:
write in class OutputStream
Parameters:
b - the byte.
Throws:
IOException - if an I/O error occurs. In particular, an IOException may be thrown if the output stream has been closed.

write

public void write(byte[] b,
                  int off,
                  int len)
           throws IOException
Writes len bytes from the specified byte array starting at offset off to this output stream. The general contract for write(b, off, len) is that some of the bytes in the array b are written to the output stream in order; element b[off] is the first byte written and b[off+len-1] is the last byte written by this operation.

The write method of OutputStream calls the write method of one argument on each of the bytes to be written out. Subclasses are encouraged to override this method and provide a more efficient implementation.

If b is null, a NullPointerException is thrown.

If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown.

Overrides:
write in class OutputStream
Parameters:
b - the data.
off - the start offset in the data.
len - the number of bytes to write.
Throws:
IOException - if an I/O error occurs. In particular, an IOException is thrown if the output stream is closed.


Copyright © 2007-2013 The Apache Software Foundation. All Rights Reserved.