1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 package org.mortbay.servlet.jetty;
16
17 import java.io.IOException;
18 import java.io.OutputStream;
19 import java.io.OutputStreamWriter;
20 import java.io.PrintWriter;
21 import java.io.UnsupportedEncodingException;
22
23 import javax.servlet.FilterConfig;
24 import javax.servlet.ServletException;
25 import javax.servlet.http.HttpServletRequest;
26 import javax.servlet.http.HttpServletResponse;
27
28 import org.mortbay.io.UncheckedPrintWriter;
29 import org.mortbay.jetty.HttpConnection;
30 import org.mortbay.servlet.GzipFilter;
31
32
33
34
35
36
37
38
39
40
41
42
43
44 public class IncludableGzipFilter extends GzipFilter
45 {
46 boolean _uncheckedPrintWriter=false;
47
48 public void init(FilterConfig filterConfig) throws ServletException
49 {
50 super.init(filterConfig);
51
52 String tmp=filterConfig.getInitParameter("uncheckedPrintWriter");
53 if (tmp!=null)
54 _uncheckedPrintWriter=Boolean.valueOf(tmp).booleanValue();
55 }
56
57 protected GZIPResponseWrapper newGZIPResponseWrapper(HttpServletRequest request, HttpServletResponse response)
58 {
59 return new IncludableResponseWrapper(request,response);
60 }
61
62 public class IncludableResponseWrapper extends GzipFilter.GZIPResponseWrapper
63 {
64 public IncludableResponseWrapper(HttpServletRequest request, HttpServletResponse response)
65 {
66 super(request,response);
67 }
68
69 protected GzipStream newGzipStream(HttpServletRequest request,HttpServletResponse response,long contentLength,int bufferSize, int minGzipSize) throws IOException
70 {
71 return new IncludableGzipStream(request,response,contentLength,bufferSize,minGzipSize);
72 }
73 }
74
75 public class IncludableGzipStream extends GzipFilter.GzipStream
76 {
77 public IncludableGzipStream(HttpServletRequest request, HttpServletResponse response, long contentLength, int bufferSize, int minGzipSize)
78 throws IOException
79 {
80 super(request,response,contentLength,bufferSize,minGzipSize);
81 }
82
83 protected boolean setContentEncodingGzip()
84 {
85 HttpConnection connection = HttpConnection.getCurrentConnection();
86 connection.getResponseFields().put("Content-Encoding", "gzip");
87 return true;
88 }
89 }
90
91 protected PrintWriter newWriter(OutputStream out,String encoding) throws UnsupportedEncodingException
92 {
93 if (_uncheckedPrintWriter)
94 return encoding==null?new UncheckedPrintWriter(out):new UncheckedPrintWriter(new OutputStreamWriter(out,encoding));
95 return super.newWriter(out,encoding);
96 }
97 }