From 75c09d3aeffa9a22bf69a181be50f00bdf5bf7d9 Mon Sep 17 00:00:00 2001 From: Harald Kuhr Date: Thu, 21 Jun 2012 10:55:14 +0200 Subject: [PATCH] Now sets Vary header. Minor code clean up & fixes. --- .../servlet/gzip/GZIPFilter.java | 1 - .../servlet/gzip/GZIPResponseWrapper.java | 42 +++++++++---------- 2 files changed, 20 insertions(+), 23 deletions(-) diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPFilter.java b/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPFilter.java index f30d9c6a..99486fa8 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPFilter.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPFilter.java @@ -122,7 +122,6 @@ public class GZIPFilter extends GenericFilter { String accept = request.getHeader("Accept-Encoding"); if (accept != null && accept.contains("gzip")) { //System.out.println("GZIP supported, compressing."); - // TODO: Set Vary: Accept-Encoding ?! GZIPResponseWrapper wrapped = new GZIPResponseWrapper(response); try { diff --git a/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPResponseWrapper.java b/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPResponseWrapper.java index b6e4fd55..84bc0357 100755 --- a/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPResponseWrapper.java +++ b/servlet/src/main/java/com/twelvemonkeys/servlet/gzip/GZIPResponseWrapper.java @@ -51,6 +51,8 @@ import java.util.zip.GZIPOutputStream; * @version $Id: GZIPResponseWrapper.java#1 $ */ public class GZIPResponseWrapper extends HttpServletResponseWrapper { + // TODO: Remove/update ETags if needed? Read the spec (RFC 2616) on Vary/ETag for caching + protected ServletOutputStream out; protected PrintWriter writer; protected GZIPOutputStream gzipOut; @@ -58,7 +60,9 @@ public class GZIPResponseWrapper extends HttpServletResponseWrapper { public GZIPResponseWrapper(final HttpServletResponse response) { super(response); + response.addHeader("Content-Encoding", "gzip"); + response.addHeader("Vary", "Accept"); } public ServletOutputStream createOutputStream() throws IOException { @@ -76,31 +80,25 @@ public class GZIPResponseWrapper extends HttpServletResponseWrapper { } // TODO: Move this to flushbuffer or something? Hmmm.. - public void flushResponse() { + public void flushResponse() throws IOException { try { - try { - // Finish GZIP encodig - if (gzipOut != null) { - gzipOut.finish(); - } + // Finish GZIP encodig + if (gzipOut != null) { + gzipOut.finish(); + } - flushBuffer(); - } - finally { - // Close stream - if (writer != null) { - writer.close(); - } - else { - if (out != null) { - out.close(); - } - } - } + flushBuffer(); } - catch (IOException e) { - // TODO: Fix this one... - e.printStackTrace(); + finally { + // Close stream + if (writer != null) { + writer.close(); + } + else { + if (out != null) { + out.close(); + } + } } }