1
14
15 package com.liferay.portlet;
16
17 import com.liferay.util.servlet.NullServletOutputStream;
18
19 import java.io.IOException;
20 import java.io.PrintWriter;
21
22 import java.util.Locale;
23
24 import javax.portlet.ActionResponse;
25 import javax.portlet.MimeResponse;
26 import javax.portlet.PortletRequest;
27
28 import javax.servlet.ServletOutputStream;
29 import javax.servlet.http.Cookie;
30 import javax.servlet.http.HttpServletResponse;
31 import javax.servlet.http.HttpServletResponseWrapper;
32
33
38 public class PortletServletResponse extends HttpServletResponseWrapper {
39
40 public PortletServletResponse(
41 HttpServletResponse response, PortletResponseImpl portletResponseImpl,
42 boolean include) {
43
44 super(response);
45
46 _response = response;
47 _portletResponseImpl = portletResponseImpl;
48 _include = include;
49 _lifecycle = _portletResponseImpl.getLifecycle();
50 }
51
52 public void addCookie(Cookie cookie) {
53 if (!_include) {
54 _portletResponseImpl.addProperty(cookie);
55 }
56 }
57
58 public void addDateHeader(String name, long date) {
59 addHeader(name, String.valueOf(date));
60 }
61
62 public void addHeader(String name, String value) {
63 if (!_include) {
64 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
65 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
66
67 HttpServletResponse response =
68 _portletResponseImpl.getHttpServletResponse();
69
70 response.addHeader(name, value);
71 }
72 }
73 }
74
75 public void addIntHeader(String name, int value) {
76 addHeader(name, String.valueOf(value));
77 }
78
79 public boolean containsHeader(String name) {
80 return false;
81 }
82
83 public String encodeRedirectURL(String url) {
84 return null;
85 }
86
87 public String encodeRedirectUrl(String url) {
88 return null;
89 }
90
91 public String encodeURL(String url) {
92 return _portletResponseImpl.encodeURL(url);
93 }
94
95 public String encodeUrl(String url) {
96 return _portletResponseImpl.encodeURL(url);
97 }
98
99 public void flushBuffer() throws IOException {
100 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
101 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
102
103 _response.flushBuffer();
104 }
105 }
106
107 public int getBufferSize() {
108 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
109 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
110
111 return _response.getBufferSize();
112 }
113 else {
114 return 0;
115 }
116 }
117
118 public String getCharacterEncoding() {
119 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
120 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
121
122 return _response.getCharacterEncoding();
123 }
124 else {
125 return null;
126 }
127 }
128
129 public String getContentType() {
130 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
131 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
132
133 return ((MimeResponse)_portletResponseImpl).getContentType();
134 }
135 else {
136 return null;
137 }
138 }
139
140 public Locale getLocale() {
141 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
142 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
143
144 return _response.getLocale();
145 }
146 else {
147 return null;
148 }
149 }
150
151 public ServletOutputStream getOutputStream() throws IOException {
152 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
153 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
154
155 return _response.getOutputStream();
156 }
157 else {
158 return new NullServletOutputStream();
159 }
160 }
161
162 public PrintWriter getWriter() throws IOException {
163 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
164 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
165
166 return _response.getWriter();
167 }
168 else {
169 return new PrintWriter(new NullServletOutputStream());
170 }
171 }
172
173 public boolean isCommitted() {
174 if (!_include) {
175 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
176 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
177
178 return _response.isCommitted();
179 }
180 else {
181 return false;
182 }
183 }
184 else {
185 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
186 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
187
188 return _response.isCommitted();
189 }
190 else {
191 return true;
192 }
193 }
194 }
195
196 public void reset() {
197 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
198 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
199
200 _response.reset();
201 }
202 }
203
204 public void resetBuffer() {
205 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
206 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
207
208 _response.resetBuffer();
209 }
210 }
211
212 public void sendError(int status) {
213 }
214
215 public void sendError(int status, String msg) {
216 }
217
218 public void sendRedirect(String location) throws IOException {
219 if (!_include) {
220 if (_lifecycle.equals(PortletRequest.ACTION_PHASE)) {
221 ((ActionResponse)_portletResponseImpl).sendRedirect(location);
222 }
223 }
224 }
225
226 public void setBufferSize(int bufferSize) {
227 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
228 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
229
230 _response.setBufferSize(bufferSize);
231 }
232 }
233
234 public void setCharacterEncoding(String encoding) {
235 if (!_include) {
236 if (_lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
237 _response.setCharacterEncoding(encoding);
238 }
239 }
240 }
241
242 public void setContentLength(int length) {
243 if (!_include) {
244 if (_lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
245 _response.setContentLength(length);
246 }
247 }
248 }
249
250 public void setContentType(String contentType) {
251 if (!_include) {
252 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
253 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
254
255 ((MimeResponse)_portletResponseImpl).setContentType(
256 contentType);
257 }
258 }
259 }
260
261 public void setDateHeader(String name, long date) {
262 setHeader(name, String.valueOf(date));
263 }
264
265 public void setHeader(String name, String value) {
266 if (!_include) {
267 if (_lifecycle.equals(PortletRequest.RENDER_PHASE) ||
268 _lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
269
270 HttpServletResponse response =
271 _portletResponseImpl.getHttpServletResponse();
272
273 response.setHeader(name, value);
274 }
275 }
276 }
277
278 public void setIntHeader(String name, int value) {
279 setHeader(name, String.valueOf(value));
280 }
281
282 public void setLocale(Locale locale) {
283 if (!_include) {
284 if (_lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
285 _response.setLocale(locale);
286 }
287 }
288 }
289
290 public void setStatus(int status) {
291 if (!_include) {
292 if (_lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
293 _response.setStatus(status);
294 }
295 }
296 }
297
298 public void setStatus(int status, String msg) {
299 setStatus(status);
300 }
301
302 private HttpServletResponse _response;
303 private PortletResponseImpl _portletResponseImpl;
304 private boolean _include;
305 private String _lifecycle;
306
307 }