001: /*
002: * Copyright (c) 1998-2001 Caucho Technology -- all rights reserved
003: *
004: * This file is part of Resin(R) Open Source
005: *
006: * Each copy or derived work must preserve the copyright notice and this
007: * notice unmodified.
008: *
009: * Resin Open Source is free software; you can redistribute it and/or modify
010: * it under the terms of the GNU General Public License as published by
011: * the Free Software Foundation; either version 2 of the License, or
012: * (at your option) any later version.
013: *
014: * Resin Open Source is distributed in the hope that it will be useful,
015: * but WITHOUT ANY WARRANTY; without even the implied warranty of
016: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE, or any warranty
017: * of NON-INFRINGEMENT. See the GNU General Public License for more
018: * details.
019: *
020: * You should have received a copy of the GNU General Public License
021: * along with Resin Open Source; if not, write to the
022: * Free SoftwareFoundation, Inc.
023: * 59 Temple Place, Suite 330
024: * Boston, MA 02111-1307 USA
025: *
026: * @author Scott Ferguson
027: */
028:
029: package javax.servlet.http;
030:
031: import javax.servlet.ServletResponse;
032: import javax.servlet.ServletResponseWrapper;
033: import java.io.IOException;
034:
035: /**
036: * Wraps a servlet request in another request. Filters may
037: * use HttpServletResponseWrapper to modify the headers passed to the servlet.
038: *
039: * <p/>The default methods just call the wrapped request methods.
040: *
041: * @since servlet 2.3
042: */
043: public class HttpServletResponseWrapper extends ServletResponseWrapper
044: implements HttpServletResponse {
045: // The wrapped response
046: private HttpServletResponse response;
047:
048: /**
049: * Creates a new Response wrapper
050: *
051: * @param response the wrapped response
052: */
053: public HttpServletResponseWrapper(HttpServletResponse response) {
054: super (response);
055:
056: this .response = response;
057: }
058:
059: /**
060: * Sets a response object.
061: *
062: * @param response the response object
063: */
064: public void setResponse(ServletResponse response) {
065: super .setResponse(response);
066:
067: this .response = (HttpServletResponse) response;
068: }
069:
070: /**
071: * Sets the HTTP status
072: *
073: * @param sc the HTTP status code
074: */
075: public void setStatus(int sc) {
076: response.setStatus(sc);
077: }
078:
079: /**
080: * Sends an HTTP error page based on the status code
081: *
082: * @param sc the HTTP status code
083: */
084: public void sendError(int sc, String msg) throws IOException {
085: response.sendError(sc, msg);
086: }
087:
088: /**
089: * Sends an HTTP error page based on the status code
090: *
091: * @param sc the HTTP status code
092: */
093: public void sendError(int sc) throws IOException {
094: response.sendError(sc);
095: }
096:
097: /**
098: * Redirects the client to another page.
099: *
100: * @param location the location to redirect to.
101: */
102: public void sendRedirect(String location) throws IOException {
103: response.sendRedirect(location);
104: }
105:
106: /**
107: * Sets a header. This will override a previous header
108: * with the same name.
109: *
110: * @param name the header name
111: * @param value the header value
112: */
113: public void setHeader(String name, String value) {
114: response.setHeader(name, value);
115: }
116:
117: /**
118: * Adds a header. If another header with the same name exists, both
119: * will be sent to the client.
120: *
121: * @param name the header name
122: * @param value the header value
123: */
124: public void addHeader(String name, String value) {
125: response.addHeader(name, value);
126: }
127:
128: /**
129: * Returns true if the output headers include <code>name</code>
130: *
131: * @param name the header name to test
132: */
133: public boolean containsHeader(String name) {
134: return response.containsHeader(name);
135: }
136:
137: /**
138: * Sets a header by converting a date to a string.
139: *
140: * <p>To set the page to expire in 15 seconds use the following:
141: * <pre><code>
142: * long now = System.currentTime();
143: * response.setDateHeader("Expires", now + 15000);
144: * </code></pre>
145: *
146: * @param name name of the header
147: * @param date the date in milliseconds since the epoch.
148: */
149: public void setDateHeader(String name, long date) {
150: response.setDateHeader(name, date);
151: }
152:
153: /**
154: * Adds a header by converting a date to a string.
155: *
156: * @param name name of the header
157: * @param date the date in milliseconds since the epoch.
158: */
159: public void addDateHeader(String name, long date) {
160: response.addDateHeader(name, date);
161: }
162:
163: /**
164: * Sets a header by converting an integer value to a string.
165: *
166: * @param name name of the header
167: * @param value the value as an integer
168: */
169: public void setIntHeader(String name, int value) {
170: response.setIntHeader(name, value);
171: }
172:
173: /**
174: * Adds a header by converting an integer value to a string.
175: *
176: * @param name name of the header
177: * @param value the value as an integer
178: */
179: public void addIntHeader(String name, int value) {
180: response.addIntHeader(name, value);
181: }
182:
183: /**
184: * Sends a new cookie to the client.
185: */
186: public void addCookie(Cookie cookie) {
187: response.addCookie(cookie);
188: }
189:
190: /**
191: * Encodes session information in a URL. Calling this will enable
192: * sessions for users who have disabled cookies.
193: *
194: * @param url the url to encode
195: * @return a url with session information encoded
196: */
197: public String encodeURL(String url) {
198: return response.encodeURL(url);
199: }
200:
201: /**
202: * Encodes session information in a URL suitable for
203: * <code>sendRedirect()</code>
204: *
205: * @param url the url to encode
206: * @return a url with session information encoded
207: */
208: public String encodeRedirectURL(String name) {
209: return response.encodeRedirectURL(name);
210: }
211:
212: public void setStatus(int sc, String msg) {
213: response.setStatus(sc, msg);
214: }
215:
216: /**
217: * @deprecated
218: */
219: public String encodeUrl(String url) {
220: return encodeURL(url);
221: }
222:
223: /**
224: * @deprecated
225: */
226: public String encodeRedirectUrl(String url) {
227: return encodeRedirectURL(url);
228: }
229: }
|