View Javadoc
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   * A {@link javax.servlet.http.HttpServletResponse} that captures its output (in platform specific charset!)
15   *
16   * @since v4.0
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     // Servlet 3.0 methods
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     // Servlet 3.1 methods
216 
217     @Override
218     public void setContentLengthLong(long len) {
219     }
220 }