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