1 package com.atlassian.plugin.servlet.util;
2
3 import javax.servlet.ServletOutputStream;
4 import javax.servlet.WriteListener;
5 import javax.servlet.http.Cookie;
6 import javax.servlet.http.HttpServletResponse;
7 import java.io.ByteArrayOutputStream;
8 import java.io.IOException;
9 import java.io.PrintWriter;
10 import java.util.Collection;
11 import java.util.Locale;
12
13
14
15
16
17
18 public class CapturingHttpServletResponse implements HttpServletResponse {
19 private final ByteArrayOutputStream baos;
20 private final ServletOutputStream servletOutputStream;
21 private PrintWriter printWriter;
22
23 public CapturingHttpServletResponse() {
24 this.baos = new ByteArrayOutputStream();
25 servletOutputStream = new ServletOutputStream() {
26
27 @Override
28 public boolean isReady() {
29 return true;
30 }
31
32 @Override
33 public void setWriteListener(WriteListener writeListener) {
34 throw new UnsupportedOperationException();
35 }
36
37 @Override
38 public void write(final int b) throws IOException {
39 baos.write(b);
40 }
41 };
42
43 printWriter = new PrintWriter(servletOutputStream);
44 }
45
46 @Override
47 public ServletOutputStream getOutputStream() throws IOException {
48 return servletOutputStream;
49 }
50
51 @Override
52 public PrintWriter getWriter() throws IOException {
53 return printWriter;
54 }
55
56 @Override
57 public String toString() {
58 return baos.toString();
59 }
60
61
62 @Override
63 public void addCookie(final Cookie cookie) {
64 }
65
66 @Override
67 public boolean containsHeader(final String name) {
68 return false;
69 }
70
71 @Override
72 public String encodeURL(final String url) {
73 return null;
74 }
75
76 @Override
77 public String encodeRedirectURL(final String url) {
78 return null;
79 }
80
81 @Override
82 public String encodeUrl(final String url) {
83 return null;
84 }
85
86 @Override
87 public String encodeRedirectUrl(final String url) {
88 return null;
89 }
90
91 @Override
92 public void sendError(final int sc, final String msg) throws IOException {
93 }
94
95 @Override
96 public void sendError(final int sc) throws IOException {
97 }
98
99 @Override
100 public void sendRedirect(final String location) throws IOException {
101 }
102
103 @Override
104 public void setDateHeader(final String name, final long date) {
105 }
106
107 @Override
108 public void addDateHeader(final String name, final long date) {
109 }
110
111 @Override
112 public void setHeader(final String name, final String value) {
113 }
114
115 @Override
116 public void addHeader(final String name, final String value) {
117 }
118
119 @Override
120 public void setIntHeader(final String name, final int value) {
121 }
122
123 @Override
124 public void addIntHeader(final String name, final int value) {
125 }
126
127 @Override
128 public void setStatus(final int sc) {
129 }
130
131 @Override
132 public void setStatus(final int sc, final String sm) {
133 }
134
135 @Override
136 public String getCharacterEncoding() {
137 return null;
138 }
139
140 @Override
141 public void setContentLength(final int len) {
142 }
143
144 @Override
145 public void setContentType(final String type) {
146 }
147
148 @Override
149 public void setBufferSize(final int size) {
150 }
151
152 @Override
153 public int getBufferSize() {
154 return 0;
155 }
156
157 @Override
158 public void flushBuffer() throws IOException {
159 printWriter.flush();
160 }
161
162 @Override
163 public void resetBuffer() {
164 }
165
166 @Override
167 public boolean isCommitted() {
168 return false;
169 }
170
171 @Override
172 public void reset() {
173 }
174
175 @Override
176 public void setLocale(final Locale loc) {
177 }
178
179 @Override
180 public Locale getLocale() {
181 return null;
182 }
183
184
185
186 @Override
187 public void setCharacterEncoding(String charset) {
188 }
189
190 @Override
191 public int getStatus() {
192 return 0;
193 }
194
195 @Override
196 public String getHeader(String name) {
197 return null;
198 }
199
200 @Override
201 public Collection<String> getHeaders(String name) {
202 return null;
203 }
204
205 @Override
206 public Collection<String> getHeaderNames() {
207 return null;
208 }
209
210 @Override
211 public String getContentType() {
212 return null;
213 }
214
215
216
217 @Override
218 public void setContentLengthLong(long len) {
219 }
220 }