1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.hadoop.hbase.rest.filter;
22
23 import java.io.IOException;
24 import java.util.zip.GZIPOutputStream;
25
26 import javax.servlet.ServletOutputStream;
27 import javax.servlet.http.HttpServletResponse;
28
29 public class GZIPResponseStream extends ServletOutputStream
30 {
31 private HttpServletResponse response;
32 private GZIPOutputStream out;
33
34 public GZIPResponseStream(HttpServletResponse response) throws IOException {
35 this.response = response;
36 this.out = new GZIPOutputStream(response.getOutputStream());
37 response.addHeader("Content-Encoding", "gzip");
38 }
39
40 public void resetBuffer() {
41 if (out != null && !response.isCommitted()) {
42 response.setHeader("Content-Encoding", null);
43 }
44 out = null;
45 }
46
47 @Override
48 public void write(int b) throws IOException {
49 out.write(b);
50 }
51
52 @Override
53 public void write(byte[] b) throws IOException {
54 out.write(b);
55 }
56
57 @Override
58 public void write(byte[] b, int off, int len) throws IOException {
59 out.write(b, off, len);
60 }
61
62 @Override
63 public void close() throws IOException {
64 finish();
65 out.close();
66 }
67
68 @Override
69 public void flush() throws IOException {
70 out.flush();
71 }
72
73 public void finish() throws IOException {
74 out.finish();
75 }
76 }