1 package com.openedit.servlet.gzip; 2 3 import java.io.IOException ; 4 import java.io.OutputStreamWriter ; 5 import java.io.PrintWriter ; 6 7 import javax.servlet.ServletOutputStream ; 8 import javax.servlet.http.HttpServletResponse ; 9 import javax.servlet.http.HttpServletResponseWrapper ; 10 11 public class GzipResponseWrapper extends HttpServletResponseWrapper { 12 protected HttpServletResponse origResponse = null; 13 protected ServletOutputStream stream = null; 14 protected PrintWriter writer = null; 15 16 public GzipResponseWrapper(HttpServletResponse response) { 17 super(response); 18 origResponse = response; 19 } 20 21 public ServletOutputStream createOutputStream() throws IOException { 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 e) {} 35 } 36 37 public void flushBuffer() throws IOException { 38 stream.flush(); 39 } 40 41 public ServletOutputStream getOutputStream() throws IOException { 42 if (writer != null) { 43 throw new IllegalStateException ("getWriter() has already been called!"); 44 } 45 46 if (stream == null) 47 stream = createOutputStream(); 48 return (stream); 49 } 50 51 public PrintWriter getWriter() throws IOException { 52 if (writer != null) { 53 return (writer); 54 } 55 56 if (stream != null) { 57 throw new IllegalStateException ("getOutputStream() has already been called!"); 58 } 59 60 stream = createOutputStream(); 61 writer = new PrintWriter (new OutputStreamWriter (stream, origResponse.getCharacterEncoding())); 63 return (writer); 64 } 65 66 public void setContentLength(int length) {} 67 } 68 | Popular Tags |