From: markt Date: Sat, 27 Jan 2007 23:07:51 +0000 (+0000) Subject: Port fix bug 39572. Improvements to CompressionFilter provided by Eric Hedström.... X-Git-Url: https://git.internetallee.de/?a=commitdiff_plain;h=42a1eb4baa1ed94fd23cb5e14a92ddcab5ea3930;p=tomcat7.0 Port fix bug 39572. Improvements to CompressionFilter provided by Eric Hedström. Also cleaned up unused imports and methods. git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@500668 13f79535-47bb-0310-9956-ffa450edef68 --- diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml index 7147916ab..5fcab1ff6 100644 --- a/webapps/docs/changelog.xml +++ b/webapps/docs/changelog.xml @@ -86,6 +86,10 @@ Update all webapps to use the servlet 2.5 xsd. (markt) + + 39572: Improvements to CompressionFilter example provided by + Eric Hedström. (markt) + diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java index a4152b8f6..71ea631e9 100644 --- a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java +++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionFilterTestServlet.java @@ -18,7 +18,6 @@ package compressionFilters; import java.io.IOException; -import java.io.PrintWriter; import java.util.Enumeration; import javax.servlet.*; import javax.servlet.http.*; diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java index ec2ecfb42..1ec0215be 100644 --- a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java +++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionResponseStream.java @@ -81,7 +81,7 @@ public class CompressionResponseStream /** * The underlying gzip output stream to which we should write data. */ - protected GZIPOutputStream gzipstream = null; + protected OutputStream gzipstream = null; /** * Has this stream been closed? @@ -295,8 +295,14 @@ public class CompressionResponseStream if (debug > 1) { System.out.println("new GZIPOutputStream"); } - response.addHeader("Content-Encoding", "gzip"); - gzipstream = new GZIPOutputStream(output); + if (response.isCommitted()) { + if (debug > 1) + System.out.print("Response already committed. Using original output stream"); + gzipstream = output; + } else { + response.addHeader("Content-Encoding", "gzip"); + gzipstream = new GZIPOutputStream(output); + } } gzipstream.write(b, off, len); diff --git a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java index 23dd9fcad..274922ded 100644 --- a/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java +++ b/webapps/examples/WEB-INF/classes/compressionFilters/CompressionServletResponseWrapper.java @@ -17,16 +17,9 @@ package compressionFilters; import java.io.IOException; -import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; -import java.util.Locale; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.ServletException; import javax.servlet.ServletOutputStream; -import javax.servlet.ServletResponse; -import javax.servlet.ServletResponseWrapper; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpServletResponseWrapper; @@ -249,29 +242,4 @@ public class CompressionServletResponseWrapper extends HttpServletResponseWrappe public void setContentLength(int length) { } - - /** - * Returns character from content type. This method was taken from tomcat. - * @author rajo - */ - private static String getCharsetFromContentType(String type) { - - if (type == null) { - return null; - } - int semi = type.indexOf(";"); - if (semi == -1) { - return null; - } - String afterSemi = type.substring(semi + 1); - int charsetLocation = afterSemi.indexOf("charset="); - if(charsetLocation == -1) { - return null; - } else { - String afterCharset = afterSemi.substring(charsetLocation + 8); - String encoding = afterCharset.trim(); - return encoding; - } - } - }