Version 1.7 2009-05-11
- Now does not compress content types like application/gzip
- Won't compress responses that already have a Content-Encoding
like gzip
Version 1.7 2009-05-01
- Attempt to accommodate very large responses whose Content-Length
header value exceeds Integer.MAX_VALUE
- Always set Vary header
- Now attempts to set a modified ETag header when compressing
- Now avoid compressing if Cache-Control: no-transform is set
- Correctly handle multiple values in Content-Encoding header; other
transforms are preserved
- Now should support deflated requests
- Update to latest support libs, like Mockrunner 0.4.1
- Various updates to match my current preferred coding style; small
code tweaks and additional logging
Version 1.6.6, 2007-09-20
- Bug fix: empty response is no longer compressed, avoiding exception
in compress/ZipOutputStream in this situation
- Modest code tweaks from static analysis
Version 1.6.5, 2007-07-14
- Added includeUserAgentPatterns and excludeUserAgentPatterns
parameters to compress based on User-Agent
- Minor updates to use generic types in Enumerator, Iterator
references
- Update to Mockrunner 0.4, newer IntelliJ annotations
- Properly included some licenses
Version 1.6.4, 2006-12-11
- Bug fix: close() and flush() implementations probably shouldn't
throw IllegalStateException if the stream is already closed.
In at least one case, Jetty gets confused by this.
- But they do need to throw IOException, apparently, if a write- or
print-like method is called. Jetty wants this.
- Small improvement: if compressionThreshold is 0, compression begins
earlier, saving a bit of overhead
- flush() implementations will now definitely flush all output to the
response, even if it means beginning compression early.
Version 1.4.6, 2006-11-17
- Bug fix / improvement: handles case where setContentType() is
called after getOutputStream(), such that parameters includeContentType
and excludeContentType work even in this case.
- Bug fix: response input/compressed bytes stats were swapped!
(1.6.1 never got released)
Version 1.6.2, 2006-10-15
- Fixed bug #1571644: JakartaCommonsLoggingImpl and JavaUtilLoggingImpl are now public so that they may be instantiated by reflection correctly.
Version 1.6.1, 2006-09-01
- Now prefers certain encodings to others when Accept-Encoding header says several are equally good. For example, Accept-Encoding: deflate,gzip now gets gzip rather than deflate.
- Also fixed a potential bug in a rare case where the most-preferred encoding in the header was not supported, even though a less preferred encoding was. Filter was not compressing in this case.
Version 1.6, 2006-07-05
- Added support for compressed requests, including stats
- X-Compressed-By header only enabled in debug mode now
- Accept-Encoding header suppressed downstream if filter is handling
compression
- Minor unit tests fixes and improvements
- Update to latest JUnit, Mockrunner, Commons Logging
1.6 is nearly ready (just needs unit testing), which includes support for compressed requests and a few other minor tweaks. This may be very useful to those running servlet-based web services engines like Axis; now large XML requests can be sent across the network compressed.
Added a new feature, include/excludePathPatterns parameters, and cleaned up unit test situation while upgrading to mockrunner 0.6.3
Version 1.5.1, 2005-08-06
- More code cleanup following my update to IntelliJ 5.0
- Added ability to also log messages to java.util.logging.Logger
or a Jakarta Commons Log
1.4.4 simply backports the logging feature. 1.4.4 continues to be compatible with JDK 1.3.
I've also released version 1.5, which is identical to 1.4.3 except that it takes full advantage of new language features from JDK 1.4 and 1.5. It is also now guaranteed compatible with J2EE 1.4.
I will continue to back port bug fixes to 1.4.x for some time -- users that can't update to JDK 1.5, don't worry.
This release just contains a minor workaround -- I won't call it a bug fix -- for users of OC4J. It seems to want to close() and flush() a closed ServletOutputStream. The code now silently ignores this rather than throw an exception. The code around close() and flush() was streamlined a little bit too, and I added a load testing test class.
Hello all. I'm considering using JDK 5.0 features in this project. I'd like to use assert again, and possibly some generics, and other language features to improve the code. This wouldn't happen any time soon since it would require JDK 5.0 to compile and use the filter. Out of curiosity, how many users are not on JDK 5.0 and don't plan to migrate soon?
Don't worry, I'd continue to maintain a JDK 1.3-friendly version for a while too.
This version is a little smarter about content length -- if it's told upfront that the response is large, it will skip straight to compression.
This change required me to rewrite and simplify other code to get right. As a result the filter is a little stricter about setting headers *before* writing content. This shouldn't affect well-behaved apps.
Also included are a pair of minor fixes. Post feedback or problems to the forums please.
Get 1.3 now! This release includes some important bug fixes, as well as the ability to include/exclude certain content types. Enjoy and report any trouble.
This version is taking several tries to get right. I have just sent the latest release to some users who are testing this new version for me; if all is well it will be released before the new year.
I have completed fixes for a few recently reported bugs, and have add the include/exclude content type parameters. I will send the update to those who have reported bugs and requested this feature for quick testing, then release it if all is well.
Version 1.2, 2004-11-26
- Fixed bug that arose when application closed the output stream
- Application can now force encoding used in response
- Commented out assertions in released code to allow compilation under JDK 1.3
- Serializable classes now better follow conventions (e.g. include a serialVersionUID field)
This release was prompted by a bug fix: CompressingFilter will work correctly when app server applies this filter multiples times to the same request. I've also fixed the license so that the Apache 2.0 license is used everywhere -- use of the GPL was my mistake. Also I reorganized the code a little in this release.
1.1 is out, so soon! This release includes stats and some minor bug fixes. Please don't hesitate to post feedback or bugs here.
Welcome! Version 1.0 is complete and looking good, and will be released in the next day or so, once I package up the release nicely.
I'm expecting some possible problems with particular app servers, or particular browsers that I have not been able to test, so please report any issues in Tracker.