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.taglib.portlet;
016    
017    import com.liferay.portal.kernel.util.JavaConstants;
018    import com.liferay.portal.util.PortalUtil;
019    
020    import javax.portlet.PortletConfig;
021    import javax.portlet.PortletPreferences;
022    import javax.portlet.PortletRequest;
023    import javax.portlet.PortletResponse;
024    import javax.portlet.PortletSession;
025    
026    import javax.servlet.http.HttpServletRequest;
027    import javax.servlet.jsp.tagext.TagSupport;
028    
029    /**
030     * @author Brian Wing Shun Chan
031     */
032    public class DefineObjectsTag extends TagSupport {
033    
034            @Override
035            public int doStartTag() {
036                    HttpServletRequest request =
037                            (HttpServletRequest)pageContext.getRequest();
038    
039                    String lifecycle = (String)request.getAttribute(
040                            PortletRequest.LIFECYCLE_PHASE);
041    
042                    PortletConfig portletConfig = (PortletConfig)request.getAttribute(
043                            JavaConstants.JAVAX_PORTLET_CONFIG);
044    
045                    if (portletConfig != null) {
046                            pageContext.setAttribute("portletConfig", portletConfig);
047                            pageContext.setAttribute(
048                                    "portletName", portletConfig.getPortletName());
049                    }
050    
051                    PortletRequest portletRequest = (PortletRequest)request.getAttribute(
052                            JavaConstants.JAVAX_PORTLET_REQUEST);
053    
054                    if (portletRequest != null) {
055                            pageContext.setAttribute(
056                                    "liferayPortletRequest",
057                                    PortalUtil.getLiferayPortletRequest(portletRequest));
058    
059                            String portletRequestAttrName = null;
060    
061                            if (lifecycle.equals(PortletRequest.ACTION_PHASE)) {
062                                    portletRequestAttrName = "actionRequest";
063                            }
064                            else if (lifecycle.equals(PortletRequest.EVENT_PHASE)) {
065                                    portletRequestAttrName = "eventRequest";
066                            }
067                            else if (lifecycle.equals(PortletRequest.RENDER_PHASE)) {
068                                    portletRequestAttrName = "renderRequest";
069                            }
070                            else if (lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
071                                    portletRequestAttrName = "resourceRequest";
072                            }
073    
074                            pageContext.setAttribute(portletRequestAttrName, portletRequest);
075    
076                            PortletPreferences portletPreferences =
077                                    portletRequest.getPreferences();
078    
079                            pageContext.setAttribute("portletPreferences", portletPreferences);
080                            pageContext.setAttribute(
081                                    "portletPreferencesValues", portletPreferences.getMap());
082    
083                            PortletSession portletSession = portletRequest.getPortletSession();
084    
085                            pageContext.setAttribute("portletSession", portletSession);
086    
087                            try {
088                                    pageContext.setAttribute(
089                                            "portletSessionScope", portletSession.getAttributeMap());
090                            }
091                            catch (IllegalStateException ise) {
092                            }
093                    }
094    
095                    PortletResponse portletResponse = (PortletResponse)request.getAttribute(
096                            JavaConstants.JAVAX_PORTLET_RESPONSE);
097    
098                    if (portletResponse != null) {
099                            pageContext.setAttribute(
100                                    "liferayPortletResponse",
101                                    PortalUtil.getLiferayPortletResponse(portletResponse));
102    
103                            String portletResponseAttrName = null;
104    
105                            if (lifecycle.equals(PortletRequest.ACTION_PHASE)) {
106                                    portletResponseAttrName = "actionResponse";
107                            }
108                            else if (lifecycle.equals(PortletRequest.EVENT_PHASE)) {
109                                    portletResponseAttrName = "eventResponse";
110                            }
111                            else if (lifecycle.equals(PortletRequest.RENDER_PHASE)) {
112                                    portletResponseAttrName = "renderResponse";
113                            }
114                            else if (lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
115                                    portletResponseAttrName = "resourceResponse";
116                            }
117    
118                            pageContext.setAttribute(portletResponseAttrName, portletResponse);
119                    }
120    
121                    return SKIP_BODY;
122            }
123    
124    }