KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > sslexplorer > core > filters > GZIPResponseWrapper


1 /*
2  * Copyright 2003 Jayson Falkner (jayson@jspinsider.com)
3  * This code is from "Servlets and JavaServer pages; the J2EE Web Tier",
4  * http://www.jspbook.com. You may freely use the code both commercially
5  * and non-commercially. If you like the code, please pick up a copy of
6  * the book and help support the authors, development of more free code,
7  * and the JSP/Servlet/J2EE community.
8  */

9 package com.sslexplorer.core.filters;
10
11 import java.io.IOException JavaDoc;
12 import java.io.OutputStreamWriter JavaDoc;
13 import java.io.PrintWriter JavaDoc;
14
15 import javax.servlet.ServletOutputStream JavaDoc;
16 import javax.servlet.http.HttpServletResponse JavaDoc;
17 import javax.servlet.http.HttpServletResponseWrapper JavaDoc;
18
19 public class GZIPResponseWrapper extends HttpServletResponseWrapper JavaDoc {
20   protected HttpServletResponse JavaDoc origResponse = null;
21   protected ServletOutputStream JavaDoc stream = null;
22   protected PrintWriter JavaDoc writer = null;
23     protected boolean compress = true;
24
25   public GZIPResponseWrapper(HttpServletResponse JavaDoc response) {
26     super(response);
27     origResponse = response;
28   }
29
30     public ServletOutputStream JavaDoc createOutputStream() throws IOException JavaDoc {
31         return compress ? (new GZIPResponseStream(origResponse)) : origResponse.getOutputStream();
32     }
33
34     public void setCompress(boolean compress) throws IOException JavaDoc {
35         if (stream != null) {
36             throw new IOException JavaDoc("Cannot set compress after stream has been set.");
37         }
38         this.compress = compress;
39     }
40
41   public void finishResponse() {
42     try {
43       if (writer != null) {
44           writer.close();
45       } else {
46         if (stream != null) {
47           stream.close();
48         }
49       }
50     } catch (IOException JavaDoc e) {}
51   }
52
53   public void flushBuffer() throws IOException JavaDoc {
54     stream.flush();
55   }
56
57   public ServletOutputStream JavaDoc getOutputStream() throws IOException JavaDoc {
58     if (writer != null) {
59       throw new IllegalStateException JavaDoc("getWriter() has already been called!");
60     }
61
62     if (stream == null)
63       stream = createOutputStream();
64     return (stream);
65   }
66
67   public PrintWriter JavaDoc getWriter() throws IOException JavaDoc {
68     if (writer != null) {
69       return (writer);
70     }
71
72     if (stream != null) {
73       throw new IllegalStateException JavaDoc("getOutputStream() has already been called!");
74     }
75
76    stream = createOutputStream();
77    writer = new PrintWriter JavaDoc(new OutputStreamWriter JavaDoc(stream, System.getProperty("sslexplorer.encoding", "UTF-8")));
78    return (writer);
79   }
80
81   public void setContentLength(int length) {}
82 }
83
Popular Tags