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.BufferedReader; 027 import java.io.IOException; 028 import java.util.Enumeration; 029 import java.util.Locale; 030 import java.util.Map; 031 032 /** 033 * Provides a convenient implementation of the ServletRequest interface that 034 * can be subclassed by developers wishing to adapt the request to a Servlet. 035 * This class implements the Wrapper or Decorator pattern. Methods default to 036 * calling through to the wrapped request object. 037 * 038 * @since Servlet 2.3 039 * 040 * @see ServletRequest 041 * 042 * @version $Rev: 46019 $ $Date: 2004-09-14 02:56:06 -0700 (Tue, 14 Sep 2004) $ 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 public ServletRequestWrapper(ServletRequest request) { 052 if (request == null) { 053 throw new IllegalArgumentException("Request cannot be null"); 054 } 055 this.request = request; 056 } 057 058 /** 059 * Return the wrapped request object. 060 */ 061 public ServletRequest getRequest() { 062 return this.request; 063 } 064 065 /** 066 * Sets the request object being wrapped. 067 * @throws java.lang.IllegalArgumentException if the request is null. 068 */ 069 public void setRequest(ServletRequest request) { 070 if (request == null) { 071 throw new IllegalArgumentException("Request cannot be null"); 072 } 073 this.request = request; 074 } 075 076 /** 077 * The default behavior of this method is to call getAttribute(String name) 078 * on the wrapped request object. 079 */ 080 public Object getAttribute(String name) { 081 return this.request.getAttribute(name); 082 } 083 084 /** 085 * The default behavior of this method is to return getAttributeNames() 086 * on the wrapped request object. 087 */ 088 public Enumeration getAttributeNames() { 089 return this.request.getAttributeNames(); 090 } 091 092 /** 093 * The default behavior of this method is to return getCharacterEncoding() 094 * on the wrapped request object. 095 */ 096 public String getCharacterEncoding() { 097 return this.request.getCharacterEncoding(); 098 } 099 100 /** 101 * The default behavior of this method is to set the character encoding 102 * on the wrapped request object. 103 */ 104 public void setCharacterEncoding(String enc) throws java.io.UnsupportedEncodingException { 105 this.request.setCharacterEncoding(enc); 106 } 107 108 /** 109 * The default behavior of this method is to return getContentLength() 110 * on the wrapped request object. 111 */ 112 public int getContentLength() { 113 return this.request.getContentLength(); 114 } 115 116 /** 117 * The default behavior of this method is to return getContentType() 118 * on the wrapped request object. 119 */ 120 public String getContentType() { 121 return this.request.getContentType(); 122 } 123 124 /** 125 * The default behavior of this method is to return getInputStream() 126 * on the wrapped request object. 127 */ 128 129 public ServletInputStream getInputStream() throws IOException { 130 return this.request.getInputStream(); 131 } 132 133 /** 134 * The default behavior of this method is to return getParameter(String name) 135 * on the wrapped request object. 136 */ 137 public String getParameter(String name) { 138 return this.request.getParameter(name); 139 } 140 141 /** 142 * The default behavior of this method is to return getParameterMap() 143 * on the wrapped request object. 144 */ 145 public Map getParameterMap() { 146 return this.request.getParameterMap(); 147 } 148 149 /** 150 * The default behavior of this method is to return getParameterNames() 151 * on the wrapped request object. 152 */ 153 public Enumeration getParameterNames() { 154 return this.request.getParameterNames(); 155 } 156 157 /** 158 * The default behavior of this method is to return getParameterValues(String name) 159 * on the wrapped request object. 160 */ 161 public String[] getParameterValues(String name) { 162 return this.request.getParameterValues(name); 163 } 164 165 /** 166 * The default behavior of this method is to return getProtocol() 167 * on the wrapped request object. 168 */ 169 public String getProtocol() { 170 return this.request.getProtocol(); 171 } 172 173 /** 174 * The default behavior of this method is to return getScheme() 175 * on the wrapped request object. 176 */ 177 public String getScheme() { 178 return this.request.getScheme(); 179 } 180 181 /** 182 * The default behavior of this method is to return getServerName() 183 * on the wrapped request object. 184 */ 185 public String getServerName() { 186 return this.request.getServerName(); 187 } 188 189 /** 190 * The default behavior of this method is to return getServerPort() 191 * on the wrapped request object. 192 */ 193 public int getServerPort() { 194 return this.request.getServerPort(); 195 } 196 197 /** 198 * The default behavior of this method is to return getReader() 199 * on the wrapped request object. 200 */ 201 public BufferedReader getReader() throws IOException { 202 return this.request.getReader(); 203 } 204 205 /** 206 * The default behavior of this method is to return getRemoteAddr() 207 * on the wrapped request object. 208 */ 209 public String getRemoteAddr() { 210 return this.request.getRemoteAddr(); 211 } 212 213 /** 214 * The default behavior of this method is to return getRemoteHost() 215 * on the wrapped request object. 216 */ 217 public String getRemoteHost() { 218 return this.request.getRemoteHost(); 219 } 220 221 /** 222 * The default behavior of this method is to return setAttribute(String name, Object o) 223 * on the wrapped request object. 224 */ 225 public void setAttribute(String name, Object o) { 226 this.request.setAttribute(name, o); 227 } 228 229 /** 230 * The default behavior of this method is to call removeAttribute(String name) 231 * on the wrapped request object. 232 */ 233 public void removeAttribute(String name) { 234 this.request.removeAttribute(name); 235 } 236 237 /** 238 * The default behavior of this method is to return getLocale() 239 * on the wrapped request object. 240 */ 241 public Locale getLocale() { 242 return this.request.getLocale(); 243 } 244 245 /** 246 * The default behavior of this method is to return getLocales() 247 * on the wrapped request object. 248 */ 249 public Enumeration getLocales() { 250 return this.request.getLocales(); 251 } 252 253 /** 254 * The default behavior of this method is to return isSecure() 255 * on the wrapped request object. 256 */ 257 public boolean isSecure() { 258 return this.request.isSecure(); 259 } 260 261 /** 262 * The default behavior of this method is to return getRequestDispatcher(String path) 263 * on the wrapped request object. 264 */ 265 public RequestDispatcher getRequestDispatcher(String path) { 266 return this.request.getRequestDispatcher(path); 267 } 268 269 /** 270 * The default behavior of this method is to return getRealPath(String path) 271 * on the wrapped request object. 272 */ 273 public String getRealPath(String path) { 274 return this.request.getRealPath(path); 275 } 276 277 /** 278 * The default behavior of this method is to return 279 * getRemotePort() on the wrapped request object. 280 * 281 * @since Servlet 2.4 282 */ 283 public int getRemotePort() { 284 return this.request.getRemotePort(); 285 } 286 287 /** 288 * The default behavior of this method is to return 289 * getLocalName() on the wrapped request object. 290 * 291 * @since Servlet 2.4 292 */ 293 public String getLocalName() { 294 return this.request.getLocalName(); 295 } 296 297 /** 298 * The default behavior of this method is to return 299 * getLocalAddr() on the wrapped request object. 300 * 301 * @since Servlet 2.4 302 */ 303 public String getLocalAddr() { 304 return this.request.getLocalAddr(); 305 } 306 307 /** 308 * The default behavior of this method is to return 309 * getLocalPort() on the wrapped request object. 310 * 311 * @since Servlet 2.4 312 */ 313 public int getLocalPort() { 314 return this.request.getLocalPort(); 315 } 316 } 317