001    /**
002     * Copyright (c) 2000-2010 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.kernel.servlet;
016    
017    import javax.portlet.PortletConfig;
018    import javax.portlet.PortletRequest;
019    import javax.portlet.PortletResponse;
020    
021    import javax.servlet.ServletConfig;
022    import javax.servlet.http.HttpServletRequest;
023    import javax.servlet.http.HttpServletResponse;
024    
025    /**
026     * @author Deepak Gothe
027     */
028    public class PortletServletObjectsFactory implements ServletObjectsFactory {
029    
030            public ServletConfig getServletConfig(
031                    PortletConfig portletConfig, PortletRequest portletRequest) {
032    
033                    Object servletConfig = portletConfig.getPortletContext().getAttribute(
034                            _PORTLET_CONTAINER_SERVLET_CONFIG);
035    
036                    if (servletConfig == null) {
037                            servletConfig = portletRequest.getAttribute(
038                                    PortletServlet.PORTLET_SERVLET_CONFIG);
039                    }
040    
041                    return (ServletConfig)servletConfig;
042            }
043    
044            public HttpServletRequest getServletRequest(PortletRequest portletRequest) {
045                    Object request = portletRequest.getAttribute(
046                            _PORTLET_CONTAINER_SERVLET_REQUEST);
047    
048                    if (request == null) {
049                            request = portletRequest.getAttribute(
050                                    PortletServlet.PORTLET_SERVLET_REQUEST);
051                    }
052    
053                    return (HttpServletRequest)request;
054            }
055    
056            public HttpServletResponse getServletResponse(
057                    PortletRequest portletRequest, PortletResponse portletResponse) {
058    
059                    Object response = portletRequest.getAttribute(
060                            _PORTLET_CONTAINER_SERVLET_RESPONSE);
061    
062                    if (response == null) {
063                            response = portletRequest.getAttribute(
064                                    PortletServlet.PORTLET_SERVLET_RESPONSE);
065                    }
066    
067                    return (HttpServletResponse)response;
068            }
069    
070            private static final String _PORTLET_CONTAINER_SERVLET_CONFIG =
071                    "javax.portlet.portletc.servletConfig";
072    
073            private static final String _PORTLET_CONTAINER_SERVLET_REQUEST =
074                    "javax.portlet.portletc.httpServletRequest";
075    
076            private static final String _PORTLET_CONTAINER_SERVLET_RESPONSE =
077                    "javax.portlet.portletc.httpServletResponse";
078    
079    }