001    /**
002     *
003     * Copyright 2003-2004 The Apache Software Foundation
004     *
005     *  Licensed under the Apache License, Version 2.0 (the "License");
006     *  you may not use this file except in compliance with the License.
007     *  You may obtain a copy of the License at
008     *
009     *     http://www.apache.org/licenses/LICENSE-2.0
010     *
011     *  Unless required by applicable law or agreed to in writing, software
012     *  distributed under the License is distributed on an "AS IS" BASIS,
013     *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014     *  See the License for the specific language governing permissions and
015     *  limitations under the License.
016     */
017    
018    //
019    // This source code implements specifications defined by the Java
020    // Community Process. In order to remain compliant with the specification
021    // DO NOT add / change / or delete method signatures!
022    //
023    
024    package javax.servlet;
025    
026    import java.io.IOException;
027    import java.io.PrintWriter;
028    import java.util.Locale;
029    
030    /**
031     * Provides a convenient implementation of the ServletResponse interface that
032     * can be subclassed by developers wishing to adapt the response from a Servlet.
033     * This class implements the Wrapper or Decorator pattern. Methods default to
034     * calling through to the wrapped response object.
035     *
036     * @since Servlet 2.3
037     *
038     * @see javax.servlet.ServletResponse
039     *
040     * @version $Rev: 46019 $ $Date: 2004-09-14 02:56:06 -0700 (Tue, 14 Sep 2004) $
041     */
042    public class ServletResponseWrapper implements ServletResponse {
043        private ServletResponse response;
044    
045        /**
046         * Creates a ServletResponse adaptor wrapping the given response object.
047         * @throws java.lang.IllegalArgumentException if the response is null.
048         */
049        public ServletResponseWrapper(ServletResponse response) {
050            if (response == null) {
051                throw new IllegalArgumentException("Response cannot be null");
052            }
053            this.response = response;
054        }
055    
056        /**
057         * Return the wrapped ServletResponse object.
058         */
059        public ServletResponse getResponse() {
060            return this.response;
061        }
062    
063        /**
064         * Sets the response being wrapped.
065         * @throws java.lang.IllegalArgumentException if the response is null.
066         */
067        public void setResponse(ServletResponse response) {
068            if (response == null) {
069                throw new IllegalArgumentException("Response cannot be null");
070            }
071            this.response = response;
072        }
073    
074        /**
075         * The default behavior of this method is to call setCharacterEncoding(String charset)
076         * on the wrapped response object.
077         *
078         * @since Servlet 2.4
079         */
080        public void setCharacterEncoding(String charset) {
081            this.response.setCharacterEncoding(charset);
082        }
083    
084        /**
085         * The default behavior of this method is to return getCharacterEncoding()
086         * on the wrapped response object.
087         */
088        public String getCharacterEncoding() {
089            return this.response.getCharacterEncoding();
090        }
091    
092        /**
093         * The default behavior of this method is to return getOutputStream()
094         * on the wrapped response object.
095         */
096        public ServletOutputStream getOutputStream() throws IOException {
097            return this.response.getOutputStream();
098        }
099    
100        /**
101         * The default behavior of this method is to return getWriter()
102         * on the wrapped response object.
103         */
104        public PrintWriter getWriter() throws IOException {
105            return this.response.getWriter();
106        }
107    
108        /**
109         * The default behavior of this method is to call setContentLength(int len)
110         * on the wrapped response object.
111         */
112        public void setContentLength(int len) {
113            this.response.setContentLength(len);
114        }
115    
116        /**
117         * The default behavior of this method is to call setContentType(String type)
118         * on the wrapped response object.
119         */
120        public void setContentType(String type) {
121            this.response.setContentType(type);
122        }
123    
124        /**
125         * The default behavior of this method is to return getContentType()
126         * on the wrapped response object.
127         *
128         * @since Servlet 2.4
129         */
130        public String getContentType() {
131            return this.response.getContentType();
132        }
133    
134        /**
135         * The default behavior of this method is to call setBufferSize(int size)
136         * on the wrapped response object.
137         */
138        public void setBufferSize(int size) {
139            this.response.setBufferSize(size);
140        }
141    
142        /**
143         * The default behavior of this method is to return getBufferSize()
144         * on the wrapped response object.
145         */
146        public int getBufferSize() {
147            return this.response.getBufferSize();
148        }
149    
150        /**
151         * The default behavior of this method is to call flushBuffer()
152         * on the wrapped response object.
153         */
154    
155        public void flushBuffer() throws IOException {
156            this.response.flushBuffer();
157        }
158    
159        /**
160         * The default behavior of this method is to return isCommitted()
161         * on the wrapped response object.
162         */
163        public boolean isCommitted() {
164            return this.response.isCommitted();
165        }
166    
167        /**
168         * The default behavior of this method is to call reset()
169         * on the wrapped response object.
170         */
171        public void reset() {
172            this.response.reset();
173        }
174    
175        /**
176         * The default behavior of this method is to call resetBuffer()
177         * on the wrapped response object.
178         */
179        public void resetBuffer() {
180            this.response.resetBuffer();
181        }
182    
183        /**
184         * The default behavior of this method is to call setLocale(Locale loc)
185         * on the wrapped response object.
186         */
187        public void setLocale(Locale loc) {
188            this.response.setLocale(loc);
189        }
190    
191        /**
192         * The default behavior of this method is to return getLocale()
193         * on the wrapped response object.
194         */
195        public Locale getLocale() {
196            return this.response.getLocale();
197        }
198    }
199    
200    
201    
202    
203