001: /*
002: * $Header: /home/cvs/jakarta-tomcat-4.0/catalina/src/share/org/apache/catalina/connector/HttpResponseFacade.java,v 1.5 2001/09/28 16:53:49 remm Exp $
003: * $Revision: 1.5 $
004: * $Date: 2001/09/28 16:53:49 $
005: *
006: * ====================================================================
007: *
008: * The Apache Software License, Version 1.1
009: *
010: * Copyright (c) 1999 The Apache Software Foundation. All rights
011: * reserved.
012: *
013: * Redistribution and use in source and binary forms, with or without
014: * modification, are permitted provided that the following conditions
015: * are met:
016: *
017: * 1. Redistributions of source code must retain the above copyright
018: * notice, this list of conditions and the following disclaimer.
019: *
020: * 2. Redistributions in binary form must reproduce the above copyright
021: * notice, this list of conditions and the following disclaimer in
022: * the documentation and/or other materials provided with the
023: * distribution.
024: *
025: * 3. The end-user documentation included with the redistribution, if
026: * any, must include the following acknowlegement:
027: * "This product includes software developed by the
028: * Apache Software Foundation (http://www.apache.org/)."
029: * Alternately, this acknowlegement may appear in the software itself,
030: * if and wherever such third-party acknowlegements normally appear.
031: *
032: * 4. The names "The Jakarta Project", "Tomcat", and "Apache Software
033: * Foundation" must not be used to endorse or promote products derived
034: * from this software without prior written permission. For written
035: * permission, please contact apache@apache.org.
036: *
037: * 5. Products derived from this software may not be called "Apache"
038: * nor may "Apache" appear in their names without prior written
039: * permission of the Apache Group.
040: *
041: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
042: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
043: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
044: * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
045: * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
046: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
047: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
048: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
049: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
050: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
051: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
052: * SUCH DAMAGE.
053: * ====================================================================
054: *
055: * This software consists of voluntary contributions made by many
056: * individuals on behalf of the Apache Software Foundation. For more
057: * information on the Apache Software Foundation, please see
058: * <http://www.apache.org/>.
059: *
060: * [Additional notices, if required by prior licensing conditions]
061: *
062: */
063:
064: package org.apache.catalina.connector;
065:
066: import java.io.IOException;
067: import javax.servlet.ServletException;
068: import javax.servlet.ServletOutputStream;
069: import javax.servlet.http.HttpServletResponse;
070: import javax.servlet.http.Cookie;
071: import org.apache.catalina.HttpResponse;
072:
073: /**
074: * Facade class that wraps a Catalina-internal <b>HttpResponse</b>
075: * object. All methods are delegated to the wrapped response.
076: *
077: * @author Remy Maucherat
078: * @author Craig R. McClanahan
079: * @version $Revision: 1.5 $ $Date: 2001/09/28 16:53:49 $
080: */
081:
082: public final class HttpResponseFacade extends ResponseFacade implements
083: HttpServletResponse {
084:
085: // ----------------------------------------------------------- Constructors
086:
087: /**
088: * Construct a wrapper for the specified response.
089: *
090: * @param response The response to be wrapped
091: */
092: public HttpResponseFacade(HttpResponse response) {
093: super (response);
094: }
095:
096: // -------------------------------------------- HttpServletResponse Methods
097:
098: public void addCookie(Cookie cookie) {
099:
100: if (isCommitted())
101: return;
102:
103: ((HttpServletResponse) response).addCookie(cookie);
104:
105: }
106:
107: public boolean containsHeader(String name) {
108: return ((HttpServletResponse) response).containsHeader(name);
109: }
110:
111: public String encodeURL(String url) {
112: return ((HttpServletResponse) response).encodeURL(url);
113: }
114:
115: public String encodeRedirectURL(String url) {
116: return ((HttpServletResponse) response).encodeRedirectURL(url);
117: }
118:
119: public String encodeUrl(String url) {
120: return ((HttpServletResponse) response).encodeURL(url);
121: }
122:
123: public String encodeRedirectUrl(String url) {
124: return ((HttpServletResponse) response).encodeRedirectURL(url);
125: }
126:
127: public void sendError(int sc, String msg) throws IOException {
128:
129: if (isCommitted())
130: throw new IllegalStateException(/*sm.getString("responseBase.reset.ise")*/);
131:
132: resp.setAppCommitted(true);
133:
134: ((HttpServletResponse) response).sendError(sc, msg);
135:
136: }
137:
138: public void sendError(int sc) throws IOException {
139:
140: if (isCommitted())
141: throw new IllegalStateException(/*sm.getString("responseBase.reset.ise")*/);
142:
143: resp.setAppCommitted(true);
144:
145: ((HttpServletResponse) response).sendError(sc);
146:
147: }
148:
149: public void sendRedirect(String location) throws IOException {
150:
151: if (isCommitted())
152: throw new IllegalStateException(/*sm.getString("responseBase.reset.ise")*/);
153:
154: resp.setAppCommitted(true);
155:
156: ((HttpServletResponse) response).sendRedirect(location);
157:
158: }
159:
160: public void setDateHeader(String name, long date) {
161:
162: if (isCommitted())
163: return;
164:
165: ((HttpServletResponse) response).setDateHeader(name, date);
166:
167: }
168:
169: public void addDateHeader(String name, long date) {
170:
171: if (isCommitted())
172: return;
173:
174: ((HttpServletResponse) response).addDateHeader(name, date);
175:
176: }
177:
178: public void setHeader(String name, String value) {
179:
180: if (isCommitted())
181: return;
182:
183: ((HttpServletResponse) response).setHeader(name, value);
184:
185: }
186:
187: public void addHeader(String name, String value) {
188:
189: if (isCommitted())
190: return;
191:
192: ((HttpServletResponse) response).addHeader(name, value);
193:
194: }
195:
196: public void setIntHeader(String name, int value) {
197:
198: if (isCommitted())
199: return;
200:
201: ((HttpServletResponse) response).setIntHeader(name, value);
202:
203: }
204:
205: public void addIntHeader(String name, int value) {
206:
207: if (isCommitted())
208: return;
209:
210: ((HttpServletResponse) response).addIntHeader(name, value);
211:
212: }
213:
214: public void setStatus(int sc) {
215:
216: if (isCommitted())
217: return;
218:
219: ((HttpServletResponse) response).setStatus(sc);
220:
221: }
222:
223: public void setStatus(int sc, String sm) {
224:
225: if (isCommitted())
226: return;
227:
228: ((HttpServletResponse) response).setStatus(sc, sm);
229:
230: }
231:
232: }
|