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