1
22
23 package com.liferay.filters.strip;
24
25 import com.liferay.portal.kernel.util.ByteArrayMaker;
26
27 import java.io.IOException;
28 import java.io.OutputStreamWriter;
29 import java.io.PrintWriter;
30
31 import javax.servlet.ServletOutputStream;
32 import javax.servlet.http.HttpServletResponse;
33 import javax.servlet.http.HttpServletResponseWrapper;
34
35
41 public class StripResponse extends HttpServletResponseWrapper {
42
43 public StripResponse(HttpServletResponse res) {
44 super(res);
45 }
46
47 public void finishResponse() {
48 try {
49 if (_writer != null) {
50 _writer.close();
51 }
52 else if (_stream != null) {
53 _stream.close();
54 }
55 }
56 catch (IOException e) {
57 }
58 }
59
60 public void flushBuffer() throws IOException {
61 if (_stream != null) {
62 _stream.flush();
63 }
64 }
65
66 public ServletOutputStream getOutputStream() throws IOException {
67 if (_writer != null) {
68 throw new IllegalStateException();
69 }
70
71 if (_stream == null) {
72 _stream = _createOutputStream();
73 }
74
75 return _stream;
76 }
77
78 public PrintWriter getWriter() throws IOException {
79 if (_writer != null) {
80 return _writer;
81 }
82
83 if (_stream != null) {
84 throw new IllegalStateException();
85 }
86
87 _stream = _createOutputStream();
88
89 _writer = new PrintWriter(new OutputStreamWriter(
90 _stream, StripFilter.ENCODING));
92
93 return _writer;
94 }
95
96 public boolean isCommitted() {
97 if (_stream != null) {
98 return true;
99 }
100 else {
101 return super.isCommitted();
102 }
103 }
104
105 public String getContentType() {
106 return _contentType;
107 }
108
109 public void setContentType(String contentType) {
110 _contentType = contentType;
111
112 super.setContentType(contentType);
113 }
114
115 public byte[] getData() {
116 finishResponse();
117
118 return _bam.toByteArray();
119 }
120
121 private ServletOutputStream _createOutputStream() throws IOException {
122 return new StripStream(_bam);
123 }
124
125 private ByteArrayMaker _bam = new ByteArrayMaker();
126 private ServletOutputStream _stream = null;
127 private PrintWriter _writer = null;
128 private String _contentType;
129
130 }