From 42a1eb4baa1ed94fd23cb5e14a92ddcab5ea3930 Mon Sep 17 00:00:00 2001 From: markt Date: Sat, 27 Jan 2007 23:07:51 +0000 Subject: [PATCH] =?utf8?q?Port=20fix=20bug=2039572.=20Improvements=20to=20?= =?utf8?q?CompressionFilter=20provided=20by=20Eric=20Hedstr=C3=B6m.=20Also?= =?utf8?q?=20cleaned=20up=20unused=20imports=20and=20methods.?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@500668 13f79535-47bb-0310-9956-ffa450edef68 --- webapps/docs/changelog.xml | 4 +++ .../CompressionFilterTestServlet.java | 1 - .../CompressionResponseStream.java | 12 ++++++-- .../CompressionServletResponseWrapper.java | 32 ---------------------- 4 files changed, 13 insertions(+), 36 deletions(-) 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; - } - } - } -- 2.11.0