| PortletWindowRequestReader.java |
1 /**
2 * Copyright (c) 2000-2008 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 2008 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.portal.util.QNameUtil;
47
48 import com.sun.portal.container.ChannelMode;
49 import com.sun.portal.container.ChannelState;
50 import com.sun.portal.container.ChannelURLType;
51 import com.sun.portal.container.WindowRequestReader;
52
53 import java.util.HashMap;
54 import java.util.Map;
55 import java.util.Set;
56
57 import javax.servlet.http.HttpServletRequest;
58
59 /**
60 * <a href="PortletWindowRequestReader.java.html"><b><i>View Source</i></b></a>
61 *
62 * @author Deepak Gothe
63 * @author Brian Wing Shun Chan
64 *
65 */
66 public class PortletWindowRequestReader implements WindowRequestReader {
67
68 public PortletWindowRequestReader(boolean facesPortlet) {
69 _facesPortlet = facesPortlet;
70 }
71
72 public String getCacheLevel(HttpServletRequest request) {
73 return request.getParameter("p_p_cacheability");
74 }
75
76 public String getResourceID(HttpServletRequest request) {
77 return request.getParameter("p_p_resource_id");
78 }
79
80 public ChannelMode readNewPortletWindowMode(HttpServletRequest request) {
81 String portletMode = request.getParameter("p_p_mode");
82
83 if (portletMode != null) {
84 return new ChannelMode(portletMode);
85 }
86 else {
87 return null;
88 }
89 }
90
91 public ChannelState readNewWindowState(HttpServletRequest request) {
92 String windowState = request.getParameter("p_p_state");
93
94 if (windowState != null) {
95 return new ChannelState(windowState);
96 }
97 else {
98 return null;
99 }
100 }
101
102 public Map<String, String[]> readParameterMap(HttpServletRequest request) {
103 Map<String, String[]> parameterMap = new HashMap<String, String[]>();
104
105 String portletId = request.getParameter("p_p_id");
106
107 String namespace = PortalUtil.getPortletNamespace(portletId);
108
109 Set<Map.Entry<String, String[]>> entries =
110 request.getParameterMap().entrySet();
111
112 for (Map.Entry<String, String[]> mapEntry : entries) {
113 String key = mapEntry.getKey();
114
115 if (PortalUtil.isReservedParameter(key)) {
116 continue;
117 }
118
119 if (key.startsWith(namespace) && !_facesPortlet) {
120 parameterMap.put(
121 key.substring(namespace.length()), mapEntry.getValue());
122
123 }
124 else if (key.startsWith(
125 QNameUtil.PUBLIC_RENDER_PARAMETER_NAMESPACE)) {
126
127 String identifier =
128 QNameUtil.getPublicRenderParameterIdentifier(key);
129
130 parameterMap.put(identifier, mapEntry.getValue());
131 }
132 else {
133 parameterMap.put(key, mapEntry.getValue());
134 }
135 }
136
137 return parameterMap;
138 }
139
140 public ChannelURLType readURLType(HttpServletRequest request) {
141 String urlType = ParamUtil.getString(request, "p_p_url_type");
142
143 if (urlType.equals("0")) {
144 return ChannelURLType.RENDER;
145 }
146 else if (urlType.equals("1")) {
147 return ChannelURLType.ACTION;
148 }
149 else if (urlType.equals("2")) {
150 return ChannelURLType.RESOURCE;
151 }
152 else {
153 return ChannelURLType.RENDER;
154 }
155 }
156
157 private boolean _facesPortlet;
158
159 }