|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectcom.planetj.servlet.filter.compression.CompressingStreamFactory
abstract class CompressingStreamFactory
Implementations of this abstract class can add compression of a particular type to a given OutputStream
.
They each return a CompressingOutputStream
, which is just a thin wrapper on top of an OutputStream
that
adds the ability to "finish" a stream (see CompressingOutputStream
).
This class contains implementations based on several popular compression algorithms, such as gzip. For example,
the gzip implementation can decorate an OutputStream
using an instance of GZIPOutputStream
and in
that way add gzip compression to the stream.
Nested Class Summary | |
---|---|
private static class |
CompressingStreamFactory.ContentEncodingQ
|
private static class |
CompressingStreamFactory.DeflateCompressingStreamFactory
|
private static class |
CompressingStreamFactory.GZIPCompressingStreamFactory
|
private static class |
CompressingStreamFactory.ZipCompressingStreamFactory
|
Field Summary | |
---|---|
private static java.lang.String |
ANY_ENCODING
"Any encoding" content type: the "*" wildcard. |
private static java.util.Map<java.lang.String,java.lang.String> |
bestEncodingCache
Cache mapping previously seen "Accept-Encoding" header Strings to an appropriate instance of CompressingStreamFactory . |
private static java.lang.String |
COMPRESS_ENCODING
|
private static CompressingStreamFactory |
DEFLATE_CSF
Implementation based on DeflaterOutputStream . |
private static java.lang.String |
DEFLATE_ENCODING
|
private static java.util.Map<java.lang.String,CompressingStreamFactory> |
factoryMap
Maps content type String to appropriate implementation of CompressingStreamFactory . |
private static CompressingStreamFactory |
GZIP_CSF
Implementation based on GZIPOutputStream and GZIPInputStream . |
private static java.lang.String |
GZIP_ENCODING
|
(package private) static java.lang.String |
NO_ENCODING
"No encoding" content type: "identity". |
private static java.util.List<java.lang.String> |
supportedEncodings
Ordered list of preferred encodings, from most to least preferred |
private static java.lang.String |
X_COMPRESS_ENCODING
|
private static java.lang.String |
X_GZIP_ENCODING
|
private static CompressingStreamFactory |
ZIP_CSF
Implementation based on ZipOutputStream and ZipInputStream . |
Constructor Summary | |
---|---|
CompressingStreamFactory()
|
Method Summary | |
---|---|
(package private) static java.lang.String |
getBestContentEncoding(javax.servlet.http.HttpServletRequest httpRequest)
Determines best content encoding for the response, based on the request -- in particular, based on its "Accept-Encoding" header. |
(package private) abstract CompressingInputStream |
getCompressingStream(java.io.InputStream servletInputStream,
CompressingFilterContext context)
|
(package private) abstract CompressingOutputStream |
getCompressingStream(java.io.OutputStream servletOutputStream,
CompressingFilterContext context)
|
(package private) static CompressingStreamFactory |
getFactoryForContentEncoding(java.lang.String contentEncoding)
Returns the CompressingStreamFactory instance associated to the given content encoding. |
private static java.io.InputStream |
getStatsInputStream(java.io.InputStream inputStream,
CompressingFilterContext context,
CompressingFilterStats.StatsField field)
|
private static java.io.OutputStream |
getStatsOutputStream(java.io.OutputStream outputStream,
CompressingFilterContext context,
CompressingFilterStats.StatsField field)
|
(package private) static boolean |
isSupportedRequestContentEncoding(java.lang.String contentEncoding)
|
private static boolean |
isSupportedResponseContentEncoding(java.lang.String contentEncoding)
|
private static java.lang.String |
parseBestEncoding(java.lang.String acceptEncodingHeader)
|
private static CompressingStreamFactory.ContentEncodingQ |
parseContentEncodingQ(java.lang.String contentEncodingString)
|
private static java.lang.String |
selectBestEncoding(java.lang.String acceptEncodingHeader)
|
Methods inherited from class java.lang.Object |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Field Detail |
---|
private static final CompressingStreamFactory GZIP_CSF
GZIPOutputStream
and GZIPInputStream
.
private static final CompressingStreamFactory ZIP_CSF
ZipOutputStream
and ZipInputStream
.
private static final CompressingStreamFactory DEFLATE_CSF
DeflaterOutputStream
.
static final java.lang.String NO_ENCODING
private static final java.lang.String GZIP_ENCODING
private static final java.lang.String X_GZIP_ENCODING
private static final java.lang.String DEFLATE_ENCODING
private static final java.lang.String COMPRESS_ENCODING
private static final java.lang.String X_COMPRESS_ENCODING
private static final java.lang.String ANY_ENCODING
private static final java.util.List<java.lang.String> supportedEncodings
private static final java.util.Map<java.lang.String,java.lang.String> bestEncodingCache
CompressingStreamFactory
.
private static final java.util.Map<java.lang.String,CompressingStreamFactory> factoryMap
CompressingStreamFactory
.
Constructor Detail |
---|
CompressingStreamFactory()
Method Detail |
---|
abstract CompressingOutputStream getCompressingStream(java.io.OutputStream servletOutputStream, CompressingFilterContext context) throws java.io.IOException
java.io.IOException
abstract CompressingInputStream getCompressingStream(java.io.InputStream servletInputStream, CompressingFilterContext context) throws java.io.IOException
java.io.IOException
@NotNull private static java.io.OutputStream getStatsOutputStream(java.io.OutputStream outputStream, CompressingFilterContext context, CompressingFilterStats.StatsField field)
@NotNull private static java.io.InputStream getStatsInputStream(java.io.InputStream inputStream, CompressingFilterContext context, CompressingFilterStats.StatsField field)
private static boolean isSupportedResponseContentEncoding(java.lang.String contentEncoding)
static boolean isSupportedRequestContentEncoding(java.lang.String contentEncoding)
@NotNull static CompressingStreamFactory getFactoryForContentEncoding(java.lang.String contentEncoding)
CompressingStreamFactory
instance associated to the given content encoding.
contentEncoding
- content encoding (e.g. "gzip")
CompressingStreamFactory
for content encodingstatic java.lang.String getBestContentEncoding(javax.servlet.http.HttpServletRequest httpRequest)
httpRequest
- request
@NotNull private static java.lang.String parseBestEncoding(java.lang.String acceptEncodingHeader)
@NotNull private static java.lang.String selectBestEncoding(java.lang.String acceptEncodingHeader)
@NotNull private static CompressingStreamFactory.ContentEncodingQ parseContentEncodingQ(java.lang.String contentEncodingString)
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |