001    /**
002     * Copyright (c) 2000-2013 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                            return SKIP_BODY;
100                    }
101    
102                    pageContext.setAttribute(
103                            "liferayPortletResponse",
104                            PortalUtil.getLiferayPortletResponse(portletResponse));
105    
106                    String portletResponseAttrName = null;
107    
108                    if (lifecycle.equals(PortletRequest.ACTION_PHASE)) {
109                            portletResponseAttrName = "actionResponse";
110                    }
111                    else if (lifecycle.equals(PortletRequest.EVENT_PHASE)) {
112                            portletResponseAttrName = "eventResponse";
113                    }
114                    else if (lifecycle.equals(PortletRequest.RENDER_PHASE)) {
115                            portletResponseAttrName = "renderResponse";
116                    }
117                    else if (lifecycle.equals(PortletRequest.RESOURCE_PHASE)) {
118                            portletResponseAttrName = "resourceResponse";
119                    }
120    
121                    pageContext.setAttribute(portletResponseAttrName, portletResponse);
122    
123                    return SKIP_BODY;
124            }
125    
126    }