001
014
015 package com.liferay.portal.kernel.portlet;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.util.HttpUtil;
020 import com.liferay.portal.kernel.util.MapUtil;
021 import com.liferay.portal.kernel.util.PredicateFilter;
022 import com.liferay.portal.kernel.util.StringPool;
023 import com.liferay.portal.kernel.util.StringUtil;
024 import com.liferay.portal.kernel.util.Validator;
025 import com.liferay.portal.kernel.util.WebKeys;
026 import com.liferay.portal.kernel.xml.simple.Element;
027 import com.liferay.portal.theme.ThemeDisplay;
028
029 import java.io.Serializable;
030
031 import java.util.Collection;
032 import java.util.Enumeration;
033 import java.util.HashMap;
034 import java.util.Locale;
035 import java.util.Map;
036
037 import javax.portlet.ActionRequest;
038 import javax.portlet.MimeResponse;
039 import javax.portlet.PortletMode;
040 import javax.portlet.PortletRequest;
041 import javax.portlet.PortletResponse;
042 import javax.portlet.PortletSession;
043 import javax.portlet.PortletURL;
044 import javax.portlet.RenderRequest;
045 import javax.portlet.ResourceRequest;
046 import javax.portlet.ResourceURL;
047 import javax.portlet.WindowState;
048 import javax.portlet.WindowStateException;
049
050
053 public class PortletRequestModel implements Serializable {
054
055 public PortletRequestModel(
056 PortletRequest portletRequest, PortletResponse portletResponse) {
057
058 _containerNamespace = portletRequest.getContextPath();
059 _contentType = portletRequest.getResponseContentType();
060 _serverName = portletRequest.getServerName();
061 _serverPort = portletRequest.getServerPort();
062 _secure = portletRequest.isSecure();
063 _authType = portletRequest.getAuthType();
064 _remoteUser = portletRequest.getRemoteUser();
065 _contextPath = portletRequest.getContextPath();
066 _locale = portletRequest.getLocale();
067 _portletMode = portletRequest.getPortletMode();
068 _portletSessionId = portletRequest.getRequestedSessionId();
069 _scheme = portletRequest.getScheme();
070 _windowState = portletRequest.getWindowState();
071
072 if (portletRequest instanceof ActionRequest) {
073 _lifecycle = RenderRequest.ACTION_PHASE;
074 }
075 else if (portletRequest instanceof RenderRequest) {
076 _lifecycle = RenderRequest.RENDER_PHASE;
077 }
078 else if (portletRequest instanceof ResourceRequest) {
079 _lifecycle = RenderRequest.RESOURCE_PHASE;
080 }
081 else {
082 _lifecycle = null;
083 }
084
085 String portletNamespace = null;
086 String actionURLString = null;
087 String renderURLString = null;
088 String renderURLExclusiveString = null;
089 String renderURLMaximizedString = null;
090 String renderURLMinimizedString = null;
091 String renderURLNormalString = null;
092 String renderURLPopUp = null;
093
094 if (portletResponse instanceof MimeResponse) {
095 MimeResponse mimeResponse = (MimeResponse)portletResponse;
096
097 portletNamespace = mimeResponse.getNamespace();
098
099 try {
100 PortletURL actionURL = mimeResponse.createActionURL();
101
102 actionURLString = actionURL.toString();
103 }
104 catch (IllegalStateException ise) {
105 if (_log.isWarnEnabled()) {
106 _log.warn(ise.getMessage());
107 }
108 }
109
110 try {
111 PortletURL renderURL = mimeResponse.createRenderURL();
112
113 renderURLString = renderURL.toString();
114
115 try {
116 renderURL.setWindowState(LiferayWindowState.EXCLUSIVE);
117
118 renderURLExclusiveString = renderURL.toString();
119 }
120 catch (WindowStateException wse) {
121 }
122
123 try {
124 renderURL.setWindowState(LiferayWindowState.MAXIMIZED);
125
126 renderURLMaximizedString = renderURL.toString();
127 }
128 catch (WindowStateException wse) {
129 }
130
131 try {
132 renderURL.setWindowState(LiferayWindowState.MINIMIZED);
133
134 renderURLMinimizedString = renderURL.toString();
135 }
136 catch (WindowStateException wse) {
137 }
138
139 try {
140 renderURL.setWindowState(LiferayWindowState.NORMAL);
141
142 renderURLNormalString = renderURL.toString();
143 }
144 catch (WindowStateException wse) {
145 }
146
147 try {
148 renderURL.setWindowState(LiferayWindowState.POP_UP);
149
150 renderURLPopUp = renderURL.toString();
151 }
152 catch (WindowStateException wse) {
153 }
154 }
155 catch (IllegalStateException ise) {
156 if (_log.isWarnEnabled()) {
157 _log.warn(ise.getMessage());
158 }
159 }
160
161 ResourceURL resourceURL = mimeResponse.createResourceURL();
162
163 String resourceURLString = HttpUtil.removeParameter(
164 resourceURL.toString(), portletNamespace + "struts_action");
165
166 resourceURLString = HttpUtil.removeParameter(
167 resourceURLString, portletNamespace + "redirect");
168
169 _resourceURL = resourceURL.toString();
170 }
171 else {
172 _resourceURL = null;
173 }
174
175 _portletNamespace = portletNamespace;
176 _actionURL = actionURLString;
177 _renderURL = renderURLString;
178 _renderURLExclusive = renderURLExclusiveString;
179 _renderURLMaximized = renderURLMaximizedString;
180 _renderURLMinimized = renderURLMinimizedString;
181 _renderURLNormal = renderURLNormalString;
182 _renderURLPopUp = renderURLPopUp;
183
184 ThemeDisplay themeDisplay = (ThemeDisplay)portletRequest.getAttribute(
185 WebKeys.THEME_DISPLAY);
186
187 if (themeDisplay != null) {
188 _themeDisplayModel = new ThemeDisplayModel(themeDisplay);
189 }
190 else {
191 _themeDisplayModel = null;
192 }
193
194 _parameters = new HashMap<>(portletRequest.getParameterMap());
195
196 _attributes = new HashMap<>();
197
198 Enumeration<String> enumeration = portletRequest.getAttributeNames();
199
200 while (enumeration.hasMoreElements()) {
201 String name = enumeration.nextElement();
202
203 Object value = portletRequest.getAttribute(name);
204
205 _attributes.put(name, value);
206 }
207
208 PortletSession portletSession = portletRequest.getPortletSession();
209
210 try {
211 _portletScopeSessioAttributes = portletSession.getAttributeMap(
212 PortletSession.PORTLET_SCOPE);
213
214 _applicationScopeSessionAttributes = portletSession.getAttributeMap(
215 PortletSession.APPLICATION_SCOPE);
216 }
217 catch (IllegalStateException ise) {
218 if (_log.isWarnEnabled()) {
219 _log.warn(ise.getMessage());
220 }
221 }
222 }
223
224 public String getActionURL() {
225 return _actionURL;
226 }
227
228 public Map<String, Object> getApplicationScopeSessionAttributes() {
229 return _applicationScopeSessionAttributes;
230 }
231
232 public Map<String, Object> getAttributes() {
233 return _attributes;
234 }
235
236 public String getAuthType() {
237 return _authType;
238 }
239
240 public String getContainerNamespace() {
241 return _containerNamespace;
242 }
243
244 public String getContentType() {
245 return _contentType;
246 }
247
248 public String getContextPath() {
249 return _contextPath;
250 }
251
252 public String getLifecycle() {
253 return _lifecycle;
254 }
255
256 public Locale getLocale() {
257 return _locale;
258 }
259
260 public Map<String, String[]> getParameters() {
261 return _parameters;
262 }
263
264 public PortletMode getPortletMode() {
265 return _portletMode;
266 }
267
268 public String getPortletNamespace() {
269 return _portletNamespace;
270 }
271
272 public Map<String, Object> getPortletScopeSessioAttributes() {
273 return _portletScopeSessioAttributes;
274 }
275
276 public String getPortletSessionId() {
277 return _portletSessionId;
278 }
279
280 public String getRemoteUser() {
281 return _remoteUser;
282 }
283
284 public String getRenderURL() {
285 return _renderURL;
286 }
287
288 public String getRenderURLExclusive() {
289 return _renderURLExclusive;
290 }
291
292 public String getRenderURLMaximized() {
293 return _renderURLMaximized;
294 }
295
296 public String getRenderURLMinimized() {
297 return _renderURLMinimized;
298 }
299
300 public String getRenderURLNormal() {
301 return _renderURLNormal;
302 }
303
304 public String getRenderURLPopUp() {
305 return _renderURLPopUp;
306 }
307
308 public String getResourceURL() {
309 return _resourceURL;
310 }
311
312 public String getScheme() {
313 return _scheme;
314 }
315
316 public String getServerName() {
317 return _serverName;
318 }
319
320 public int getServerPort() {
321 return _serverPort;
322 }
323
324 public ThemeDisplayModel getThemeDisplayModel() {
325 return _themeDisplayModel;
326 }
327
328 public WindowState getWindowState() {
329 return _windowState;
330 }
331
332 public boolean isSecure() {
333 return _secure;
334 }
335
336 public Map<String, Object> toMap() {
337 Map<String, Object> portletRequestModelMap = new HashMap<>();
338
339 portletRequestModelMap.put("container-type", "portlet");
340 portletRequestModelMap.put("container-namespace", _contextPath);
341 portletRequestModelMap.put("content-type", _contentType);
342 portletRequestModelMap.put("server-name", _serverName);
343 portletRequestModelMap.put("server-port", _serverPort);
344 portletRequestModelMap.put("secure", _secure);
345 portletRequestModelMap.put("auth-type", _authType);
346 portletRequestModelMap.put("remote-user", _remoteUser);
347 portletRequestModelMap.put("context-path", _contextPath);
348 portletRequestModelMap.put("locale", _locale);
349 portletRequestModelMap.put("portlet-mode", _portletMode);
350 portletRequestModelMap.put("portlet-session-id", _portletSessionId);
351 portletRequestModelMap.put("scheme", _scheme);
352 portletRequestModelMap.put("window-state", _windowState);
353 portletRequestModelMap.put("lifecycle", _lifecycle);
354
355 if (_portletNamespace != null) {
356 portletRequestModelMap.put("portlet-namespace", _portletNamespace);
357
358 if (_actionURL != null) {
359 portletRequestModelMap.put("action-url", "_actionURL");
360 }
361
362 if (_renderURL != null) {
363 portletRequestModelMap.put("render-url", _renderURL);
364
365 if (_renderURLExclusive != null) {
366 portletRequestModelMap.put(
367 "render-url-exclusive", _renderURLExclusive);
368 }
369
370 if (_renderURLMaximized != null) {
371 portletRequestModelMap.put(
372 "render-url-maximized", _renderURLMaximized);
373 }
374
375 if (_renderURLMinimized != null) {
376 portletRequestModelMap.put(
377 "render-url-minimized", _renderURLMinimized);
378 }
379
380 if (_renderURLNormal != null) {
381 portletRequestModelMap.put(
382 "render-url-normal", _renderURLNormal);
383 }
384
385 if (_renderURLPopUp != null) {
386 portletRequestModelMap.put(
387 "render-url-pop-up", _renderURLPopUp);
388 }
389 }
390
391 portletRequestModelMap.put("resource-url", _resourceURL);
392 }
393
394 if (_themeDisplayModel != null) {
395 Map<String, Object> themeDisplayModelMap = new HashMap<>();
396
397 portletRequestModelMap.put("theme-display", themeDisplayModelMap);
398
399 themeDisplayModelMap.put(
400 "cdn-host", _themeDisplayModel.getCdnHost());
401 themeDisplayModelMap.put(
402 "company-id", _themeDisplayModel.getCompanyId());
403 themeDisplayModelMap.put(
404 "do-as-user-id", _themeDisplayModel.getDoAsUserId());
405 themeDisplayModelMap.put(
406 "i18n-language-id", _themeDisplayModel.getI18nLanguageId());
407 themeDisplayModelMap.put(
408 "i18n-path", _themeDisplayModel.getI18nPath());
409 themeDisplayModelMap.put(
410 "language-id", _themeDisplayModel.getLanguageId());
411 themeDisplayModelMap.put("locale", _themeDisplayModel.getLocale());
412 themeDisplayModelMap.put(
413 "path-context", _themeDisplayModel.getPathContext());
414 themeDisplayModelMap.put(
415 "path-friendly-url-private-group",
416 _themeDisplayModel.getPathFriendlyURLPrivateGroup());
417 themeDisplayModelMap.put(
418 "path-friendly-url-private-user",
419 _themeDisplayModel.getPathFriendlyURLPrivateUser());
420 themeDisplayModelMap.put(
421 "path-friendly-url-public",
422 _themeDisplayModel.getPathFriendlyURLPublic());
423 themeDisplayModelMap.put(
424 "path-image", _themeDisplayModel.getPathImage());
425 themeDisplayModelMap.put(
426 "path-main", _themeDisplayModel.getPathMain());
427 themeDisplayModelMap.put(
428 "path-theme-images", _themeDisplayModel.getPathThemeImages());
429 themeDisplayModelMap.put("plid", _themeDisplayModel.getPlid());
430 themeDisplayModelMap.put(
431 "portal-url", _themeDisplayModel.getPortalURL());
432 themeDisplayModelMap.put(
433 "real-user-id", _themeDisplayModel.getRealUserId());
434 themeDisplayModelMap.put(
435 "scope-group-id", _themeDisplayModel.getScopeGroupId());
436 themeDisplayModelMap.put("secure", _themeDisplayModel.isSecure());
437 themeDisplayModelMap.put(
438 "server-name", _themeDisplayModel.getServerName());
439 themeDisplayModelMap.put(
440 "server-port", _themeDisplayModel.getServerPort());
441 themeDisplayModelMap.put(
442 "time-zone", _themeDisplayModel.getTimeZone().getID());
443 themeDisplayModelMap.put(
444 "url-portal", _themeDisplayModel.getURLPortal());
445 themeDisplayModelMap.put("user-id", _themeDisplayModel.getUserId());
446
447 PortletDisplayModel portletDisplayModel =
448 _themeDisplayModel.getPortletDisplayModel();
449
450 if (portletDisplayModel != null) {
451 Map<String, Object> portletDisplayModelMap = new HashMap<>();
452
453 themeDisplayModelMap.put(
454 "portlet-display", portletDisplayModelMap);
455
456 portletDisplayModelMap.put("id", portletDisplayModel.getId());
457 portletDisplayModelMap.put(
458 "instance-id", portletDisplayModel.getInstanceId());
459 portletDisplayModelMap.put(
460 "portlet-name", portletDisplayModel.getPortletName());
461 portletDisplayModelMap.put(
462 "resource-pk", portletDisplayModel.getResourcePK());
463 portletDisplayModelMap.put(
464 "root-portlet-id", portletDisplayModel.getRootPortletId());
465 portletDisplayModelMap.put(
466 "title", portletDisplayModel.getTitle());
467 }
468 }
469
470 portletRequestModelMap.put("parameters", _parameters);
471
472 _attributes = filterInvalidAttributes(_attributes);
473
474 portletRequestModelMap.put("attributes", _attributes);
475
476 Map<String, Object> portletSessionMap = new HashMap<>();
477
478 portletRequestModelMap.put("portlet-session", portletSessionMap);
479
480 _portletScopeSessioAttributes = filterInvalidAttributes(
481 _portletScopeSessioAttributes);
482
483 portletSessionMap.put(
484 "portlet-attributes", _portletScopeSessioAttributes);
485
486 _applicationScopeSessionAttributes = filterInvalidAttributes(
487 _applicationScopeSessionAttributes);
488
489 portletSessionMap.put(
490 "application-attributes", _applicationScopeSessionAttributes);
491
492 return portletRequestModelMap;
493 }
494
495 public String toXML() {
496 Element requestElement = new Element("request");
497
498 requestElement.addElement("container-type", "portlet");
499 requestElement.addElement("container-namespace", _contextPath);
500 requestElement.addElement("content-type", _contentType);
501 requestElement.addElement("server-name", _serverName);
502 requestElement.addElement("server-port", _serverPort);
503 requestElement.addElement("secure", _secure);
504 requestElement.addElement("auth-type", _authType);
505 requestElement.addElement("remote-user", _remoteUser);
506 requestElement.addElement("context-path", _contextPath);
507 requestElement.addElement("locale", _locale);
508 requestElement.addElement("portlet-mode", _portletMode);
509 requestElement.addElement("portlet-session-id", _portletSessionId);
510 requestElement.addElement("scheme", _scheme);
511 requestElement.addElement("window-state", _windowState);
512 requestElement.addElement("lifecycle", _lifecycle);
513
514 if (_portletNamespace != null) {
515 requestElement.addElement("portlet-namespace", _portletNamespace);
516
517 if (_actionURL != null) {
518 requestElement.addElement("action-url", _actionURL);
519 }
520
521 if (_renderURL != null) {
522 requestElement.addElement("render-url", _renderURL);
523
524 if (_renderURLExclusive != null) {
525 requestElement.addElement(
526 "render-url-exclusive", _renderURLExclusive);
527 }
528
529 if (_renderURLMaximized != null) {
530 requestElement.addElement(
531 "render-url-maximized", _renderURLMaximized);
532 }
533
534 if (_renderURLMinimized != null) {
535 requestElement.addElement(
536 "render-url-minimized", _renderURLMinimized);
537 }
538
539 if (_renderURLNormal != null) {
540 requestElement.addElement(
541 "render-url-normal", _renderURLNormal);
542 }
543
544 if (_renderURLPopUp != null) {
545 requestElement.addElement(
546 "render-url-pop-up", _renderURLPopUp);
547 }
548 }
549
550 requestElement.addElement("resource-url", _resourceURL);
551 }
552
553 if (_themeDisplayModel != null) {
554 Element themeDisplayElement = requestElement.addElement(
555 "theme-display");
556
557 themeDisplayElement.addElement(
558 "cdn-host", _themeDisplayModel.getCdnHost());
559 themeDisplayElement.addElement(
560 "company-id", _themeDisplayModel.getCompanyId());
561 themeDisplayElement.addElement(
562 "do-as-user-id", _themeDisplayModel.getDoAsUserId());
563 themeDisplayElement.addElement(
564 "i18n-language-id", _themeDisplayModel.getI18nLanguageId());
565 themeDisplayElement.addElement(
566 "i18n-path", _themeDisplayModel.getI18nPath());
567 themeDisplayElement.addElement(
568 "language-id", _themeDisplayModel.getLanguageId());
569 themeDisplayElement.addElement(
570 "locale", _themeDisplayModel.getLocale());
571 themeDisplayElement.addElement(
572 "path-context", _themeDisplayModel.getPathContext());
573 themeDisplayElement.addElement(
574 "path-friendly-url-private-group",
575 _themeDisplayModel.getPathFriendlyURLPrivateGroup());
576 themeDisplayElement.addElement(
577 "path-friendly-url-private-user",
578 _themeDisplayModel.getPathFriendlyURLPrivateUser());
579 themeDisplayElement.addElement(
580 "path-friendly-url-public",
581 _themeDisplayModel.getPathFriendlyURLPublic());
582 themeDisplayElement.addElement(
583 "path-image", _themeDisplayModel.getPathImage());
584 themeDisplayElement.addElement(
585 "path-main", _themeDisplayModel.getPathMain());
586 themeDisplayElement.addElement(
587 "path-theme-images", _themeDisplayModel.getPathThemeImages());
588 themeDisplayElement.addElement(
589 "plid", _themeDisplayModel.getPlid());
590 themeDisplayElement.addElement(
591 "portal-url", _themeDisplayModel.getPortalURL());
592 themeDisplayElement.addElement(
593 "real-user-id", _themeDisplayModel.getRealUserId());
594 themeDisplayElement.addElement(
595 "scope-group-id", _themeDisplayModel.getScopeGroupId());
596 themeDisplayElement.addElement(
597 "secure", _themeDisplayModel.isSecure());
598 themeDisplayElement.addElement(
599 "server-name", _themeDisplayModel.getServerName());
600 themeDisplayElement.addElement(
601 "server-port", _themeDisplayModel.getServerPort());
602 themeDisplayElement.addElement(
603 "time-zone", _themeDisplayModel.getTimeZone().getID());
604 themeDisplayElement.addElement(
605 "url-portal", _themeDisplayModel.getURLPortal());
606 themeDisplayElement.addElement(
607 "user-id", _themeDisplayModel.getUserId());
608
609 PortletDisplayModel portletDisplayModel =
610 _themeDisplayModel.getPortletDisplayModel();
611
612 if (portletDisplayModel != null) {
613 Element portletDisplayElement = themeDisplayElement.addElement(
614 "portlet-display");
615
616 portletDisplayElement.addElement(
617 "id", portletDisplayModel.getId());
618 portletDisplayElement.addElement(
619 "instance-id", portletDisplayModel.getInstanceId());
620 portletDisplayElement.addElement(
621 "portlet-name", portletDisplayModel.getPortletName());
622 portletDisplayElement.addElement(
623 "resource-pk", portletDisplayModel.getResourcePK());
624 portletDisplayElement.addElement(
625 "root-portlet-id", portletDisplayModel.getRootPortletId());
626 portletDisplayElement.addElement(
627 "title", portletDisplayModel.getTitle());
628 }
629 }
630
631 Element parametersElement = requestElement.addElement("parameters");
632
633 for (Map.Entry<String, String[]> entry : _parameters.entrySet()) {
634 Element parameterElement = parametersElement.addElement(
635 "parameter");
636
637 parameterElement.addElement("name", entry.getKey());
638
639 for (String value : entry.getValue()) {
640 parameterElement.addElement("value", value);
641 }
642 }
643
644 Element attributesElement = requestElement.addElement("attributes");
645
646 for (Map.Entry<String, Object> entry : _attributes.entrySet()) {
647 String name = entry.getKey();
648
649 if (!_isValidAttributeName(name)) {
650 continue;
651 }
652
653 Object value = entry.getValue();
654
655 if (!_isValidAttributeValue(value)) {
656 continue;
657 }
658
659 Element attributeElement = attributesElement.addElement(
660 "attribute");
661
662 attributeElement.addElement("name", name);
663 attributeElement.addElement("value", value);
664 }
665
666 Element portletSessionElement = requestElement.addElement(
667 "portlet-session");
668
669 attributesElement = portletSessionElement.addElement(
670 "portlet-attributes");
671
672 for (Map.Entry<String, Object> entry :
673 _portletScopeSessioAttributes.entrySet()) {
674
675 String name = entry.getKey();
676
677 if (!_isValidAttributeName(name)) {
678 continue;
679 }
680
681 Object value = entry.getValue();
682
683 if (!_isValidAttributeValue(value)) {
684 continue;
685 }
686
687 Element attributeElement = attributesElement.addElement(
688 "attribute");
689
690 attributeElement.addElement("name", name);
691 attributeElement.addElement("value", value);
692 }
693
694 attributesElement = portletSessionElement.addElement(
695 "application-attributes");
696
697 for (Map.Entry<String, Object> entry :
698 _applicationScopeSessionAttributes.entrySet()) {
699
700 String name = entry.getKey();
701
702 if (!_isValidAttributeName(name)) {
703 continue;
704 }
705
706 Object value = entry.getValue();
707
708 if (!_isValidAttributeValue(value)) {
709 continue;
710 }
711
712 Element attributeElement = attributesElement.addElement(
713 "attribute");
714
715 attributeElement.addElement("name", name);
716 attributeElement.addElement("value", value);
717 }
718
719 return requestElement.toXMLString();
720 }
721
722 protected PortletRequestModel() {
723 _actionURL = null;
724 _authType = null;
725 _containerNamespace = null;
726 _contentType = null;
727 _contextPath = null;
728 _lifecycle = null;
729 _locale = null;
730 _parameters = null;
731 _portletMode = null;
732 _portletNamespace = null;
733 _portletSessionId = null;
734 _remoteUser = null;
735 _renderURL = null;
736 _renderURLExclusive = null;
737 _renderURLMaximized = null;
738 _renderURLMinimized = null;
739 _renderURLNormal = null;
740 _renderURLPopUp = null;
741 _resourceURL = null;
742 _scheme = null;
743 _secure = false;
744 _serverName = null;
745 _serverPort = 0;
746 _themeDisplayModel = null;
747 _windowState = null;
748 }
749
750 protected Map<String, Object> filterInvalidAttributes(
751 Map<String, Object> map) {
752
753 PredicateFilter<Map.Entry<String, Object>> predicateFilter =
754 new PredicateFilter<Map.Entry<String, Object>>() {
755
756 @Override
757 public boolean filter(Map.Entry<String, Object> entry) {
758 if (_isValidAttributeName(entry.getKey()) &&
759 _isValidAttributeValue(entry.getValue())) {
760
761 return true;
762 }
763
764 return false;
765 }
766
767 };
768
769 return MapUtil.filter(map, predicateFilter);
770 }
771
772 private static boolean _isValidAttributeName(String name) {
773 if (StringUtil.equalsIgnoreCase(
774 name, WebKeys.PORTLET_RENDER_PARAMETERS) ||
775 StringUtil.equalsIgnoreCase(name, "j_password") ||
776 StringUtil.equalsIgnoreCase(name, "LAYOUT_CONTENT") ||
777 StringUtil.equalsIgnoreCase(name, "LAYOUTS") ||
778 StringUtil.equalsIgnoreCase(name, "USER_PASSWORD") ||
779 name.startsWith("javax.") || name.startsWith("liferay-ui:")) {
780
781 return false;
782 }
783 else {
784 return true;
785 }
786 }
787
788 private static boolean _isValidAttributeValue(Object obj) {
789 if (obj == null) {
790 return false;
791 }
792 else if (obj instanceof Collection<?>) {
793 Collection<?> col = (Collection<?>)obj;
794
795 return !col.isEmpty();
796 }
797 else if (obj instanceof Map<?, ?>) {
798 Map<?, ?> map = (Map<?, ?>)obj;
799
800 return !map.isEmpty();
801 }
802 else {
803 String objString = String.valueOf(obj);
804
805 if (Validator.isNull(objString)) {
806 return false;
807 }
808
809 String hashCode = StringPool.AT.concat(
810 StringUtil.toHexString(obj.hashCode()));
811
812 if (objString.endsWith(hashCode)) {
813 return false;
814 }
815
816 return true;
817 }
818 }
819
820 private static final Log _log = LogFactoryUtil.getLog(
821 PortletRequestModel.class);
822
823 private final String _actionURL;
824 private Map<String, Object> _applicationScopeSessionAttributes;
825 private Map<String, Object> _attributes;
826 private final String _authType;
827 private final String _containerNamespace;
828 private final String _contentType;
829 private final String _contextPath;
830 private final String _lifecycle;
831 private final Locale _locale;
832 private final Map<String, String[]> _parameters;
833 private final PortletMode _portletMode;
834 private final String _portletNamespace;
835 private Map<String, Object> _portletScopeSessioAttributes;
836 private final String _portletSessionId;
837 private final String _remoteUser;
838 private final String _renderURL;
839 private final String _renderURLExclusive;
840 private final String _renderURLMaximized;
841 private final String _renderURLMinimized;
842 private final String _renderURLNormal;
843 private final String _renderURLPopUp;
844 private final String _resourceURL;
845 private final String _scheme;
846 private final boolean _secure;
847 private final String _serverName;
848 private final int _serverPort;
849 private final ThemeDisplayModel _themeDisplayModel;
850 private final WindowState _windowState;
851
852 }