| PortletWindowRequestReader.java |
1 /**
2 * Copyright (c) 2000-2009 Liferay, Inc. All rights reserved.
3 *
4 * Permission is hereby granted, free of charge, to any person obtaining a copy
5 * of this software and associated documentation files (the "Software"), to deal
6 * in the Software without restriction, including without limitation the rights
7 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8 * copies of the Software, and to permit persons to whom the Software is
9 * furnished to do so, subject to the following conditions:
10 *
11 * The above copyright notice and this permission notice shall be included in
12 * all copies or substantial portions of the Software.
13 *
14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
20 * SOFTWARE.
21 */
22
23 /**
24 * The contents of this file are subject to the terms of the Common Development
25 * and Distribution License (the License). You may not use this file except in
26 * compliance with the License.
27 *
28 * You can obtain a copy of the License at http://www.sun.com/cddl/cddl.html and
29 * legal/CDDLv1.0.txt. See the License for the specific language governing
30 * permission and limitations under the License.
31 *
32 * When distributing Covered Code, include this CDDL Header Notice in each file
33 * and include the License file at legal/CDDLv1.0.txt.
34 *
35 * If applicable, add the following below the CDDL Header, with the fields
36 * enclosed by brackets [] replaced by your own identifying information:
37 * "Portions Copyrighted [year] [name of copyright owner]"
38 *
39 * Copyright 2009 Sun Microsystems Inc. All rights reserved.
40 */
41
42 package com.liferay.portal.portletcontainer;
43
44 import com.liferay.portal.kernel.util.ParamUtil;
45 import com.liferay.portal.util.PortalUtil;
46 import com.liferay.portlet.PortletQName;
47 import com.liferay.portlet.PortletQNameUtil;
48
49 import com.sun.portal.container.ChannelMode;
50 import com.sun.portal.container.ChannelState;
51 import com.sun.portal.container.ChannelURLType;
52 import com.sun.portal.container.WindowRequestReader;
53
54 import java.util.HashMap;
55 import java.util.Map;
56 import java.util.Set;
57
58 import javax.servlet.http.HttpServletRequest;
59
60 /**
61 * <a href="PortletWindowRequestReader.java.html"><b><i>View Source</i></b></a>
62 *
63 * @author Deepak Gothe
64 * @author Brian Wing Shun Chan
65 *
66 */
67 public class PortletWindowRequestReader implements WindowRequestReader {
68
69 public PortletWindowRequestReader(boolean facesPortlet) {
70 _facesPortlet = facesPortlet;
71 }
72
73 public String getCacheLevel(HttpServletRequest request) {
74 return request.getParameter("p_p_cacheability");
75 }
76
77 public String getResourceID(HttpServletRequest request) {
78 return request.getParameter("p_p_resource_id");
79 }
80
81 public ChannelMode readNewPortletWindowMode(HttpServletRequest request) {
82 String portletMode = request.getParameter("p_p_mode");
83
84 if (portletMode != null) {
85 return new ChannelMode(portletMode);
86 }
87 else {
88 return null;
89 }
90 }
91
92 public ChannelState readNewWindowState(HttpServletRequest request) {
93 String windowState = request.getParameter("p_p_state");
94
95 if (windowState != null) {
96 return new ChannelState(windowState);
97 }
98 else {
99 return null;
100 }
101 }
102
103 public Map<String, String[]> readParameterMap(HttpServletRequest request) {
104 Map<String, String[]> parameterMap = new HashMap<String, String[]>();
105
106 String portletId = request.getParameter("p_p_id");
107
108 String namespace = PortalUtil.getPortletNamespace(portletId);
109
110 Set<Map.Entry<String, String[]>> entries =
111 request.getParameterMap().entrySet();
112
113 for (Map.Entry<String, String[]> mapEntry : entries) {
114 String key = mapEntry.getKey();
115
116 if (PortalUtil.isReservedParameter(key)) {
117 continue;
118 }
119
120 if (key.startsWith(namespace) && !_facesPortlet) {
121 parameterMap.put(
122 key.substring(namespace.length()), mapEntry.getValue());
123
124 }
125 else if (key.startsWith(
126 PortletQName.PUBLIC_RENDER_PARAMETER_NAMESPACE)) {
127
128 String identifier =
129 PortletQNameUtil.getPublicRenderParameterIdentifier(key);
130
131 parameterMap.put(identifier, mapEntry.getValue());
132 }
133 else {
134 parameterMap.put(key, mapEntry.getValue());
135 }
136 }
137
138 return parameterMap;
139 }
140
141 public ChannelURLType readURLType(HttpServletRequest request) {
142 String urlType = ParamUtil.getString(request, "p_p_url_type");
143
144 if (urlType.equals("0")) {
145 return ChannelURLType.RENDER;
146 }
147 else if (urlType.equals("1")) {
148 return ChannelURLType.ACTION;
149 }
150 else if (urlType.equals("2")) {
151 return ChannelURLType.RESOURCE;
152 }
153 else {
154 return ChannelURLType.RENDER;
155 }
156 }
157
158 private boolean _facesPortlet;
159
160 }