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