/**
* The underlying gzip output stream to which we should write data.
*/
- protected GZIPOutputStream gzipstream = null;
+ protected OutputStream gzipstream = null;
/**
* Has this stream been closed?
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);
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;
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;
- }
- }
-
}