1   /**
2    * Copyright (c) 2000-2010 Liferay, Inc. All rights reserved.
3    *
4    * The contents of this file are subject to the terms of the Liferay Enterprise
5    * Subscription License ("License"). You may not use this file except in
6    * compliance with the License. You can obtain a copy of the License by
7    * contacting Liferay, Inc. See the License for the specific language governing
8    * permissions and limitations under the License, including but not limited to
9    * distribution rights of the Software.
10   *
11   *
12   *
13   */
14  
15  package com.liferay.portal.kernel.portlet;
16  
17  import com.liferay.portal.kernel.log.Log;
18  import com.liferay.portal.kernel.log.LogFactoryUtil;
19  import com.liferay.portal.kernel.util.PortalClassInvoker;
20  
21  import java.util.Map;
22  
23  /**
24   * <a href="BaseFriendlyURLMapper.java.html"><b><i>View Source</i></b></a>
25   *
26   * @author Jorge Ferrer
27   * @author Brian Wing Shun Chan
28   */
29  public abstract class BaseFriendlyURLMapper implements FriendlyURLMapper {
30  
31      public abstract String getPortletId();
32  
33      public boolean isCheckMappingWithPrefix() {
34          return _CHECK_MAPPING_WITH_PREFIX;
35      }
36  
37      /**
38       * @deprecated
39       */
40      protected void addParam(
41          Map<String, String[]> parameterMap, String name, boolean value) {
42  
43          addParameter(parameterMap, name, value);
44      }
45  
46      /**
47       * @deprecated
48       */
49      protected void addParam(
50          Map<String, String[]> parameterMap, String name, double value) {
51  
52          addParameter(parameterMap, name, value);
53      }
54  
55      /**
56       * @deprecated
57       */
58      protected void addParam(
59          Map<String, String[]> parameterMap, String name, int value) {
60  
61          addParameter(parameterMap, name, value);
62      }
63  
64      /**
65       * @deprecated
66       */
67      protected void addParam(
68          Map<String, String[]> parameterMap, String name, long value) {
69  
70          addParameter(parameterMap, name, value);
71      }
72  
73      /**
74       * @deprecated
75       */
76      protected void addParam(
77          Map<String, String[]> parameterMap, String name, Object value) {
78  
79          addParameter(parameterMap, name, value);
80      }
81  
82      /**
83       * @deprecated
84       */
85      protected void addParam(
86          Map<String, String[]> parameterMap, String name, short value) {
87  
88          addParameter(parameterMap, name, value);
89      }
90  
91      /**
92       * @deprecated
93       */
94      protected void addParam(
95          Map<String, String[]> parameterMap, String name, String value) {
96  
97          addParameter(parameterMap, name, value);
98      }
99  
100     protected void addParameter(
101         Map<String, String[]> parameterMap, String name, boolean value) {
102 
103         addParameter(parameterMap, name, String.valueOf(value));
104     }
105 
106     protected void addParameter(
107         Map<String, String[]> parameterMap, String name, double value) {
108 
109         addParameter(parameterMap, name, String.valueOf(value));
110     }
111 
112     protected void addParameter(
113         Map<String, String[]> parameterMap, String name, int value) {
114 
115         addParameter(parameterMap, name, String.valueOf(value));
116     }
117 
118     protected void addParameter(
119         Map<String, String[]> parameterMap, String name, long value) {
120 
121         addParameter(parameterMap, name, String.valueOf(value));
122     }
123 
124     protected void addParameter(
125         Map<String, String[]> parameterMap, String name, Object value) {
126 
127         addParameter(parameterMap, name, String.valueOf(value));
128     }
129 
130     protected void addParameter(
131         Map<String, String[]> parameterMap, String name, short value) {
132 
133         addParameter(parameterMap, name, String.valueOf(value));
134     }
135 
136     protected void addParameter(
137         Map<String, String[]> parameterMap, String name, String value) {
138 
139         try {
140             if (!_isReservedParameter(name)) {
141                 Map<String, String> prpIdentifers =
142                     FriendlyURLMapperThreadLocal.getPRPIdentifiers();
143 
144                 if (prpIdentifers.containsKey(name)) {
145                     name = prpIdentifers.get(name);
146                 }
147                 else {
148                     name = getNamespace() + name;
149                 }
150             }
151 
152             parameterMap.put(name, new String[] {value});
153         }
154         catch (Exception e) {
155             _log.error(e, e);
156         }
157     }
158 
159     protected String getNamespace() {
160         try {
161             return _getPortletNamespace(getPortletId());
162         }
163         catch (Exception e) {
164             _log.error(e, e);
165 
166             return getPortletId();
167         }
168     }
169 
170     private String _getPortletNamespace(String portletId)
171         throws Exception {
172 
173         Object returnObj = PortalClassInvoker.invoke(
174             _CLASS, _METHOD_GETPORTLETNAMESPACE, portletId, false);
175 
176         if (returnObj != null) {
177             return (String)returnObj;
178         }
179         else {
180             return null;
181         }
182     }
183 
184     private boolean _isReservedParameter(String name) throws Exception {
185         Object returnObj = PortalClassInvoker.invoke(
186             _CLASS, _METHOD_ISRESERVEDPARAMETER, name, false);
187 
188         if (returnObj != null) {
189             return (Boolean)returnObj;
190         }
191         else {
192             return false;
193         }
194     }
195 
196     private static final boolean _CHECK_MAPPING_WITH_PREFIX = true;
197 
198     private static final String _CLASS = "com.liferay.portal.util.PortalUtil";
199 
200     private static final String _METHOD_GETPORTLETNAMESPACE =
201         "getPortletNamespace";
202 
203     private static final String _METHOD_ISRESERVEDPARAMETER =
204         "isReservedParameter";
205 
206     private static Log _log = LogFactoryUtil.getLog(
207         BaseFriendlyURLMapper.class);
208 
209 }