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