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