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