KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > openedit > servlet > gzip > GzipResponseWrapper


1 package com.openedit.servlet.gzip;
2
3 import java.io.IOException JavaDoc;
4 import java.io.OutputStreamWriter JavaDoc;
5 import java.io.PrintWriter JavaDoc;
6
7 import javax.servlet.ServletOutputStream JavaDoc;
8 import javax.servlet.http.HttpServletResponse JavaDoc;
9 import javax.servlet.http.HttpServletResponseWrapper JavaDoc;
10
11 public class GzipResponseWrapper extends HttpServletResponseWrapper JavaDoc {
12   protected HttpServletResponse JavaDoc origResponse = null;
13   protected ServletOutputStream JavaDoc stream = null;
14   protected PrintWriter JavaDoc writer = null;
15
16   public GzipResponseWrapper(HttpServletResponse JavaDoc response) {
17     super(response);
18     origResponse = response;
19   }
20
21   public ServletOutputStream JavaDoc createOutputStream() throws IOException JavaDoc {
22     return (new GzipResponseStream(origResponse));
23   }
24
25   public void finishResponse() {
26     try {
27       if (writer != null) {
28         writer.close();
29       } else {
30         if (stream != null) {
31           stream.close();
32         }
33       }
34     } catch (IOException JavaDoc e) {}
35   }
36
37   public void flushBuffer() throws IOException JavaDoc {
38     stream.flush();
39   }
40
41   public ServletOutputStream JavaDoc getOutputStream() throws IOException JavaDoc {
42     if (writer != null) {
43       throw new IllegalStateException JavaDoc("getWriter() has already been called!");
44     }
45
46     if (stream == null)
47       stream = createOutputStream();
48     return (stream);
49   }
50
51   public PrintWriter JavaDoc getWriter() throws IOException JavaDoc {
52     if (writer != null) {
53       return (writer);
54     }
55
56     if (stream != null) {
57       throw new IllegalStateException JavaDoc("getOutputStream() has already been called!");
58     }
59
60    stream = createOutputStream();
61    // BUG FIX 2003-12-01 Reuse content's encoding, don't assume UTF-8
62
writer = new PrintWriter JavaDoc(new OutputStreamWriter JavaDoc(stream, origResponse.getCharacterEncoding()));
63    return (writer);
64   }
65
66   public void setContentLength(int length) {}
67 }
68
Popular Tags