001 /*
002 * Licensed to the Apache Software Foundation (ASF) under one
003 * or more contributor license agreements. See the NOTICE file
004 * distributed with this work for additional information
005 * regarding copyright ownership. The ASF licenses this file
006 * to you under the Apache License, Version 2.0 (the
007 * "License"); you may not use this file except in compliance
008 * with the License. You may obtain a copy of the License at
009 *
010 * http://www.apache.org/licenses/LICENSE-2.0
011 *
012 * Unless required by applicable law or agreed to in writing,
013 * software distributed under the License is distributed on an
014 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
015 * KIND, either express or implied. See the License for the
016 * specific language governing permissions and limitations
017 * under the License.
018 */
019
020 package javax.servlet;
021
022 import java.io.BufferedReader;
023 import java.io.IOException;
024 import java.util.Enumeration;
025 import java.util.Locale;
026 import java.util.Map;
027
028
029
030 /**
031 *
032 * Provides a convenient implementation of the ServletRequest interface that
033 * can be subclassed by developers wishing to adapt the request to a Servlet.
034 * This class implements the Wrapper or Decorator pattern. Methods default to
035 * calling through to the wrapped request object.
036 * @since v 2.3
037 *
038 *
039 *
040 * @see javax.servlet.ServletRequest
041 *
042 */
043
044 public class ServletRequestWrapper implements ServletRequest {
045 private ServletRequest request;
046
047 /**
048 * Creates a ServletRequest adaptor wrapping the given request object.
049 * @throws java.lang.IllegalArgumentException if the request is null
050 */
051
052 public ServletRequestWrapper(ServletRequest request) {
053 if (request == null) {
054 throw new IllegalArgumentException("Request cannot be null");
055 }
056 this.request = request;
057 }
058
059 /**
060 * Return the wrapped request object.
061 */
062 public ServletRequest getRequest() {
063 return this.request;
064 }
065
066 /**
067 * Sets the request object being wrapped.
068 * @throws java.lang.IllegalArgumentException if the request is null.
069 */
070
071 public void setRequest(ServletRequest request) {
072 if (request == null) {
073 throw new IllegalArgumentException("Request cannot be null");
074 }
075 this.request = request;
076 }
077
078 /**
079 *
080 * The default behavior of this method is to call getAttribute(String name)
081 * on the wrapped request object.
082 */
083
084 public Object getAttribute(String name) {
085 return this.request.getAttribute(name);
086 }
087
088
089
090 /**
091 * The default behavior of this method is to return getAttributeNames()
092 * on the wrapped request object.
093 */
094
095 public Enumeration getAttributeNames() {
096 return this.request.getAttributeNames();
097 }
098
099
100
101 /**
102 * The default behavior of this method is to return getCharacterEncoding()
103 * on the wrapped request object.
104 */
105
106 public String getCharacterEncoding() {
107 return this.request.getCharacterEncoding();
108 }
109
110 /**
111 * The default behavior of this method is to set the character encoding
112 * on the wrapped request object.
113 */
114
115 public void setCharacterEncoding(String enc) throws java.io.UnsupportedEncodingException {
116 this.request.setCharacterEncoding(enc);
117 }
118
119
120 /**
121 * The default behavior of this method is to return getContentLength()
122 * on the wrapped request object.
123 */
124
125 public int getContentLength() {
126 return this.request.getContentLength();
127 }
128
129
130
131
132 /**
133 * The default behavior of this method is to return getContentType()
134 * on the wrapped request object.
135 */
136 public String getContentType() {
137 return this.request.getContentType();
138 }
139
140
141
142
143 /**
144 * The default behavior of this method is to return getInputStream()
145 * on the wrapped request object.
146 */
147
148 public ServletInputStream getInputStream() throws IOException {
149 return this.request.getInputStream();
150 }
151
152
153
154
155 /**
156 * The default behavior of this method is to return getParameter(String name)
157 * on the wrapped request object.
158 */
159
160 public String getParameter(String name) {
161 return this.request.getParameter(name);
162 }
163
164 /**
165 * The default behavior of this method is to return getParameterMap()
166 * on the wrapped request object.
167 */
168 public Map getParameterMap() {
169 return this.request.getParameterMap();
170 }
171
172
173
174
175 /**
176 * The default behavior of this method is to return getParameterNames()
177 * on the wrapped request object.
178 */
179
180 public Enumeration getParameterNames() {
181 return this.request.getParameterNames();
182 }
183
184
185
186
187 /**
188 * The default behavior of this method is to return getParameterValues(String name)
189 * on the wrapped request object.
190 */
191 public String[] getParameterValues(String name) {
192 return this.request.getParameterValues(name);
193 }
194
195
196
197
198 /**
199 * The default behavior of this method is to return getProtocol()
200 * on the wrapped request object.
201 */
202
203 public String getProtocol() {
204 return this.request.getProtocol();
205 }
206
207
208
209
210 /**
211 * The default behavior of this method is to return getScheme()
212 * on the wrapped request object.
213 */
214
215
216 public String getScheme() {
217 return this.request.getScheme();
218 }
219
220
221
222
223 /**
224 * The default behavior of this method is to return getServerName()
225 * on the wrapped request object.
226 */
227 public String getServerName() {
228 return this.request.getServerName();
229 }
230
231
232
233
234 /**
235 * The default behavior of this method is to return getServerPort()
236 * on the wrapped request object.
237 */
238
239 public int getServerPort() {
240 return this.request.getServerPort();
241 }
242
243
244
245 /**
246 * The default behavior of this method is to return getReader()
247 * on the wrapped request object.
248 */
249
250 public BufferedReader getReader() throws IOException {
251 return this.request.getReader();
252 }
253
254
255
256
257 /**
258 * The default behavior of this method is to return getRemoteAddr()
259 * on the wrapped request object.
260 */
261
262 public String getRemoteAddr() {
263 return this.request.getRemoteAddr();
264 }
265
266
267
268
269 /**
270 * The default behavior of this method is to return getRemoteHost()
271 * on the wrapped request object.
272 */
273
274 public String getRemoteHost() {
275 return this.request.getRemoteHost();
276 }
277
278
279
280
281 /**
282 * The default behavior of this method is to return setAttribute(String name, Object o)
283 * on the wrapped request object.
284 */
285
286 public void setAttribute(String name, Object o) {
287 this.request.setAttribute(name, o);
288 }
289
290
291
292
293 /**
294 * The default behavior of this method is to call removeAttribute(String name)
295 * on the wrapped request object.
296 */
297 public void removeAttribute(String name) {
298 this.request.removeAttribute(name);
299 }
300
301
302
303
304 /**
305 * The default behavior of this method is to return getLocale()
306 * on the wrapped request object.
307 */
308
309 public Locale getLocale() {
310 return this.request.getLocale();
311 }
312
313
314
315
316 /**
317 * The default behavior of this method is to return getLocales()
318 * on the wrapped request object.
319 */
320
321 public Enumeration getLocales() {
322 return this.request.getLocales();
323 }
324
325
326
327
328 /**
329 * The default behavior of this method is to return isSecure()
330 * on the wrapped request object.
331 */
332
333 public boolean isSecure() {
334 return this.request.isSecure();
335 }
336
337
338
339
340 /**
341 * The default behavior of this method is to return getRequestDispatcher(String path)
342 * on the wrapped request object.
343 */
344
345 public RequestDispatcher getRequestDispatcher(String path) {
346 return this.request.getRequestDispatcher(path);
347 }
348
349
350
351
352 /**
353 * The default behavior of this method is to return getRealPath(String path)
354 * on the wrapped request object.
355 */
356
357 public String getRealPath(String path) {
358 return this.request.getRealPath(path);
359 }
360
361 /**
362 * The default behavior of this method is to return
363 * getRemotePort() on the wrapped request object.
364 *
365 * @since 2.4
366 */
367 public int getRemotePort(){
368 return this.request.getRemotePort();
369 }
370
371
372 /**
373 * The default behavior of this method is to return
374 * getLocalName() on the wrapped request object.
375 *
376 * @since 2.4
377 */
378 public String getLocalName(){
379 return this.request.getLocalName();
380 }
381
382 /**
383 * The default behavior of this method is to return
384 * getLocalAddr() on the wrapped request object.
385 *
386 * @since 2.4
387 */
388 public String getLocalAddr(){
389 return this.request.getLocalAddr();
390 }
391
392
393 /**
394 * The default behavior of this method is to return
395 * getLocalPort() on the wrapped request object.
396 *
397 * @since 2.4
398 */
399 public int getLocalPort(){
400 return this.request.getLocalPort();
401 }
402
403 }
404