001    /**
002     * Copyright (c) 2000-2012 Liferay, Inc. All rights reserved.
003     *
004     * This library is free software; you can redistribute it and/or modify it under
005     * the terms of the GNU Lesser General Public License as published by the Free
006     * Software Foundation; either version 2.1 of the License, or (at your option)
007     * any later version.
008     *
009     * This library is distributed in the hope that it will be useful, but WITHOUT
010     * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
011     * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
012     * details.
013     */
014    
015    package com.liferay.portal.apache.bridges.struts;
016    
017    import com.liferay.portal.kernel.util.ContextPathUtil;
018    
019    import java.io.InputStream;
020    
021    import java.net.MalformedURLException;
022    import java.net.URL;
023    
024    import java.util.ArrayList;
025    import java.util.Collections;
026    import java.util.Enumeration;
027    import java.util.EventListener;
028    import java.util.Map;
029    import java.util.Set;
030    
031    import javax.servlet.Filter;
032    import javax.servlet.FilterRegistration.Dynamic;
033    import javax.servlet.FilterRegistration;
034    import javax.servlet.RequestDispatcher;
035    import javax.servlet.Servlet;
036    import javax.servlet.ServletContext;
037    import javax.servlet.ServletException;
038    import javax.servlet.ServletRegistration;
039    import javax.servlet.SessionCookieConfig;
040    import javax.servlet.SessionTrackingMode;
041    import javax.servlet.descriptor.JspConfigDescriptor;
042    
043    /**
044     * @author Michael Young
045     */
046    public class LiferayServletContext implements ServletContext {
047    
048            public LiferayServletContext(ServletContext servletContext) {
049                    _servletContext = servletContext;
050    
051                    if (_servletContext.getMajorVersion() >= 3) {
052                            _version3 = true;
053                    }
054            }
055    
056            public Dynamic addFilter(
057                    String filterName, Class<? extends Filter> filterClass) {
058    
059                    if (!_version3) {
060                            return null;
061                    }
062    
063                    return _servletContext.addFilter(filterName, filterClass);
064            }
065    
066            public Dynamic addFilter(String filterName, Filter filter) {
067                    if (!_version3) {
068                            return null;
069                    }
070    
071                    return _servletContext.addFilter(filterName, filter);
072            }
073    
074            public Dynamic addFilter(String filterName, String className) {
075                    if (!_version3) {
076                            return null;
077                    }
078    
079                    return _servletContext.addFilter(filterName, className);
080            }
081    
082            public void addListener(Class<? extends EventListener> listenerClass) {
083                    if (!_version3) {
084                            return;
085                    }
086    
087                    _servletContext.addListener(listenerClass);
088            }
089    
090            public void addListener(String className) {
091                    if (!_version3) {
092                            return;
093                    }
094    
095                    _servletContext.addListener(className);
096            }
097    
098            public <T extends EventListener> void addListener(T eventListener) {
099                    if (!_version3) {
100                            return;
101                    }
102    
103                    _servletContext.addListener(eventListener);
104            }
105    
106            public ServletRegistration.Dynamic addServlet(
107                    String servletName, Class<? extends Servlet> servletClass) {
108    
109                    if (!_version3) {
110                            return null;
111                    }
112    
113                    return _servletContext.addServlet(servletName, servletClass);
114            }
115    
116            public ServletRegistration.Dynamic addServlet(
117                    String servletName, Servlet servlet) {
118    
119                    if (!_version3) {
120                            return null;
121                    }
122    
123                    return _servletContext.addServlet(servletName, servlet);
124            }
125    
126            public ServletRegistration.Dynamic addServlet(
127                    String servletName, String className) {
128    
129                    if (!_version3) {
130                            return null;
131                    }
132    
133                    return _servletContext.addServlet(servletName, className);
134            }
135    
136            public <T extends Filter> T createFilter(Class<T> filterClass)
137                    throws ServletException {
138    
139                    if (!_version3) {
140                            return null;
141                    }
142    
143                    return _servletContext.createFilter(filterClass);
144            }
145    
146            public <T extends EventListener> T createListener(Class<T> listenerClass)
147                    throws ServletException {
148    
149                    if (!_version3) {
150                            return null;
151                    }
152    
153                    return _servletContext.createListener(listenerClass);
154            }
155    
156            public <T extends Servlet> T createServlet(Class<T> servletClass)
157                    throws ServletException {
158    
159                    if (!_version3) {
160                            return null;
161                    }
162    
163                    return _servletContext.createServlet(servletClass);
164            }
165    
166            public void declareRoles(String... roleNames) {
167                    if (!_version3) {
168                            return;
169                    }
170    
171                    _servletContext.declareRoles(roleNames);
172            }
173    
174            public Object getAttribute(String name) {
175                    return _servletContext.getAttribute(name);
176            }
177    
178            public Enumeration<String> getAttributeNames() {
179                    return _servletContext.getAttributeNames();
180            }
181    
182            public ClassLoader getClassLoader() {
183                    if (!_version3) {
184                            return null;
185                    }
186    
187                    return _servletContext.getClassLoader();
188            }
189    
190            public ServletContext getContext(String uriPath) {
191                    ServletContext servletContext = _servletContext.getContext(uriPath);
192    
193                    if (servletContext == _servletContext) {
194                            return this;
195                    }
196                    else {
197                            return servletContext;
198                    }
199            }
200    
201            public String getContextPath() {
202                    return ContextPathUtil.getContextPath(_servletContext);
203            }
204    
205            public Set<SessionTrackingMode> getDefaultSessionTrackingModes() {
206                    if (!_version3) {
207                            return null;
208                    }
209    
210                    return _servletContext.getDefaultSessionTrackingModes();
211            }
212    
213            public int getEffectiveMajorVersion() {
214                    if (!_version3) {
215                            return 0;
216                    }
217    
218                    return _servletContext.getEffectiveMajorVersion();
219            }
220    
221            public int getEffectiveMinorVersion() {
222                    if (!_version3) {
223                            return 0;
224                    }
225    
226                    return _servletContext.getEffectiveMinorVersion();
227            }
228    
229            public Set<SessionTrackingMode> getEffectiveSessionTrackingModes() {
230                    if (!_version3) {
231                            return null;
232                    }
233    
234                    return _servletContext.getEffectiveSessionTrackingModes();
235            }
236    
237            public FilterRegistration getFilterRegistration(String filterName) {
238                    if (!_version3) {
239                            return null;
240                    }
241    
242                    return _servletContext.getFilterRegistration(filterName);
243            }
244    
245            public Map<String, ? extends FilterRegistration> getFilterRegistrations() {
246                    if (!_version3) {
247                            return null;
248                    }
249    
250                    return _servletContext.getFilterRegistrations();
251            }
252    
253            public String getInitParameter(String name) {
254                    return _servletContext.getInitParameter(name);
255            }
256    
257            public Enumeration<String> getInitParameterNames() {
258                    return _servletContext.getInitParameterNames();
259            }
260    
261            public JspConfigDescriptor getJspConfigDescriptor() {
262                    if (!_version3) {
263                            return null;
264                    }
265    
266                    return _servletContext.getJspConfigDescriptor();
267            }
268    
269            public int getMajorVersion() {
270                    return _servletContext.getMajorVersion();
271            }
272    
273            public String getMimeType(String file) {
274                    return _servletContext.getMimeType(file);
275            }
276    
277            public int getMinorVersion() {
278                    return _servletContext.getMinorVersion();
279            }
280    
281            public RequestDispatcher getNamedDispatcher(String name) {
282                    RequestDispatcher requestDispatcher =
283                            _servletContext.getNamedDispatcher(name);
284    
285                    if (requestDispatcher != null) {
286                            requestDispatcher = new LiferayRequestDispatcher(
287                                    requestDispatcher, name);
288                    }
289    
290                    return requestDispatcher;
291            }
292    
293            public String getRealPath(String path) {
294                    return _servletContext.getRealPath(path);
295            }
296    
297            public RequestDispatcher getRequestDispatcher(String path) {
298                    RequestDispatcher requestDispatcher =
299                            _servletContext.getRequestDispatcher(path);
300    
301                    if (requestDispatcher != null) {
302                            requestDispatcher = new LiferayRequestDispatcher(
303                                    requestDispatcher, path);
304                    }
305    
306                    return requestDispatcher;
307            }
308    
309            public URL getResource(String path) throws MalformedURLException {
310                    return _servletContext.getResource(path);
311            }
312    
313            public InputStream getResourceAsStream(String path) {
314                    return _servletContext.getResourceAsStream(path);
315            }
316    
317            public Set<String> getResourcePaths(String path) {
318                    return _servletContext.getResourcePaths(path);
319            }
320    
321            public String getServerInfo() {
322                    return _servletContext.getServerInfo();
323            }
324    
325            /**
326             * @deprecated try {@link #getServletRegistration(String)}
327             */
328            public Servlet getServlet(String name) {
329                    return null;
330            }
331    
332            public String getServletContextName() {
333                    return _servletContext.getServletContextName();
334            }
335    
336            /**
337             * @deprecated try {@link #getServletRegistrations()}
338             */
339            public Enumeration<String> getServletNames() {
340                    return Collections.enumeration(new ArrayList<String>());
341            }
342    
343            public ServletRegistration getServletRegistration(String servletName) {
344                    if (!_version3) {
345                            return null;
346                    }
347    
348                    return _servletContext.getServletRegistration(servletName);
349            }
350    
351            public Map<String, ? extends ServletRegistration>
352                    getServletRegistrations() {
353    
354                    if (!_version3) {
355                            return null;
356                    }
357    
358                    return _servletContext.getServletRegistrations();
359            }
360    
361            /**
362             * @deprecated try {@link #getServletRegistrations()}
363             */
364            public Enumeration<Servlet> getServlets() {
365                    return Collections.enumeration(new ArrayList<Servlet>());
366            }
367    
368            public SessionCookieConfig getSessionCookieConfig() {
369                    if (!_version3) {
370                            return null;
371                    }
372    
373                    return _servletContext.getSessionCookieConfig();
374            }
375    
376            /**
377             * @deprecated {@link #log(String, Throwable)}
378             */
379            public void log(Exception exception, String message) {
380                    _servletContext.log(message, exception);
381            }
382    
383            public void log(String message) {
384                    _servletContext.log(message);
385            }
386    
387            public void log(String message, Throwable throwable) {
388                    _servletContext.log(message, throwable);
389            }
390    
391            public void removeAttribute(String name) {
392                    _servletContext.removeAttribute(name);
393            }
394    
395            public void setAttribute(String name, Object value) {
396                    _servletContext.setAttribute(name, value);
397            }
398    
399            public boolean setInitParameter(String name, String value) {
400                    if (!_version3) {
401                            return false;
402                    }
403    
404                    return _servletContext.setInitParameter(name, value);
405            }
406    
407            public void setSessionTrackingModes(
408                    Set<SessionTrackingMode> sessionTrackingModes) {
409    
410                    if (!_version3) {
411                            return;
412                    }
413    
414                    _servletContext.setSessionTrackingModes(sessionTrackingModes);
415            }
416    
417            @Override
418            public String toString() {
419                    return _servletContext.toString();
420            }
421    
422            private ServletContext _servletContext;
423            private boolean _version3;
424    
425    }