1
2
3 /*
4 * The contents of this file are subject to the terms
5 * of the Common Development and Distribution License
6 * (the "License"). You may not use this file except
7 * in compliance with the License.
8 *
9 * You can obtain a copy of the license at
10 * glassfish/bootstrap/legal/CDDLv1.0.txt or
11 * https://glassfish.dev.java.net/public/CDDLv1.0.html.
12 * See the License for the specific language governing
13 * permissions and limitations under the License.
14 *
15 * When distributing Covered Code, include this CDDL
16 * HEADER in each file and include the License file at
17 * glassfish/bootstrap/legal/CDDLv1.0.txt. If applicable,
18 * add the following below this CDDL HEADER, with the
19 * fields enclosed by brackets "[]" replaced with your
20 * own identifying information: Portions Copyright [yyyy]
21 * [name of copyright owner]
22 *
23 * Copyright 2005 Sun Microsystems, Inc. All rights reserved.
24 *
25 * Portions Copyright Apache Software Foundation.
26 */
27
28 package javax.servlet;
29
30 import java.io.BufferedReader;
31 import java.io.IOException;
32 import java.util.Enumeration;
33 import java.util.Locale;
34 import java.util.Map;
35
36
37
38 /**
39 *
40 * Provides a convenient implementation of the ServletRequest interface that
41 * can be subclassed by developers wishing to adapt the request to a Servlet.
42 * This class implements the Wrapper or Decorator pattern. Methods default to
43 * calling through to the wrapped request object.
44 * @since v 2.3
45 *
46 *
47 *
48 * @see javax.servlet.ServletRequest
49 *
50 */
51
52 public class ServletRequestWrapper implements ServletRequest {
53 private ServletRequest request;
54
55 /**
56 * Creates a ServletRequest adaptor wrapping the given request object.
57 * @throws java.lang.IllegalArgumentException if the request is null
58 */
59
60 public ServletRequestWrapper(ServletRequest request) {
61 if (request == null) {
62 throw new IllegalArgumentException("Request cannot be null");
63 }
64 this.request = request;
65 }
66
67 /**
68 * Return the wrapped request object.
69 */
70 public ServletRequest getRequest() {
71 return this.request;
72 }
73
74 /**
75 * Sets the request object being wrapped.
76 * @throws java.lang.IllegalArgumentException if the request is null.
77 */
78
79 public void setRequest(ServletRequest request) {
80 if (request == null) {
81 throw new IllegalArgumentException("Request cannot be null");
82 }
83 this.request = request;
84 }
85
86 /**
87 *
88 * The default behavior of this method is to call getAttribute(String name)
89 * on the wrapped request object.
90 */
91
92 public Object getAttribute(String name) {
93 return this.request.getAttribute(name);
94 }
95
96
97
98 /**
99 * The default behavior of this method is to return getAttributeNames()
100 * on the wrapped request object.
101 */
102
103 public Enumeration getAttributeNames() {
104 return this.request.getAttributeNames();
105 }
106
107
108
109 /**
110 * The default behavior of this method is to return getCharacterEncoding()
111 * on the wrapped request object.
112 */
113
114 public String getCharacterEncoding() {
115 return this.request.getCharacterEncoding();
116 }
117
118 /**
119 * The default behavior of this method is to set the character encoding
120 * on the wrapped request object.
121 */
122
123 public void setCharacterEncoding(String enc) throws java.io.UnsupportedEncodingException {
124 this.request.setCharacterEncoding(enc);
125 }
126
127
128 /**
129 * The default behavior of this method is to return getContentLength()
130 * on the wrapped request object.
131 */
132
133 public int getContentLength() {
134 return this.request.getContentLength();
135 }
136
137
138
139
140 /**
141 * The default behavior of this method is to return getContentType()
142 * on the wrapped request object.
143 */
144 public String getContentType() {
145 return this.request.getContentType();
146 }
147
148
149
150
151 /**
152 * The default behavior of this method is to return getInputStream()
153 * on the wrapped request object.
154 */
155
156 public ServletInputStream getInputStream() throws IOException {
157 return this.request.getInputStream();
158 }
159
160
161
162
163 /**
164 * The default behavior of this method is to return getParameter(String name)
165 * on the wrapped request object.
166 */
167
168 public String getParameter(String name) {
169 return this.request.getParameter(name);
170 }
171
172 /**
173 * The default behavior of this method is to return getParameterMap()
174 * on the wrapped request object.
175 */
176 public Map getParameterMap() {
177 return this.request.getParameterMap();
178 }
179
180
181
182
183 /**
184 * The default behavior of this method is to return getParameterNames()
185 * on the wrapped request object.
186 */
187
188 public Enumeration getParameterNames() {
189 return this.request.getParameterNames();
190 }
191
192
193
194
195 /**
196 * The default behavior of this method is to return getParameterValues(String name)
197 * on the wrapped request object.
198 */
199 public String[] getParameterValues(String name) {
200 return this.request.getParameterValues(name);
201 }
202
203
204
205
206 /**
207 * The default behavior of this method is to return getProtocol()
208 * on the wrapped request object.
209 */
210
211 public String getProtocol() {
212 return this.request.getProtocol();
213 }
214
215
216
217
218 /**
219 * The default behavior of this method is to return getScheme()
220 * on the wrapped request object.
221 */
222
223
224 public String getScheme() {
225 return this.request.getScheme();
226 }
227
228
229
230
231 /**
232 * The default behavior of this method is to return getServerName()
233 * on the wrapped request object.
234 */
235 public String getServerName() {
236 return this.request.getServerName();
237 }
238
239
240
241
242 /**
243 * The default behavior of this method is to return getServerPort()
244 * on the wrapped request object.
245 */
246
247 public int getServerPort() {
248 return this.request.getServerPort();
249 }
250
251
252
253 /**
254 * The default behavior of this method is to return getReader()
255 * on the wrapped request object.
256 */
257
258 public BufferedReader getReader() throws IOException {
259 return this.request.getReader();
260 }
261
262
263
264
265 /**
266 * The default behavior of this method is to return getRemoteAddr()
267 * on the wrapped request object.
268 */
269
270 public String getRemoteAddr() {
271 return this.request.getRemoteAddr();
272 }
273
274
275
276
277 /**
278 * The default behavior of this method is to return getRemoteHost()
279 * on the wrapped request object.
280 */
281
282 public String getRemoteHost() {
283 return this.request.getRemoteHost();
284 }
285
286
287
288
289 /**
290 * The default behavior of this method is to return setAttribute(String name, Object o)
291 * on the wrapped request object.
292 */
293
294 public void setAttribute(String name, Object o) {
295 this.request.setAttribute(name, o);
296 }
297
298
299
300
301 /**
302 * The default behavior of this method is to call removeAttribute(String name)
303 * on the wrapped request object.
304 */
305 public void removeAttribute(String name) {
306 this.request.removeAttribute(name);
307 }
308
309
310
311
312 /**
313 * The default behavior of this method is to return getLocale()
314 * on the wrapped request object.
315 */
316
317 public Locale getLocale() {
318 return this.request.getLocale();
319 }
320
321
322
323
324 /**
325 * The default behavior of this method is to return getLocales()
326 * on the wrapped request object.
327 */
328
329 public Enumeration getLocales() {
330 return this.request.getLocales();
331 }
332
333
334
335
336 /**
337 * The default behavior of this method is to return isSecure()
338 * on the wrapped request object.
339 */
340
341 public boolean isSecure() {
342 return this.request.isSecure();
343 }
344
345
346
347
348 /**
349 * The default behavior of this method is to return getRequestDispatcher(String path)
350 * on the wrapped request object.
351 */
352
353 public RequestDispatcher getRequestDispatcher(String path) {
354 return this.request.getRequestDispatcher(path);
355 }
356
357
358
359
360 /**
361 * The default behavior of this method is to return getRealPath(String path)
362 * on the wrapped request object.
363 */
364
365 public String getRealPath(String path) {
366 return this.request.getRealPath(path);
367 }
368
369 /**
370 * The default behavior of this method is to return
371 * getRemotePort() on the wrapped request object.
372 *
373 * @since 2.4
374 */
375 public int getRemotePort(){
376 return this.request.getRemotePort();
377 }
378
379
380 /**
381 * The default behavior of this method is to return
382 * getLocalName() on the wrapped request object.
383 *
384 * @since 2.4
385 */
386 public String getLocalName(){
387 return this.request.getLocalName();
388 }
389
390 /**
391 * The default behavior of this method is to return
392 * getLocalAddr() on the wrapped request object.
393 *
394 * @since 2.4
395 */
396 public String getLocalAddr(){
397 return this.request.getLocalAddr();
398 }
399
400
401 /**
402 * The default behavior of this method is to return
403 * getLocalPort() on the wrapped request object.
404 *
405 * @since 2.4
406 */
407 public int getLocalPort(){
408 return this.request.getLocalPort();
409 }
410
411 }
412