001/* 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. 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 */ 017package org.granite.gravity.tomcat; 018 019import java.io.BufferedReader; 020import java.io.IOException; 021import java.io.UnsupportedEncodingException; 022import java.security.Principal; 023import java.util.Collection; 024import java.util.Enumeration; 025import java.util.Locale; 026import java.util.Map; 027 028import javax.servlet.AsyncContext; 029import javax.servlet.DispatcherType; 030import javax.servlet.RequestDispatcher; 031import javax.servlet.ServletContext; 032import javax.servlet.ServletException; 033import javax.servlet.ServletInputStream; 034import javax.servlet.ServletRequest; 035import javax.servlet.ServletResponse; 036import javax.servlet.http.Cookie; 037import javax.servlet.http.HttpServletRequest; 038import javax.servlet.http.HttpServletResponse; 039import javax.servlet.http.HttpSession; 040import javax.servlet.http.Part; 041 042import org.apache.catalina.websocket.Constants; 043import org.apache.tomcat.util.res.StringManager; 044 045/** 046 * Wrapper for the HttpServletRequest object that allows the underlying request 047 * object to be invalidated. 048 */ 049public class WsHttpServletRequestWrapper implements HttpServletRequest { 050 051 private static final StringManager sm = StringManager.getManager(Constants.Package); 052 053 private HttpServletRequest request; 054 055 public WsHttpServletRequestWrapper(HttpServletRequest request) { 056 this.request = request; 057 } 058 059 private HttpServletRequest getRequest() { 060 if (request == null) { 061 throw new IllegalStateException(sm.getString("wrapper.invalid")); 062 } 063 return request; 064 } 065 066 protected void invalidate() { 067 request = null; 068 } 069 070 public Object getAttribute(String name) { 071 return getRequest().getAttribute(name); 072 } 073 074 public Enumeration<String> getAttributeNames() { 075 return getRequest().getAttributeNames(); 076 } 077 078 public String getCharacterEncoding() { 079 return getRequest().getCharacterEncoding(); 080 } 081 082 public void setCharacterEncoding(String env) 083 throws UnsupportedEncodingException { 084 getRequest().setCharacterEncoding(env); 085 } 086 087 public int getContentLength() { 088 return getRequest().getContentLength(); 089 } 090 091 public String getContentType() { 092 return getRequest().getContentType(); 093 } 094 095 public ServletInputStream getInputStream() throws IOException { 096 return getRequest().getInputStream(); 097 } 098 099 public String getParameter(String name) { 100 return getRequest().getParameter(name); 101 } 102 103 public Enumeration<String> getParameterNames() { 104 return getRequest().getParameterNames(); 105 } 106 107 public String[] getParameterValues(String name) { 108 return getRequest().getParameterValues(name); 109 } 110 111 public Map<String, String[]> getParameterMap() { 112 return getRequest().getParameterMap(); 113 } 114 115 public String getProtocol() { 116 return getRequest().getProtocol(); 117 } 118 119 public String getScheme() { 120 return getRequest().getScheme(); 121 } 122 123 public String getServerName() { 124 return getRequest().getServerName(); 125 } 126 127 public int getServerPort() { 128 return getRequest().getServerPort(); 129 } 130 131 public BufferedReader getReader() throws IOException { 132 return getRequest().getReader(); 133 } 134 135 public String getRemoteAddr() { 136 return getRequest().getRemoteAddr(); 137 } 138 139 public String getRemoteHost() { 140 return getRequest().getRemoteHost(); 141 } 142 143 public void setAttribute(String name, Object o) { 144 getRequest().setAttribute(name, o); 145 } 146 147 public void removeAttribute(String name) { 148 getRequest().removeAttribute(name); 149 } 150 151 public Locale getLocale() { 152 return getRequest().getLocale(); 153 } 154 155 public Enumeration<Locale> getLocales() { 156 return getRequest().getLocales(); 157 } 158 159 public boolean isSecure() { 160 return getRequest().isSecure(); 161 } 162 163 public RequestDispatcher getRequestDispatcher(String path) { 164 return getRequest().getRequestDispatcher(path); 165 } 166 167 @Deprecated 168 public String getRealPath(String path) { 169 return getRequest().getRealPath(path); 170 } 171 172 public int getRemotePort() { 173 return getRequest().getRemotePort(); 174 } 175 176 public String getLocalName() { 177 return getRequest().getLocalName(); 178 } 179 180 public String getLocalAddr() { 181 return getRequest().getLocalAddr(); 182 } 183 184 public int getLocalPort() { 185 return getRequest().getLocalPort(); 186 } 187 188 public ServletContext getServletContext() { 189 return getRequest().getServletContext(); 190 } 191 192 public AsyncContext startAsync() throws IllegalStateException { 193 return getRequest().startAsync(); 194 } 195 196 public AsyncContext startAsync(ServletRequest servletRequest, 197 ServletResponse servletResponse) throws IllegalStateException { 198 return getRequest().startAsync(servletRequest, servletResponse); 199 } 200 201 public boolean isAsyncStarted() { 202 return getRequest().isAsyncStarted(); 203 } 204 205 public boolean isAsyncSupported() { 206 return getRequest().isAsyncSupported(); 207 } 208 209 public AsyncContext getAsyncContext() { 210 return getRequest().getAsyncContext(); 211 } 212 213 public DispatcherType getDispatcherType() { 214 return getRequest().getDispatcherType(); 215 } 216 217 public String getAuthType() { 218 return getRequest().getAuthType(); 219 } 220 221 public Cookie[] getCookies() { 222 return getRequest().getCookies(); 223 } 224 225 public long getDateHeader(String name) { 226 return getRequest().getDateHeader(name); 227 } 228 229 public String getHeader(String name) { 230 return getRequest().getHeader(name); 231 } 232 233 public Enumeration<String> getHeaders(String name) { 234 return getRequest().getHeaders(name); 235 } 236 237 public Enumeration<String> getHeaderNames() { 238 return getRequest().getHeaderNames(); 239 } 240 241 public int getIntHeader(String name) { 242 return getRequest().getIntHeader(name); 243 } 244 245 public String getMethod() { 246 return getRequest().getMethod(); 247 } 248 249 public String getPathInfo() { 250 return getRequest().getPathInfo(); 251 } 252 253 public String getPathTranslated() { 254 return getRequest().getPathTranslated(); 255 } 256 257 public String getContextPath() { 258 return getRequest().getContextPath(); 259 } 260 261 public String getQueryString() { 262 return getRequest().getQueryString(); 263 } 264 265 public String getRemoteUser() { 266 return getRequest().getRemoteUser(); 267 } 268 269 public boolean isUserInRole(String role) { 270 return getRequest().isUserInRole(role); 271 } 272 273 public Principal getUserPrincipal() { 274 return getRequest().getUserPrincipal(); 275 } 276 277 public String getRequestedSessionId() { 278 return getRequest().getRequestedSessionId(); 279 } 280 281 public String getRequestURI() { 282 return getRequest().getRequestURI(); 283 } 284 285 public StringBuffer getRequestURL() { 286 return getRequest().getRequestURL(); 287 } 288 289 public String getServletPath() { 290 return getRequest().getServletPath(); 291 } 292 293 public HttpSession getSession(boolean create) { 294 return getRequest().getSession(create); 295 } 296 297 public HttpSession getSession() { 298 return getRequest().getSession(); 299 } 300 301 public boolean isRequestedSessionIdValid() { 302 return getRequest().isRequestedSessionIdValid(); 303 } 304 305 public boolean isRequestedSessionIdFromCookie() { 306 return getRequest().isRequestedSessionIdFromCookie(); 307 } 308 309 public boolean isRequestedSessionIdFromURL() { 310 return getRequest().isRequestedSessionIdFromURL(); 311 } 312 313 @Deprecated 314 public boolean isRequestedSessionIdFromUrl() { 315 return getRequest().isRequestedSessionIdFromUrl(); 316 } 317 318 public boolean authenticate(HttpServletResponse response) 319 throws IOException, ServletException { 320 return getRequest().authenticate(response); 321 } 322 323 public void login(String username, String password) throws ServletException { 324 getRequest().login(username, password); 325 } 326 327 public void logout() throws ServletException { 328 getRequest().logout(); 329 } 330 331 public Collection<Part> getParts() throws IOException, ServletException { 332 return getRequest().getParts(); 333 } 334 335 public Part getPart(String name) throws IOException, ServletException { 336 return getRequest().getPart(name); 337 } 338}