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}