com.jfw.web.filter
Class CompressionResponseStream

java.lang.Object
  extended by java.io.OutputStream
      extended by javax.servlet.ServletOutputStream
          extended by com.jfw.web.filter.CompressionResponseStream
All Implemented Interfaces:
java.io.Closeable, java.io.Flushable

public class CompressionResponseStream
extends javax.servlet.ServletOutputStream

Implementation of ServletOutputStream that works with the CompressionServletResponseWrapper implementation.


Field Summary
protected  byte[] buffer
          The buffer through which all of our output bytes are passed.
protected  int bufferCount
          The number of data bytes currently in the buffer.
protected  java.lang.String className
           
protected  boolean closed
          Has this stream been closed?
protected  int compressionThreshold
          The threshold number which decides to compress or not.
protected  java.util.zip.GZIPOutputStream gzipstream
          The underlying gzip output stream to which we should write data.
protected  int length
          The content length past which we will not write, or -1 if there is no defined content length.
protected static JFWLogger logger
           
protected  javax.servlet.ServletOutputStream output
          The underlying servket output stream to which we should write data.
protected  javax.servlet.http.HttpServletResponse response
          The response with which this servlet output stream is associated.
 
Constructor Summary
CompressionResponseStream(javax.servlet.http.HttpServletResponse response)
          Construct a servlet output stream associated with the specified Response.
 
Method Summary
 void close()
          Close this output stream, causing any buffered data to be flushed and any further output data to throw an IOException.
 boolean closed()
          Has this response stream been closed?
 void flush()
          Flush any buffered data for this output stream, which also causes the response to be committed.
 void flushToGZip()
           
protected  void setBuffer(int threshold)
          Set the compressionThreshold number and create buffer for this size
 void write(byte[] b)
          Write b.length bytes from the specified byte array to our output stream.
 void write(byte[] b, int off, int len)
          Write len bytes from the specified byte array, starting at the specified offset, to our output stream.
 void write(int b)
          Write the specified byte to our output stream.
 void writeToGZip(byte[] b, int off, int len)
           
 
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.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

compressionThreshold

protected int compressionThreshold
The threshold number which decides to compress or not. Users can configure in web.xml to set it to fit their needs.


buffer

protected byte[] buffer
The buffer through which all of our output bytes are passed.


bufferCount

protected int bufferCount
The number of data bytes currently in the buffer.


gzipstream

protected java.util.zip.GZIPOutputStream gzipstream
The underlying gzip output stream to which we should write data.


closed

protected boolean closed
Has this stream been closed?


length

protected int length
The content length past which we will not write, or -1 if there is no defined content length.


response

protected javax.servlet.http.HttpServletResponse response
The response with which this servlet output stream is associated.


output

protected javax.servlet.ServletOutputStream output
The underlying servket output stream to which we should write data.


className

protected final java.lang.String className

logger

protected static final JFWLogger logger
Constructor Detail

CompressionResponseStream

public CompressionResponseStream(javax.servlet.http.HttpServletResponse response)
                          throws java.io.IOException
Construct a servlet output stream associated with the specified Response.

Parameters:
response - The associated response
Throws:
java.io.IOException
Method Detail

setBuffer

protected void setBuffer(int threshold)
Set the compressionThreshold number and create buffer for this size


close

public void close()
           throws java.io.IOException
Close this output stream, causing any buffered data to be flushed and any further output data to throw an IOException.

Specified by:
close in interface java.io.Closeable
Overrides:
close in class java.io.OutputStream
Throws:
java.io.IOException

flush

public void flush()
           throws java.io.IOException
Flush any buffered data for this output stream, which also causes the response to be committed.

Specified by:
flush in interface java.io.Flushable
Overrides:
flush in class java.io.OutputStream
Throws:
java.io.IOException

flushToGZip

public void flushToGZip()
                 throws java.io.IOException
Throws:
java.io.IOException

write

public void write(int b)
           throws java.io.IOException
Write the specified byte to our output stream.

Specified by:
write in class java.io.OutputStream
Parameters:
b - The byte to be written
Throws:
java.io.IOException - if an input/output error occurs

write

public void write(byte[] b)
           throws java.io.IOException
Write b.length bytes from the specified byte array to our output stream.

Overrides:
write in class java.io.OutputStream
Parameters:
b - The byte array to be written
Throws:
java.io.IOException - if an input/output error occurs

write

public void write(byte[] b,
                  int off,
                  int len)
           throws java.io.IOException
Write len bytes from the specified byte array, starting at the specified offset, to our output stream.

Overrides:
write in class java.io.OutputStream
Parameters:
b - The byte array containing the bytes to be written
off - Zero-relative starting offset of the bytes to be written
len - The number of bytes to be written
Throws:
java.io.IOException - if an input/output error occurs

writeToGZip

public void writeToGZip(byte[] b,
                        int off,
                        int len)
                 throws java.io.IOException
Throws:
java.io.IOException

closed

public boolean closed()
Has this response stream been closed?