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}