| PortletImpl.java |
1 /**
2 * Copyright (c) 2000-2007 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 package com.liferay.portal.model.impl;
24
25 import com.liferay.portal.kernel.lar.PortletDataHandler;
26 import com.liferay.portal.kernel.plugin.PluginPackage;
27 import com.liferay.portal.kernel.portlet.ConfigurationAction;
28 import com.liferay.portal.kernel.portlet.FriendlyURLMapper;
29 import com.liferay.portal.kernel.portlet.PortletLayoutListener;
30 import com.liferay.portal.kernel.servlet.URLEncoder;
31 import com.liferay.portal.kernel.smtp.MessageListener;
32 import com.liferay.portal.kernel.util.ContentTypes;
33 import com.liferay.portal.kernel.util.GetterUtil;
34 import com.liferay.portal.kernel.util.InstancePool;
35 import com.liferay.portal.kernel.util.StringMaker;
36 import com.liferay.portal.kernel.util.StringPool;
37 import com.liferay.portal.kernel.util.StringUtil;
38 import com.liferay.portal.kernel.util.Validator;
39 import com.liferay.portal.model.PluginSetting;
40 import com.liferay.portal.model.Portlet;
41 import com.liferay.portal.model.PortletInfo;
42 import com.liferay.portal.model.User;
43 import com.liferay.portal.service.RoleLocalServiceUtil;
44 import com.liferay.portal.service.UserLocalServiceUtil;
45 import com.liferay.portal.servlet.PortletContextPool;
46 import com.liferay.portal.servlet.PortletContextWrapper;
47 import com.liferay.portal.util.PortalUtil;
48 import com.liferay.portal.util.PropsUtil;
49
50 import java.util.ArrayList;
51 import java.util.Collections;
52 import java.util.HashMap;
53 import java.util.HashSet;
54 import java.util.Hashtable;
55 import java.util.Iterator;
56 import java.util.LinkedHashMap;
57 import java.util.LinkedHashSet;
58 import java.util.List;
59 import java.util.Map;
60 import java.util.Set;
61 import java.util.TreeSet;
62
63 import javax.portlet.PortletMode;
64
65 import org.apache.commons.logging.Log;
66 import org.apache.commons.logging.LogFactory;
67
68 /**
69 * <a href="PortletImpl.java.html"><b><i>View Source</i></b></a>
70 *
71 * @author Brian Wing Shun Chan
72 *
73 */
74 public class PortletImpl extends PortletModelImpl implements Portlet {
75
76 /**
77 * Plugin type
78 */
79 public static final String PLUGIN_TYPE = "portlet";
80
81 /**
82 * War file separator.
83 */
84 public static final String WAR_SEPARATOR = "_WAR_";
85
86 /**
87 * Instance separator.
88 */
89 public static final String INSTANCE_SEPARATOR = "_INSTANCE_";
90
91 /**
92 * Layout separator.
93 */
94 public static final String LAYOUT_SEPARATOR = "_LAYOUT_";
95
96 /**
97 * Default preferences.
98 */
99 public static final String DEFAULT_PREFERENCES = "<portlet-preferences />";
100
101 /**
102 * Gets the root portlet id of the portlet.
103 *
104 * @param portletId the portlet id of the portlet
105 * @return the root portlet id of the portlet
106 */
107 public static String getRootPortletId(String portletId) {
108 int pos = portletId.indexOf(INSTANCE_SEPARATOR);
109
110 if (pos == -1) {
111 return portletId;
112 }
113 else {
114 return portletId.substring(0, pos);
115 }
116 }
117
118 /**
119 * Gets the instance id of the portlet.
120 *
121 * @param portletId the portlet id of the portlet
122 * @return the instance id of the portlet
123 */
124 public static String getInstanceId(String portletId) {
125 int pos = portletId.indexOf(INSTANCE_SEPARATOR);
126
127 if (pos == -1) {
128 return null;
129 }
130 else {
131 return portletId.substring(
132 pos + INSTANCE_SEPARATOR.length(), portletId.length());
133 }
134 }
135
136 /**
137 * Constructs a portlet with no parameters.
138 */
139 public PortletImpl() {
140 }
141
142 /**
143 * Constructs a portlet with the specified parameters.
144 */
145 public PortletImpl(long companyId, String portletId) {
146 setCompanyId(companyId);
147 setPortletId(portletId);
148 setStrutsPath(portletId);
149 setActive(true);
150 _headerPortalCss = new ArrayList();
151 _headerPortletCss = new ArrayList();
152 _headerPortalJavaScript = new ArrayList();
153 _headerPortletJavaScript = new ArrayList();
154 _footerPortalCss = new ArrayList();
155 _footerPortletCss = new ArrayList();
156 _footerPortalJavaScript = new ArrayList();
157 _footerPortletJavaScript = new ArrayList();
158 _unlinkedRoles = new HashSet();
159 _roleMappers = new LinkedHashMap();
160 _initParams = new HashMap();
161 _portletModes = new HashMap();
162 _supportedLocales = new HashSet();
163 _userAttributes = new LinkedHashSet();
164 _customUserAttributes = new LinkedHashMap();
165 }
166
167 /**
168 * Constructs a portlet with the specified parameters.
169 */
170 public PortletImpl(
171 String portletId, PluginPackage pluginPackage,
172 PluginSetting pluginSetting, long companyId, String icon,
173 String virtualPath, String strutsPath, String displayName,
174 String portletClass, String configurationActionClass,
175 String indexerClass, String openSearchClass, String schedulerClass,
176 String portletURLClass, String friendlyURLMapperClass,
177 String urlEncoderClass, String portletDataHandlerClass,
178 String portletLayoutListenerClass, String smtpMessageListenerClass,
179 String defaultPreferences, String prefsValidator,
180 boolean prefsCompanyWide, boolean prefsUniquePerLayout,
181 boolean prefsOwnedByGroup, boolean useDefaultTemplate,
182 boolean showPortletAccessDenied, boolean showPortletInactive,
183 boolean actionURLRedirect, boolean restoreCurrentView,
184 boolean maximizeEdit, boolean maximizeHelp, boolean popUpPrint,
185 boolean layoutCacheable, boolean instanceable,
186 boolean privateRequestAttributes, boolean privateSessionAttributes,
187 int renderWeight, boolean ajaxable, List headerPortalCss,
188 List headerPortletCss, List headerPortalJavaScript,
189 List headerPortletJavaScript, List footerPortalCss,
190 List footerPortletCss, List footerPortalJavaScript,
191 List footerPortletJavaScript, boolean addDefaultResource, String roles,
192 Set unlinkedRoles, Map roleMappers, boolean system, boolean active,
193 boolean include, Map initParams, Integer expCache, Map portletModes,
194 Set supportedLocales, String resourceBundle, PortletInfo portletInfo,
195 Set userAttributes, Map customUserAttributes, String servletContextName,
196 List servletURLPatterns) {
197
198 setPortletId(portletId);
199 _pluginPackage = pluginPackage;
200 _defaultPluginSetting = pluginSetting;
201 setCompanyId(companyId);
202 _icon = icon;
203 _virtualPath = virtualPath;
204 _strutsPath = strutsPath;
205 _displayName = displayName;
206 _portletClass = portletClass;
207 _configurationActionClass = configurationActionClass;
208 _indexerClass = indexerClass;
209 _openSearchClass = openSearchClass;
210 _schedulerClass = schedulerClass;
211 _portletURLClass = portletURLClass;
212 _friendlyURLMapperClass = friendlyURLMapperClass;
213 _urlEncoderClass = urlEncoderClass;
214 _portletDataHandlerClass = portletDataHandlerClass;
215 _portletLayoutListenerClass = portletLayoutListenerClass;
216 _smtpMessageListenerClass = smtpMessageListenerClass;
217 _defaultPreferences = defaultPreferences;
218 _prefsValidator = prefsValidator;
219 _prefsCompanyWide = prefsCompanyWide;
220 _prefsUniquePerLayout = prefsUniquePerLayout;
221 _prefsOwnedByGroup = prefsOwnedByGroup;
222 _useDefaultTemplate = useDefaultTemplate;
223 _showPortletAccessDenied = showPortletAccessDenied;
224 _showPortletInactive = showPortletInactive;
225 _actionURLRedirect = actionURLRedirect;
226 _restoreCurrentView = restoreCurrentView;
227 _maximizeEdit = maximizeEdit;
228 _maximizeHelp = maximizeHelp;
229 _popUpPrint = popUpPrint;
230 _layoutCacheable = layoutCacheable;
231 _instanceable = instanceable;
232 _privateRequestAttributes = privateRequestAttributes;
233 _privateSessionAttributes = privateSessionAttributes;
234 _renderWeight = renderWeight;
235 _ajaxable = ajaxable;
236 _headerPortalCss = headerPortalCss;
237 _headerPortletCss = headerPortletCss;
238 _headerPortalJavaScript = headerPortalJavaScript;
239 _headerPortletJavaScript = headerPortletJavaScript;
240 _footerPortalCss = footerPortalCss;
241 _footerPortletCss = footerPortletCss;
242 _footerPortalJavaScript = footerPortalJavaScript;
243 _footerPortletJavaScript = footerPortletJavaScript;
244 _addDefaultResource = addDefaultResource;
245 setRoles(roles);
246 _unlinkedRoles = unlinkedRoles;
247 _roleMappers = roleMappers;
248 _system = system;
249 setActive(active);
250 _include = include;
251 _initParams = initParams;
252 _expCache = expCache;
253 _portletModes = portletModes;
254 _supportedLocales = supportedLocales;
255 _resourceBundle = resourceBundle;
256 _portletInfo = portletInfo;
257 _userAttributes = userAttributes;
258 _customUserAttributes = customUserAttributes;
259 setServletContextName(servletContextName);
260 _servletURLPatterns = servletURLPatterns;
261
262 if (_instanceable) {
263 _clonedInstances = new Hashtable();
264 }
265 }
266
267 /**
268 * Gets the root portlet id of the portlet.
269 *
270 * @return the root portlet id of the portlet
271 */
272 public String getRootPortletId() {
273 return getRootPortletId(getPortletId());
274 }
275
276 /**
277 * Gets the instance id of the portlet.
278 *
279 * @return the instance id of the portlet
280 */
281 public String getInstanceId() {
282 return getInstanceId(getPortletId());
283 }
284
285 /**
286 * Gets the plugin id of the portlet.
287 *
288 * @return the plugin id of the portlet
289 */
290 public String getPluginId() {
291 return getRootPortletId();
292 }
293
294 /**
295 * Gets the plugin type of the portlet.
296 *
297 * @return the plugin type of the portlet
298 */
299 public String getPluginType() {
300 return PLUGIN_TYPE;
301 }
302
303 /**
304 * Get the package to which the portlet belongs to.
305 *
306 * @return the plugin package of the portlet
307 */
308 public PluginPackage getPluginPackage() {
309 return _pluginPackage;
310 }
311
312 /**
313 * Sets the plugin package to which this portlet belongs to.
314 *
315 * @param pluginPackage the plugin package
316 */
317 public void setPluginPackage(PluginPackage pluginPackage) {
318 _pluginPackage = pluginPackage;
319 }
320
321 /**
322 * Get the default plugin settings of the portlet.
323 *
324 * @return the plugin settings
325 */
326 public PluginSetting getDefaultPluginSetting() {
327 return _defaultPluginSetting;
328 }
329
330 /**
331 * Sets the default plugin settings of the portlet.
332 *
333 * @param pluginSetting the plugin setting
334 */
335 public void setDefaultPluginSetting(PluginSetting pluginSetting) {
336 _defaultPluginSetting = pluginSetting;
337 }
338
339 /**
340 * Gets the icon of the portlet.
341 *
342 * @return the icon of the portlet
343 */
344 public String getIcon() {
345 return _icon;
346 }
347
348 /**
349 * Sets the icon of the portlet.
350 *
351 * @param icon the icon of the portlet
352 */
353 public void setIcon(String icon) {
354 _icon = icon;
355 }
356
357 /**
358 * Gets the virtual path of the portlet.
359 *
360 * @return the virtual path of the portlet
361 */
362 public String getVirtualPath() {
363 return _virtualPath;
364 }
365
366 /**
367 * Sets the virtual path of the portlet.
368 *
369 * @param virtualPath the virtual path of the portlet
370 */
371 public void setVirtualPath(String virtualPath) {
372 if (_warFile && Validator.isNull(virtualPath)) {
373 virtualPath = GetterUtil.getString(
374 PropsUtil.get(PropsUtil.PORTLET_VIRTUAL_PATH));
375 }
376
377 _virtualPath = virtualPath;
378 }
379
380 /**
381 * Gets the struts path of the portlet.
382 *
383 * @return the struts path of the portlet
384 */
385 public String getStrutsPath() {
386 return _strutsPath;
387 }
388
389 /**
390 * Sets the struts path of the portlet.
391 *
392 * @param strutsPath the struts path of the portlet
393 */
394 public void setStrutsPath(String strutsPath) {
395 _strutsPath = strutsPath;
396 }
397
398 /**
399 * Gets the display name of the portlet.
400 *
401 * @return the display name of the portlet
402 */
403 public String getDisplayName() {
404 return _displayName;
405 }
406
407 /**
408 * Sets the display name of the portlet.
409 *
410 * @param displayName the display name of the portlet
411 */
412 public void setDisplayName(String displayName) {
413 _displayName = displayName;
414 }
415
416 /**
417 * Gets the name of the portlet class of the portlet.
418 *
419 * @return the name of the portlet class of the portlet
420 */
421 public String getPortletClass() {
422 return _portletClass;
423 }
424
425 /**
426 * Sets the name of the portlet class of the portlet.
427 *
428 * @param portletClass the name of the portlet class of the portlet
429 */
430 public void setPortletClass(String portletClass) {
431 _portletClass = portletClass;
432 }
433
434 /**
435 * Gets the configuration action class of the portlet.
436 *
437 * @return the configuration action class of the portlet
438 */
439 public String getConfigurationActionClass() {
440 return _configurationActionClass;
441 }
442
443 /**
444 * Sets the configuration action class of the portlet.
445 *
446 * @param configurationActionClass the configuration action class of
447 * the portlet
448 */
449 public void setConfigurationActionClass(String configurationActionClass) {
450 _configurationActionClass = configurationActionClass;
451 }
452
453 /**
454 * Gets the configuration action instance of the portlet.
455 *
456 * @return the configuration action instance of the portlet
457 */
458 public ConfigurationAction getConfigurationActionInstance() {
459 if (Validator.isNotNull(getConfigurationActionClass())) {
460 if (isWARFile()) {
461 PortletContextWrapper pcw =
462 PortletContextPool.get(getRootPortletId());
463
464 return pcw.getConfigurationActionInstance();
465 }
466 else {
467 return (ConfigurationAction)InstancePool.get(
468 getConfigurationActionClass());
469 }
470 }
471
472 return null;
473 }
474
475 /**
476 * Gets the name of the indexer class of the portlet.
477 *
478 * @return the name of the indexer class of the portlet
479 */
480 public String getIndexerClass() {
481 return _indexerClass;
482 }
483
484 /**
485 * Sets the name of the indexer class of the portlet.
486 *
487 * @param indexerClass the name of the indexer class of the portlet
488 */
489 public void setIndexerClass(String indexerClass) {
490 _indexerClass = indexerClass;
491 }
492
493 /**
494 * Gets the name of the open search class of the portlet.
495 *
496 * @return the name of the open search class of the portlet
497 */
498 public String getOpenSearchClass() {
499 return _openSearchClass;
500 }
501
502 /**
503 * Sets the name of the open search class of the portlet.
504 *
505 * @param openSearchClass the name of the open search class of the
506 * portlet
507 */
508 public void setOpenSearchClass(String openSearchClass) {
509 _openSearchClass = openSearchClass;
510 }
511
512 /**
513 * Gets the name of the scheduler class of the portlet.
514 *
515 * @return the name of the scheduler class of the portlet
516 */
517 public String getSchedulerClass() {
518 return _schedulerClass;
519 }
520
521 /**
522 * Sets the name of the scheduler class of the portlet.
523 *
524 * @param schedulerClass the name of the scheduler class of the
525 * portlet
526 */
527 public void setSchedulerClass(String schedulerClass) {
528 _schedulerClass = schedulerClass;
529 }
530
531 /**
532 * Gets the name of the portlet URL class of the portlet.
533 *
534 * @return the name of the portlet URL class of the portlet
535 */
536 public String getPortletURLClass() {
537 return _portletURLClass;
538 }
539
540 /**
541 * Sets the name of the portlet URL class of the portlet.
542 *
543 * @param portletURLClass the name of the portlet URL class of the
544 * portlet
545 */
546 public void setPortletURLClass(String portletURLClass) {
547 _portletURLClass = portletURLClass;
548 }
549
550 /**
551 * Gets the name of the friendly URL mapper class of the portlet.
552 *
553 * @return the name of the friendly URL mapper class of the portlet
554 */
555 public String getFriendlyURLMapperClass() {
556 return _friendlyURLMapperClass;
557 }
558
559 /**
560 * Sets the name of the friendly URL mapper class of the portlet.
561 *
562 * @param friendlyURLMapperClass the name of the friendly URL plugin
563 * class of the portlet
564 */
565 public void setFriendlyURLMapperClass(String friendlyURLMapperClass) {
566 _friendlyURLMapperClass = friendlyURLMapperClass;
567 }
568
569 /**
570 * Gets the friendly URL mapper instance of the portlet.
571 *
572 * @return the friendly URL mapper instance of the portlet
573 */
574 public FriendlyURLMapper getFriendlyURLMapperInstance() {
575 if (Validator.isNotNull(getFriendlyURLMapperClass())) {
576 if (isWARFile()) {
577 PortletContextWrapper pcw =
578 PortletContextPool.get(getRootPortletId());
579
580 return pcw.getFriendlyURLMapperInstance();
581 }
582 else {
583 return (FriendlyURLMapper)InstancePool.get(
584 getFriendlyURLMapperClass());
585 }
586 }
587
588 return null;
589 }
590
591 /**
592 * Gets the name of the URL encoder class of the portlet.
593 *
594 * @return the name of the URL encoder class of the portlet
595 */
596 public String getURLEncoderClass() {
597 return _urlEncoderClass;
598 }
599
600 /**
601 * Sets the name of the URL encoder class of the portlet.
602 *
603 * @param urlEncoderClass the name of the URL encoder class of the
604 * portlet
605 */
606 public void setURLEncoderClass(String urlEncoderClass) {
607 _urlEncoderClass = urlEncoderClass;
608 }
609
610 /**
611 * Gets the URL encoder instance of the portlet.
612 *
613 * @return the URL encoder instance of the portlet
614 */
615 public URLEncoder getURLEncoderInstance() {
616 if (Validator.isNotNull(getURLEncoderClass())) {
617 if (isWARFile()) {
618 PortletContextWrapper pcw =
619 PortletContextPool.get(getRootPortletId());
620
621 return pcw.getURLEncoderInstance();
622 }
623 else {
624 return (URLEncoder)InstancePool.get(getURLEncoderClass());
625 }
626 }
627
628 return null;
629 }
630
631 /**
632 * Gets the name of the portlet data handler class of the portlet.
633 *
634 * @return the name of the portlet data handler class of the portlet
635 */
636 public String getPortletDataHandlerClass() {
637 return _portletDataHandlerClass;
638 }
639
640 /**
641 * Sets the name of the portlet data handler class of the portlet.
642 *
643 * @param portletDataHandlerClass the name of portlet data handler
644 * class of the portlet
645 */
646 public void setPortletDataHandlerClass(String portletDataHandlerClass) {
647 _portletDataHandlerClass = portletDataHandlerClass;
648 }
649
650 /**
651 * Gets the portlet data handler instance of the portlet.
652 *
653 * @return the portlet data handler instance of the portlet
654 */
655 public PortletDataHandler getPortletDataHandlerInstance() {
656 if (Validator.isNotNull(getPortletDataHandlerClass())) {
657 if (isWARFile()) {
658 PortletContextWrapper pcw =
659 PortletContextPool.get(getRootPortletId());
660
661 return pcw.getPortletDataHandlerInstance();
662 }
663 else {
664 return (PortletDataHandler)InstancePool.get(
665 getPortletDataHandlerClass());
666 }
667 }
668
669 return null;
670 }
671
672 /**
673 * Gets the portlet layout listener of the portlet.
674 *
675 * @return the name of the portlet layout listener class of the portlet
676 */
677 public PortletLayoutListener getPortletLayoutListener() {
678 if (Validator.isNull(getPortletLayoutListenerClass())) {
679 return null;
680 }
681
682 return (PortletLayoutListener)InstancePool.get(
683 getPortletLayoutListenerClass());
684 }
685
686 /**
687 * Gets the name of the portlet layout listener class of the portlet.
688 *
689 * @return the name of the portlet layout listener class of the portlet
690 */
691 public String getPortletLayoutListenerClass() {
692 return _portletLayoutListenerClass;
693 }
694
695 /**
696 * Sets the name of the portlet layout listener class of the portlet.
697 *
698 * @param portletLayoutListenerClass the name of the portlet layout
699 * listener class of the portlet
700 */
701 public void setPortletLayoutListenerClass(
702 String portletLayoutListenerClass) {
703
704 _portletLayoutListenerClass = portletLayoutListenerClass;
705 }
706
707 /**
708 * Gets the name of the SMTP message listener class of the portlet.
709 *
710 * @return the name of the SMTP message listener class of the portlet
711 */
712 public String getSmtpMessageListenerClass() {
713 return _smtpMessageListenerClass;
714 }
715
716 /**
717 * Sets the name of the SMTP message listener class of the portlet.
718 *
719 * @param smtpMessageListenerClass the name of the SMTP message
720 * listener class of the portlet
721 */
722 public void setSmtpMessageListenerClass(String smtpMessageListenerClass) {
723 _smtpMessageListenerClass = smtpMessageListenerClass;
724 }
725
726 /**
727 * Gets the SMTP message listener instance of the portlet.
728 *
729 * @return the SMTP message listener instance of the portlet
730 */
731 public MessageListener getSmtpMessageListenerInstance() {
732 if (Validator.isNotNull(getSmtpMessageListenerClass())) {
733 if (isWARFile()) {
734 PortletContextWrapper pcw =
735 PortletContextPool.get(getRootPortletId());
736
737 return pcw.getSmtpMessageListenerInstance();
738 }
739 else {
740 return (MessageListener)InstancePool.get(
741 getSmtpMessageListenerClass());
742 }
743 }
744
745 return null;
746 }
747
748 /**
749 * Gets the default preferences of the portlet.
750 *
751 * @return the default preferences of the portlet
752 */
753 public String getDefaultPreferences() {
754 if (Validator.isNull(_defaultPreferences)) {
755 return DEFAULT_PREFERENCES;
756 }
757 else {
758 return _defaultPreferences;
759 }
760 }
761
762 /**
763 * Sets the default preferences of the portlet.
764 *
765 * @param defaultPreferences the default preferences of the portlet
766 */
767 public void setDefaultPreferences(String defaultPreferences) {
768 _defaultPreferences = defaultPreferences;
769 }
770
771 /**
772 * Gets the name of the preferences validator class of the portlet.
773 *
774 * @return the name of the preferences validator class of the portlet
775 */
776 public String getPreferencesValidator() {
777 return _prefsValidator;
778 }
779
780 /**
781 * Sets the name of the preferences validator class of the portlet.
782 *
783 * @param prefsValidator the name of the preferences validator class
784 * of the portlet
785 */
786 public void setPreferencesValidator(String prefsValidator) {
787 if (prefsValidator != null) {
788
789 // Trim this because XDoclet generates preferences validators with
790 // extra white spaces
791
792 _prefsValidator = prefsValidator.trim();
793 }
794 else {
795 _prefsValidator = null;
796 }
797 }
798
799 /**
800 * Returns true if preferences are shared across the entire company.
801 *
802 * @return true if preferences are shared across the entire company
803 */
804 public boolean getPreferencesCompanyWide() {
805 return _prefsCompanyWide;
806 }
807
808 /**
809 * Returns true if preferences are shared across the entire company.
810 *
811 * @return true if preferences are shared across the entire company
812 */
813 public boolean isPreferencesCompanyWide() {
814 return _prefsCompanyWide;
815 }
816
817 /**
818 * Sets to true if preferences are shared across the entire company.
819 *
820 * @param prefsCompanyWide boolean value for whether preferences
821 * are shared across the entire company
822 */
823 public void setPreferencesCompanyWide(boolean prefsCompanyWide) {
824 _prefsCompanyWide = prefsCompanyWide;
825 }
826
827 /**
828 * Returns true if preferences are unique per layout.
829 *
830 * @return true if preferences are unique per layout
831 */
832 public boolean getPreferencesUniquePerLayout() {
833 return _prefsUniquePerLayout;
834 }
835
836 /**
837 * Returns true if preferences are unique per layout.
838 *
839 * @return true if preferences are unique per layout
840 */
841 public boolean isPreferencesUniquePerLayout() {
842 return _prefsUniquePerLayout;
843 }
844
845 /**
846 * Sets to true if preferences are unique per layout.
847 *
848 * @param prefsUniquePerLayout boolean value for whether preferences
849 * are unique per layout
850 */
851 public void setPreferencesUniquePerLayout(boolean prefsUniquePerLayout) {
852 _prefsUniquePerLayout = prefsUniquePerLayout;
853 }
854
855 /**
856 * Returns true if preferences are owned by the group when the portlet is
857 * shown in a group layout. Returns false if preferences are owned by the
858 * user at all times.
859 *
860 * @return true if preferences are owned by the group when the portlet
861 * is shown in a group layout; false if preferences are owned
862 * by the user at all times.
863 */
864 public boolean getPreferencesOwnedByGroup() {
865 return _prefsOwnedByGroup;
866 }
867
868 /**
869 * Returns true if preferences are owned by the group when the portlet is
870 * shown in a group layout. Returns false if preferences are owned by the
871 * user at all times.
872 *
873 * @return true if preferences are owned by the group when the portlet
874 * is shown in a group layout; false if preferences are owned
875 * by the user at all times.
876 */
877 public boolean isPreferencesOwnedByGroup() {
878 return _prefsOwnedByGroup;
879 }
880
881 /**
882 * Sets to true if preferences are owned by the group when the portlet is
883 * shown in a group layout. Sets to false if preferences are owned by the
884 * user at all times.
885 *
886 * @param prefsOwnedByGroup boolean value for whether preferences are
887 * owned by the group when the portlet is shown in a group
888 * layout or preferences are owned by the user at all times
889 */
890 public void setPreferencesOwnedByGroup(boolean prefsOwnedByGroup) {
891 _prefsOwnedByGroup = prefsOwnedByGroup;
892 }
893
894 /**
895 * Returns true if the portlet uses the default template.
896 *
897 * @return true if the portlet uses the default template
898 */
899 public boolean getUseDefaultTemplate() {
900 return _useDefaultTemplate;
901 }
902
903 /**
904 * Returns true if the portlet uses the default template.
905 *
906 * @return true if the portlet uses the default template
907 */
908 public boolean isUseDefaultTemplate() {
909 return _useDefaultTemplate;
910 }
911
912 /**
913 * Sets to true if the portlet uses the default template.
914 *
915 * @param useDefaultTemplate boolean value for whether the portlet
916 * uses the default template
917 */
918 public void setUseDefaultTemplate(boolean useDefaultTemplate) {
919 _useDefaultTemplate = useDefaultTemplate;
920 }
921
922 /**
923 * Returns true if users are shown that they do not have access to the
924 * portlet.
925 *
926 * @return true if users are shown that they do not have access to the
927 * portlet
928 */
929 public boolean getShowPortletAccessDenied() {
930 return _showPortletAccessDenied;
931 }
932
933 /**
934 * Returns true if users are shown that they do not have access to the
935 * portlet.
936 *
937 * @return true if users are shown that they do not have access to the
938 * portlet
939 */
940 public boolean isShowPortletAccessDenied() {
941 return _showPortletAccessDenied;
942 }
943
944 /**
945 * Sets to true if users are shown that they do not have access to the
946 * portlet.
947 *
948 * @param showPortletAccessDenied boolean value for whether users are
949 * shown that they do not have access to the portlet
950 */
951 public void setShowPortletAccessDenied(boolean showPortletAccessDenied) {
952 _showPortletAccessDenied = showPortletAccessDenied;
953 }
954
955 /**
956 * Returns true if users are shown that the portlet is inactive.
957 *
958 * @return true if users are shown that the portlet is inactive
959 */
960 public boolean getShowPortletInactive() {
961 return _showPortletInactive;
962 }
963
964 /**
965 * Returns true if users are shown that the portlet is inactive.
966 *
967 * @return true if users are shown that the portlet is inactive
968 */
969 public boolean isShowPortletInactive() {
970 return _showPortletInactive;
971 }
972
973 /**
974 * Sets to true if users are shown that the portlet is inactive.
975 *
976 * @param showPortletInactive boolean value for whether users are
977 * shown that the portlet is inactive
978 */
979 public void setShowPortletInactive(boolean showPortletInactive) {
980 _showPortletInactive = showPortletInactive;
981 }
982
983 /**
984 * Returns true if an action URL for this portlet should cause an auto
985 * redirect.
986 *
987 * @return true if an action URL for this portlet should cause an auto
988 * redirect
989 */
990 public boolean getActionURLRedirect() {
991 return _actionURLRedirect;
992 }
993
994 /**
995 * Returns true if an action URL for this portlet should cause an auto
996 * redirect.
997 *
998 * @return true if an action URL for this portlet should cause an auto
999 * redirect
1000 */
1001 public boolean isActionURLRedirect() {
1002 return _actionURLRedirect;
1003 }
1004
1005 /**
1006 * Sets to true if an action URL for this portlet should cause an auto
1007 * redirect.
1008 *
1009 * @param actionURLRedirect boolean value for whether an action URL
1010 * for this portlet should cause an auto redirect
1011 */
1012 public void setActionURLRedirect(boolean actionURLRedirect) {
1013 _actionURLRedirect = actionURLRedirect;
1014 }
1015
1016 /**
1017 * Returns true if the portlet restores to the current view from the
1018 * maximized state.
1019 *
1020 * @return true if the portlet restores to the current view from the
1021 * maximized state
1022 */
1023 public boolean getRestoreCurrentView() {
1024 return _restoreCurrentView;
1025 }
1026
1027 /**
1028 * Returns true if the portlet restores to the current view from the
1029 * maximized state.
1030 *
1031 * @return true if the portlet restores to the current view from the
1032 * maximized state
1033 */
1034 public boolean isRestoreCurrentView() {
1035 return _restoreCurrentView;
1036 }
1037
1038 /**
1039 * Sets to true if the portlet restores to the current view from the
1040 * maximized state.
1041 *
1042 * @param restoreCurrentView boolean value for whether the portlet
1043 * restores to the current view from the maximized state
1044 */
1045 public void setRestoreCurrentView(boolean restoreCurrentView) {
1046 _restoreCurrentView = restoreCurrentView;
1047 }
1048
1049 /**
1050 * Returns true if the portlet goes into the maximized state when the user
1051 * goes into the edit mode.
1052 *
1053 * @return true if the portlet goes into the maximized state when the
1054 * user goes into the edit mode
1055 */
1056 public boolean getMaximizeEdit() {
1057 return _maximizeEdit;
1058 }
1059
1060 /**
1061 * Returns true if the portlet goes into the maximized state when the user
1062 * goes into the edit mode.
1063 *
1064 * @return true if the portlet goes into the maximized state when the
1065 * user goes into the edit mode
1066 */
1067 public boolean isMaximizeEdit() {
1068 return _maximizeEdit;
1069 }
1070
1071 /**
1072 * Sets to true if the portlet goes into the maximized state when the user
1073 * goes into the edit mode.
1074 *
1075 * @param maximizeEdit boolean value for whether the portlet goes into
1076 * the maximized state when the user goes into the edit mode
1077 */
1078 public void setMaximizeEdit(boolean maximizeEdit) {
1079 _maximizeEdit = maximizeEdit;
1080 }
1081
1082 /**
1083 * Returns true if the portlet goes into the maximized state when the user
1084 * goes into the help mode.
1085 *
1086 * @return true if the portlet goes into the maximized state when the
1087 * user goes into the help mode
1088 */
1089 public boolean getMaximizeHelp() {
1090 return _maximizeHelp;
1091 }
1092
1093 /**
1094 * Returns true if the portlet goes into the maximized state when the user
1095 * goes into the help mode.
1096 *
1097 * @return true if the portlet goes into the maximized state when the
1098 * user goes into the help mode
1099 */
1100 public boolean isMaximizeHelp() {
1101 return _maximizeHelp;
1102 }
1103
1104 /**
1105 * Sets to true if the portlet goes into the maximized state when the user
1106 * goes into the help mode.
1107 *
1108 * @param maximizeHelp boolean value for whether the portlet goes into
1109 * the maximized state when the user goes into the help mode
1110 */
1111 public void setMaximizeHelp(boolean maximizeHelp) {
1112 _maximizeHelp = maximizeHelp;
1113 }
1114
1115 /**
1116 * Returns true if the portlet goes into the pop up state when the user goes
1117 * into the print mode.
1118 *
1119 * @return true if the portlet goes into the pop up state when the user
1120 * goes into the print mode
1121 */
1122 public boolean getPopUpPrint() {
1123 return _popUpPrint;
1124 }
1125
1126 /**
1127 * Returns true if the portlet goes into the pop up state when the user goes
1128 * into the print mode.
1129 *
1130 * @return true if the portlet goes into the pop up state when the user
1131 * goes into the print mode
1132 */
1133 public boolean isPopUpPrint() {
1134 return _popUpPrint;
1135 }
1136
1137 /**
1138 * Sets to true if the portlet goes into the pop up state when the user goes
1139 * into the print mode.
1140 *
1141 * @param popUpPrint boolean value for whether the portlet goes into
1142 * the pop up state when the user goes into the print mode
1143 */
1144 public void setPopUpPrint(boolean popUpPrint) {
1145 _popUpPrint = popUpPrint;
1146 }
1147
1148 /**
1149 * Returns true to allow the portlet to be cached within the layout.
1150 *
1151 * @return true if the portlet can be cached within the layout
1152 */
1153 public boolean getLayoutCacheable() {
1154 return _layoutCacheable;
1155 }
1156
1157 /**
1158 * Returns true to allow the portlet to be cached within the layout.
1159 *
1160 * @return true if the portlet can be cached within the layout
1161 */
1162 public boolean isLayoutCacheable() {
1163 return _layoutCacheable;
1164 }
1165
1166 /**
1167 * Sets to true to allow the portlet to be cached within the layout.
1168 *
1169 * @param layoutCacheable boolean value for whether the portlet can be
1170 * cached within the layout
1171 */
1172 public void setLayoutCacheable(boolean layoutCacheable) {
1173 _layoutCacheable = layoutCacheable;
1174 }
1175
1176 /**
1177 * Returns true if the portlet can be added multiple times to a layout.
1178 *
1179 * @return true if the portlet can be added multiple times to a layout
1180 */
1181 public boolean getInstanceable() {
1182 return _instanceable;
1183 }
1184
1185 /**
1186 * Returns true if the portlet can be added multiple times to a layout.
1187 *
1188 * @return true if the portlet can be added multiple times to a layout
1189 */
1190 public boolean isInstanceable() {
1191 return _instanceable;
1192 }
1193
1194 /**
1195 * Sets to true if the portlet can be added multiple times to a layout.
1196 *
1197 * @param instanceable boolean value for whether the portlet can be
1198 * added multiple times to a layout
1199 */
1200 public void setInstanceable(boolean instanceable) {
1201 _instanceable = instanceable;
1202 }
1203
1204 /**
1205 * Returns true if the portlet does not share request attributes with the
1206 * portal or portlets from another WAR.
1207 *
1208 * @return true if the portlet does not share request attributes with
1209 * the portal or portlets from another WAR
1210 */
1211 public boolean getPrivateRequestAttributes() {
1212 return _privateRequestAttributes;
1213 }
1214
1215 /**
1216 * Returns true if the portlet does not share request attributes with the
1217 * portal or portlets from another WAR.
1218 *
1219 * @return true if the portlet does not share request attributes with
1220 * the portal or portlets from another WAR
1221 */
1222 public boolean isPrivateRequestAttributes() {
1223 return _privateRequestAttributes;
1224 }
1225
1226 /**
1227 * Sets to true if the portlet does not share request attributes with the
1228 * portal or portlets from another WAR.
1229 *
1230 * @param privateRequestAttributes boolean value for whether the
1231 * portlet shares request attributes with the portal or
1232 * portlets from another WAR
1233 */
1234 public void setPrivateRequestAttributes(boolean privateRequestAttributes) {
1235 _privateRequestAttributes = privateRequestAttributes;
1236 }
1237
1238 /**
1239 * Returns true if the portlet does not share session attributes with the
1240 * portal.
1241 *
1242 * @return true if the portlet does not share session attributes with
1243 * the portal
1244 */
1245 public boolean getPrivateSessionAttributes() {
1246 return _privateSessionAttributes;
1247 }
1248
1249 /**
1250 * Returns true if the portlet does not share session attributes with the
1251 * portal.
1252 *
1253 * @return true if the portlet does not share session attributes with
1254 * the portal
1255 */
1256 public boolean isPrivateSessionAttributes() {
1257 return _privateSessionAttributes;
1258 }
1259
1260 /**
1261 * Sets to true if the portlet does not share session attributes with the
1262 * portal.
1263 *
1264 * @param privateSessionAttributes boolean value for whether the
1265 * portlet shares session attributes with the portal
1266 */
1267 public void setPrivateSessionAttributes(boolean privateSessionAttributes) {
1268 _privateSessionAttributes = privateSessionAttributes;
1269 }
1270
1271 /**
1272 * Returns the render weight of the portlet.
1273 *
1274 * @return the render weight of the portlet
1275 */
1276 public int getRenderWeight() {
1277 return _renderWeight;
1278 }
1279
1280 /**
1281 * Sets the render weight of the portlet.
1282 *
1283 * @param renderWeight int value for the render weight of the portlet
1284 */
1285 public void setRenderWeight(int renderWeight) {
1286 _renderWeight = renderWeight;
1287 }
1288
1289 /**
1290 * Returns true if the portlet can be displayed via Ajax.
1291 *
1292 * @return true if the portlet can be displayed via Ajax
1293 */
1294 public boolean getAjaxable() {
1295 return _ajaxable;
1296 }
1297
1298 /**
1299 * Returns true if the portlet can be displayed via Ajax.
1300 *
1301 * @return true if the portlet can be displayed via Ajax
1302 */
1303 public boolean isAjaxable() {
1304 return _ajaxable;
1305 }
1306
1307 /**
1308 * Sets to true if the portlet can be displayed via Ajax.
1309 *
1310 * @param ajaxable boolean value for whether the portlet can be
1311 * displayed via Ajax
1312 */
1313 public void setAjaxable(boolean ajaxable) {
1314 _ajaxable = ajaxable;
1315 }
1316
1317 /**
1318 * Gets a list of CSS files that will be referenced from the page's header
1319 * relative to the portal's context path.
1320 *
1321 * @return a list of CSS files that will be referenced from the page's
1322 * header relative to the portal's context path
1323 */
1324 public List getHeaderPortalCss() {
1325 return _headerPortalCss;
1326 }
1327
1328 /**
1329 * Sets a list of CSS files that will be referenced from the page's header
1330 * relative to the portal's context path.
1331 *
1332 * @param headerPortalCss a list of CSS files that will be referenced
1333 * from the page's header relative to the portal's context path
1334 */
1335 public void setHeaderPortalCss(List headerPortalCss) {
1336 _headerPortalCss = headerPortalCss;
1337 }
1338
1339 /**
1340 * Gets a list of CSS files that will be referenced from the page's header
1341 * relative to the portlet's context path.
1342 *
1343 * @return a list of CSS files that will be referenced from the page's
1344 * header relative to the portlet's context path
1345 */
1346 public List getHeaderPortletCss() {
1347 return _headerPortletCss;
1348 }
1349
1350 /**
1351 * Sets a list of CSS files that will be referenced from the page's header
1352 * relative to the portlet's context path.
1353 *
1354 * @param headerPortletCss a list of CSS files that will be referenced
1355 * from the page's header relative to the portlet's context
1356 * path
1357 */
1358 public void setHeaderPortletCss(List headerPortletCss) {
1359 _headerPortletCss = headerPortletCss;
1360 }
1361
1362 /**
1363 * Gets a list of JavaScript files that will be referenced from the page's
1364 * header relative to the portal's context path.
1365 *
1366 * @return a list of JavaScript files that will be referenced from the
1367 * page's header relative to the portal's context path
1368 */
1369 public List getHeaderPortalJavaScript() {
1370 return _headerPortalJavaScript;
1371 }
1372
1373 /**
1374 * Sets a list of JavaScript files that will be referenced from the page's
1375 * header relative to the portal's context path.
1376 *
1377 * @param headerPortalJavaScript a list of JavaScript files that will
1378 * be referenced from the page's header relative to the
1379 * portal's context path
1380 */
1381 public void setHeaderPortalJavaScript(List headerPortalJavaScript) {
1382 _headerPortalJavaScript = headerPortalJavaScript;
1383 }
1384
1385 /**
1386 * Gets a list of JavaScript files that will be referenced from the page's
1387 * header relative to the portlet's context path.
1388 *
1389 * @return a list of JavaScript files that will be referenced from the
1390 * page's header relative to the portlet's context path
1391 */
1392 public List getHeaderPortletJavaScript() {
1393 return _headerPortletJavaScript;
1394 }
1395
1396 /**
1397 * Sets a list of JavaScript files that will be referenced from the page's
1398 * header relative to the portlet's context path.
1399 *
1400 * @param headerPortletJavaScript a list of JavaScript files that will
1401 * be referenced from the page's header relative to the
1402 * portlet's context path
1403 */
1404 public void setHeaderPortletJavaScript(List headerPortletJavaScript) {
1405 _headerPortletJavaScript = headerPortletJavaScript;
1406 }
1407
1408 /**
1409 * Gets a list of CSS files that will be referenced from the page's footer
1410 * relative to the portal's context path.
1411 *
1412 * @return a list of CSS files that will be referenced from the page's
1413 * footer relative to the portal's context path
1414 */
1415 public List getFooterPortalCss() {
1416 return _footerPortalCss;
1417 }
1418
1419 /**
1420 * Sets a list of CSS files that will be referenced from the page's footer
1421 * relative to the portal's context path.
1422 *
1423 * @param footerPortalCss a list of CSS files that will be referenced
1424 * from the page's footer relative to the portal's context path
1425 */
1426 public void setFooterPortalCss(List footerPortalCss) {
1427 _footerPortalCss = footerPortalCss;
1428 }
1429
1430 /**
1431 * Gets a list of CSS files that will be referenced from the page's footer
1432 * relative to the portlet's context path.
1433 *
1434 * @return a list of CSS files that will be referenced from the page's
1435 * footer relative to the portlet's context path
1436 */
1437 public List getFooterPortletCss() {
1438 return _footerPortletCss;
1439 }
1440
1441 /**
1442 * Sets a list of CSS files that will be referenced from the page's footer
1443 * relative to the portlet's context path.
1444 *
1445 * @param footerPortletCss a list of CSS files that will be referenced
1446 * from the page's footer relative to the portlet's context
1447 * path
1448 */
1449 public void setFooterPortletCss(List footerPortletCss) {
1450 _footerPortletCss = footerPortletCss;
1451 }
1452
1453 /**
1454 * Gets a list of JavaScript files that will be referenced from the page's
1455 * footer relative to the portal's context path.
1456 *
1457 * @return a list of JavaScript files that will be referenced from the
1458 * page's footer relative to the portal's context path
1459 */
1460 public List getFooterPortalJavaScript() {
1461 return _footerPortalJavaScript;
1462 }
1463
1464 /**
1465 * Sets a list of JavaScript files that will be referenced from the page's
1466 * footer relative to the portal's context path.
1467 *
1468 * @param footerPortalJavaScript a list of JavaScript files that will
1469 * be referenced from the page's footer relative to the
1470 * portal's context path
1471 */
1472 public void setFooterPortalJavaScript(List footerPortalJavaScript) {
1473 _footerPortalJavaScript = footerPortalJavaScript;
1474 }
1475
1476 /**
1477 * Gets a list of JavaScript files that will be referenced from the page's
1478 * footer relative to the portlet's context path.
1479 *
1480 * @return a list of JavaScript files that will be referenced from the
1481 * page's footer relative to the portlet's context path
1482 */
1483 public List getFooterPortletJavaScript() {
1484 return _footerPortletJavaScript;
1485 }
1486
1487 /**
1488 * Sets a list of JavaScript files that will be referenced from the page's
1489 * footer relative to the portlet's context path.
1490 *
1491 * @param footerPortletJavaScript a list of JavaScript files that will
1492 * be referenced from the page's footer relative to the
1493 * portlet's context path
1494 */
1495 public void setFooterPortletJavaScript(List footerPortletJavaScript) {
1496 _footerPortletJavaScript = footerPortletJavaScript;
1497 }
1498
1499 /**
1500 * Returns true if default resources for the portlet are added to a page.
1501 *
1502 * @return true if default resources for the portlet are added to a
1503 * page
1504 */
1505 public boolean getAddDefaultResource() {
1506 return _addDefaultResource;
1507 }
1508
1509 /**
1510 * Returns true if default resources for the portlet are added to a page.
1511 *
1512 * @return true if default resources for the portlet are added to a
1513 * page
1514 */
1515 public boolean isAddDefaultResource() {
1516 return _addDefaultResource;
1517 }
1518
1519 /**
1520 * Sets to true if default resources for the portlet are added to a page.
1521 *
1522 * @param addDefaultResource boolean value for whether or not default
1523 * resources for the portlet are added to a page
1524 */
1525 public void setAddDefaultResource(boolean addDefaultResource) {
1526 _addDefaultResource = addDefaultResource;
1527 }
1528
1529 /**
1530 * Sets a string of ordered comma delimited portlet ids.
1531 *
1532 * @param roles a string of ordered comma delimited portlet ids
1533 */
1534 public void setRoles(String roles) {
1535 _rolesArray = StringUtil.split(roles);
1536
1537 super.setRoles(roles);
1538 }
1539
1540 /**
1541 * Gets an array of required roles of the portlet.
1542 *
1543 * @return an array of required roles of the portlet
1544 */
1545 public String[] getRolesArray() {
1546 return _rolesArray;
1547 }
1548
1549 /**
1550 * Sets an array of required roles of the portlet.
1551 *
1552 * @param rolesArray an array of required roles of the portlet
1553 */
1554 public void setRolesArray(String[] rolesArray) {
1555 _rolesArray = rolesArray;
1556
1557 super.setRoles(StringUtil.merge(rolesArray));
1558 }
1559
1560 /**
1561 * Gets the unlinked roles of the portlet.
1562 *
1563 * @return unlinked roles of the portlet
1564 */
1565 public Set getUnlinkedRoles() {
1566 return _unlinkedRoles;
1567 }
1568
1569 /**
1570 * Sets the unlinked roles of the portlet.
1571 *
1572 * @param unlinkedRoles the unlinked roles of the portlet
1573 */
1574 public void setUnlinkedRoles(Set unlinkedRoles) {
1575 _unlinkedRoles = unlinkedRoles;
1576 }
1577
1578 /**
1579 * Gets the role mappers of the portlet.
1580 *
1581 * @return role mappers of the portlet
1582 */
1583 public Map getRoleMappers() {
1584 return _roleMappers;
1585 }
1586
1587 /**
1588 * Sets the role mappers of the portlet.
1589 *
1590 * @param roleMappers the role mappers of the portlet
1591 */
1592 public void setRoleMappers(Map roleMappers) {
1593 _roleMappers = roleMappers;
1594 }
1595
1596 /**
1597 * Link the role names set in portlet.xml with the Liferay roles set in
1598 * liferay-portlet.xml.
1599 */
1600 public void linkRoles() {
1601 List linkedRoles = new ArrayList();
1602
1603 Iterator itr = _unlinkedRoles.iterator();
1604
1605 while (itr.hasNext()) {
1606 String unlinkedRole = (String)itr.next();
1607
1608 String roleLink = (String)_roleMappers.get(unlinkedRole);
1609
1610 if (Validator.isNotNull(roleLink)) {
1611 if (_log.isDebugEnabled()) {
1612 _log.debug(
1613 "Linking role for portlet [" + getPortletId() +
1614 "] with role-name [" + unlinkedRole +
1615 "] to role-link [" + roleLink + "]");
1616 }
1617
1618 linkedRoles.add(roleLink);
1619 }
1620 else {
1621 _log.error(
1622 "Unable to link role for portlet [" + getPortletId() +
1623 "] with role-name [" + unlinkedRole +
1624 "] because role-link is null");
1625 }
1626 }
1627
1628 Collections.sort(linkedRoles);
1629
1630 setRolesArray((String[])linkedRoles.toArray(new String[0]));
1631 }
1632
1633 /**
1634 * Returns true if the portlet has a role with the specified name.
1635 *
1636 * @return true if the portlet has a role with the specified name
1637 */
1638 public boolean hasRoleWithName(String roleName) {
1639 for (int i = 0; i < _rolesArray.length; i++) {
1640 if (_rolesArray[i].equalsIgnoreCase(roleName)) {
1641 return true;
1642 }
1643 }
1644
1645 return false;
1646 }
1647
1648 /**
1649 * Returns true if the user has the permission to add the portlet to a
1650 * layout.
1651 *
1652 * @return true if the user has the permission to add the portlet to a
1653 * layout
1654 */
1655 public boolean hasAddPortletPermission(long userId) {
1656 try {
1657 if (_rolesArray.length == 0) {
1658 return true;
1659 }
1660 else if (RoleLocalServiceUtil.hasUserRoles(
1661 userId, getCompanyId(), _rolesArray, true)) {
1662
1663 return true;
1664 }
1665 else if (RoleLocalServiceUtil.hasUserRole(
1666 userId, getCompanyId(), RoleImpl.ADMINISTRATOR, true)) {
1667
1668 return true;
1669 }
1670 else {
1671 User user = UserLocalServiceUtil.getUserById(userId);
1672
1673 if (user.isDefaultUser() && hasRoleWithName(RoleImpl.GUEST)) {
1674 return true;
1675 }
1676 }
1677 }
1678 catch (Exception e) {
1679 _log.error(e);
1680 }
1681
1682 return false;
1683 }
1684
1685 /**
1686 * Returns true if the portlet is a system portlet that a user cannot
1687 * manually add to their page.
1688 *
1689 * @return true if the portlet is a system portlet that a user cannot
1690 * manually add to their page
1691 */
1692 public boolean getSystem() {
1693 return _system;
1694 }
1695
1696 /**
1697 * Returns true if the portlet is a system portlet that a user cannot
1698 * manually add to their page.
1699 *
1700 * @return true if the portlet is a system portlet that a user cannot
1701 * manually add to their page
1702 */
1703 public boolean isSystem() {
1704 return _system;
1705 }
1706
1707 /**
1708 * Sets to true if the portlet is a system portlet that a user cannot
1709 * manually add to their page.
1710 *
1711 * @param system boolean value for whether the portlet is a system
1712 * portlet that a user cannot manually add to their page
1713 */
1714 public void setSystem(boolean system) {
1715 _system = system;
1716 }
1717
1718 /**
1719 * Returns true to include the portlet and make it available to be made
1720 * active.
1721 *
1722 * @return true to include the portlet and make it available to be made
1723 * active
1724 */
1725 public boolean getInclude() {
1726 return _include;
1727 }
1728
1729 /**
1730 * Returns true to include the portlet and make it available to be made
1731 * active.
1732 *
1733 * @return true to include the portlet and make it available to be made
1734 * active
1735 */
1736 public boolean isInclude() {
1737 return _include;
1738 }
1739
1740 /**
1741 * Sets to true to include the portlet and make it available to be made
1742 * active.
1743 *
1744 * @param include boolean value for whether to include the portlet and
1745 * make it available to be made active
1746 */
1747 public void setInclude(boolean include) {
1748 _include = include;
1749 }
1750
1751 /**
1752 * Gets the init parameters of the portlet.
1753 *
1754 * @return init parameters of the portlet
1755 */
1756 public Map getInitParams() {
1757 return _initParams;
1758 }
1759
1760 /**
1761 * Sets the init parameters of the portlet.
1762 *
1763 * @param initParams the init parameters of the portlet
1764 */
1765 public void setInitParams(Map initParams) {
1766 _initParams = initParams;
1767 }
1768
1769 /**
1770 * Gets expiration cache of the portlet.
1771 *
1772 * @return expiration cache of the portlet
1773 */
1774 public Integer getExpCache() {
1775 return _expCache;
1776 }
1777
1778 /**
1779 * Sets expiration cache of the portlet.
1780 *
1781 * @param expCache expiration cache of the portlet
1782 */
1783 public void setExpCache(Integer expCache) {
1784 _expCache = expCache;
1785 }
1786
1787 /**
1788 * Gets the portlet modes of the portlet.
1789 *
1790 * @return portlet modes of the portlet
1791 */
1792 public Map getPortletModes() {
1793 return _portletModes;
1794 }
1795
1796 /**
1797 * Sets the portlet modes of the portlet.
1798 *
1799 * @param portletModes the portlet modes of the portlet
1800 */
1801 public void setPortletModes(Map portletModes) {
1802 _portletModes = portletModes;
1803 }
1804
1805 /**
1806 * Returns true if the portlet supports the specified mime type and
1807 * portlet mode.
1808 *
1809 * @return true if the portlet supports the specified mime type and
1810 * portlet mode
1811 */
1812 public boolean hasPortletMode(String mimeType, PortletMode portletMode) {
1813 if (mimeType == null) {
1814 mimeType = ContentTypes.TEXT_HTML;
1815 }
1816
1817 Set mimeTypeModes = (Set)_portletModes.get(mimeType);
1818
1819 if (mimeTypeModes == null) {
1820 return false;
1821 }
1822
1823 if (mimeTypeModes.contains(portletMode.toString())) {
1824 return true;
1825 }
1826 else {
1827 return false;
1828 }
1829 }
1830
1831 /**
1832 * Gets a list of all portlet modes supported by the portlet.
1833 *
1834 * @return a list of all portlet modes supported by the portlet
1835 */
1836 public Set getAllPortletModes() {
1837 Set allPortletModes = new TreeSet();
1838
1839 Iterator itr1 = _portletModes.entrySet().iterator();
1840
1841 while (itr1.hasNext()) {
1842 Map.Entry entry = (Map.Entry)itr1.next();
1843
1844 Set mimeTypeModes = (Set)entry.getValue();
1845
1846 Iterator itr2 = mimeTypeModes.iterator();
1847
1848 while (itr2.hasNext()) {
1849 String portletMode = (String)itr2.next();
1850
1851 allPortletModes.add(portletMode);
1852 }
1853 }
1854
1855 return allPortletModes;
1856 }
1857
1858 /**
1859 * Returns true if the portlet supports more than one mime type.
1860 *
1861 * @return true if the portlet supports more than one mime type
1862 */
1863 public boolean hasMultipleMimeTypes() {
1864 if (_portletModes.size() > 1) {
1865 return true;
1866 }
1867 else {
1868 return false;
1869 }
1870 }
1871
1872 /**
1873 * Gets the supported locales of the portlet.
1874 *
1875 * @return supported locales of the portlet
1876 */
1877 public Set getSupportedLocales() {
1878 return _supportedLocales;
1879 }
1880
1881 /**
1882 * Sets the supported locales of the portlet.
1883 *
1884 * @param supportedLocales the supported locales of the portlet
1885 */
1886 public void setSupportedLocales(Set supportedLocales) {
1887 _supportedLocales = supportedLocales;
1888 }
1889
1890 /**
1891 * Gets the resource bundle of the portlet.
1892 *
1893 * @return resource bundle of the portlet
1894 */
1895 public String getResourceBundle() {
1896 return _resourceBundle;
1897 }
1898
1899 /**
1900 * Sets the resource bundle of the portlet.
1901 *
1902 * @param resourceBundle the resource bundle of the portlet
1903 */
1904 public void setResourceBundle(String resourceBundle) {
1905 _resourceBundle = resourceBundle;
1906 }
1907
1908 /**
1909 * Gets the portlet info of the portlet.
1910 *
1911 * @return portlet info of the portlet
1912 */
1913 public PortletInfo getPortletInfo() {
1914 return _portletInfo;
1915 }
1916
1917 /**
1918 * Sets the portlet info of the portlet.
1919 *
1920 * @param portletInfo the portlet info of the portlet
1921 */
1922 public void setPortletInfo(PortletInfo portletInfo) {
1923 _portletInfo = portletInfo;
1924 }
1925
1926 /**
1927 * Gets the user attributes of the portlet.
1928 *
1929 * @return user attributes of the portlet
1930 */
1931 public Set getUserAttributes() {
1932 return _userAttributes;
1933 }
1934
1935 /**
1936 * Sets the user attributes of the portlet.
1937 *
1938 * @param userAttributes the user attributes of the portlet
1939 */
1940 public void setUserAttributes(Set userAttributes) {
1941 _userAttributes = userAttributes;
1942 }
1943
1944 /**
1945 * Gets the custom user attributes of the portlet.
1946 *
1947 * @return custom user attributes of the portlet
1948 */
1949 public Map getCustomUserAttributes() {
1950 return _customUserAttributes;
1951 }
1952
1953 /**
1954 * Sets the custom user attributes of the portlet.
1955 *
1956 * @param customUserAttributes the custom user attributes of the
1957 * portlet
1958 */
1959 public void setCustomUserAttributes(Map customUserAttributes) {
1960 _customUserAttributes = customUserAttributes;
1961 }
1962
1963 /**
1964 * Gets the servlet context name of the portlet.
1965 *
1966 * @return the servlet context name of the portlet
1967 */
1968 public String getServletContextName() {
1969 return _servletContextName;
1970 }
1971
1972 /**
1973 * Sets the servlet context name of the portlet.
1974 *
1975 * @param servletContextName the servlet context name of the portlet
1976 */
1977 public void setServletContextName(String servletContextName) {
1978 _servletContextName = servletContextName;
1979
1980 if (Validator.isNotNull(_servletContextName)) {
1981 _warFile = true;
1982 }
1983 else {
1984 _warFile = false;
1985 }
1986 }
1987
1988 /**
1989 * Returns true if the portlet is found in a WAR file.
1990 *
1991 * @return true if the portlet is found in a WAR file
1992 */
1993 public boolean getWARFile() {
1994 return _warFile;
1995 }
1996
1997 /**
1998 * Returns true if the portlet is found in a WAR file.
1999 *
2000 * @return true if the portlet is found in a WAR file
2001 */
2002 public boolean isWARFile() {
2003 return _warFile;
2004 }
2005
2006 /**
2007 * Sets to true if the portlet is found in a WAR file.
2008 *
2009 * @param warFile boolean value for whether the portlet is found in a
2010 * WAR file
2011 */
2012 public void setWARFile(boolean warFile) {
2013 _warFile = warFile;
2014 }
2015
2016 /**
2017 * Gets the servlet context path of the portlet.
2018 *
2019 * @return the servlet context path of the portlet
2020 */
2021 public String getContextPath() {
2022 String virtualPath = getVirtualPath();
2023
2024 if (Validator.isNotNull(virtualPath)) {
2025 return virtualPath;
2026 }
2027
2028 if (isWARFile()) {
2029 StringMaker sm = new StringMaker();
2030
2031 sm.append(StringPool.SLASH);
2032 sm.append(getServletContextName());
2033
2034 return sm.toString();
2035 }
2036 else {
2037 return PortalUtil.getPathContext();
2038 }
2039 }
2040
2041 /**
2042 * Returns true if the portlet is found in a WAR file.
2043 *
2044 * @param portletId the cloned instance portlet id
2045 * @return a cloned instance of the portlet
2046 */
2047 public Portlet getClonedInstance(String portletId) {
2048 if (_clonedInstances == null) {
2049
2050 // LEP-528
2051
2052 return null;
2053 }
2054
2055 Portlet clonedInstance = (Portlet)_clonedInstances.get(portletId);
2056
2057 if (clonedInstance == null) {
2058 clonedInstance = (Portlet)clone();
2059
2060 clonedInstance.setPortletId(portletId);
2061
2062 // Disable caching of cloned instances until we can figure out how
2063 // to elegantly refresh the cache when the portlet is dynamically
2064 // updated by the user. For example, the user might change the
2065 // portlet from one column to the next. Cloned instances that are
2066 // cached would not see the new change. We can then also cache
2067 // static portlet instances.
2068
2069 //_clonedInstances.put(portletId, clonedInstance);
2070 }
2071
2072 return clonedInstance;
2073 }
2074
2075 /**
2076 * Returns true if the portlet is a static portlet that is cannot be moved.
2077 *
2078 * @return true if the portlet is a static portlet that is cannot be
2079 * moved
2080 */
2081 public boolean getStatic() {
2082 return _staticPortlet;
2083 }
2084
2085 /**
2086 * Returns true if the portlet is a static portlet that is cannot be moved.
2087 *
2088 * @return true if the portlet is a static portlet that is cannot be
2089 * moved
2090 */
2091 public boolean isStatic() {
2092 return _staticPortlet;
2093 }
2094
2095 /**
2096 * Sets to true if the portlet is a static portlet that is cannot be moved.
2097 *
2098 * @param staticPortlet boolean value for whether the portlet is a
2099 * static portlet that cannot be moved
2100 */
2101 public void setStatic(boolean staticPortlet) {
2102 _staticPortlet = staticPortlet;
2103 }
2104
2105 /**
2106 * Returns true if the portlet is a static portlet at the start of a list of
2107 * portlets.
2108 *
2109 * @return true if the portlet is a static portlet at the start of a
2110 * list of portlets
2111 */
2112 public boolean getStaticStart() {
2113 return _staticPortletStart;
2114 }
2115
2116 /**
2117 * Returns true if the portlet is a static portlet at the start of a list of
2118 * portlets.
2119 *
2120 * @return true if the portlet is a static portlet at the start of a
2121 * list of portlets
2122 */
2123 public boolean isStaticStart() {
2124 return _staticPortletStart;
2125 }
2126
2127 /**
2128 * Sets to true if the portlet is a static portlet at the start of a list of
2129 * portlets.
2130 *
2131 * @param staticPortletStart boolean value for whether the portlet is
2132 * a static portlet at the start of a list of portlets
2133 */
2134 public void setStaticStart(boolean staticPortletStart) {
2135 _staticPortletStart = staticPortletStart;
2136 }
2137
2138 /**
2139 * Returns true if the portlet is a static portlet at the end of a list of
2140 * portlets.
2141 *
2142 * @return true if the portlet is a static portlet at the end of a
2143 * list of portlets
2144 */
2145 public boolean getStaticEnd() {
2146 return !_staticPortletStart;
2147 }
2148
2149 /**
2150 * Returns true if the portlet is a static portlet at the end of a list of
2151 * portlets.
2152 *
2153 * @return true if the portlet is a static portlet at the end of a
2154 * list of portlets
2155 */
2156 public boolean isStaticEnd() {
2157 return !_staticPortletStart;
2158 }
2159
2160 /**
2161 * The servlet url patterns that are part of this application.
2162 *
2163 * @return The servlet url patterns that are part of this application
2164 */
2165 public List getServletURLPatterns() {
2166 return _servletURLPatterns;
2167 }
2168
2169 /**
2170 * The servlet url patterns that are part of this application.
2171 *
2172 * @param servletURLPatterns servlet url patterns that are part of
2173 * this application
2174 */
2175 public void setServletURLPatterns(List servletURLPatterns) {
2176 _servletURLPatterns = servletURLPatterns;
2177 }
2178
2179 /**
2180 * Creates and returns a copy of this object.
2181 *
2182 * @return a copy of this object
2183 */
2184 public Object clone() {
2185 return new PortletImpl(
2186 getPortletId(), getPluginPackage(), getDefaultPluginSetting(),
2187 getCompanyId(), getIcon(), getVirtualPath(), getStrutsPath(),
2188 getDisplayName(), getPortletClass(), getConfigurationActionClass(),
2189 getIndexerClass(), getOpenSearchClass(), getSchedulerClass(),
2190 getPortletURLClass(), getFriendlyURLMapperClass(),
2191 getURLEncoderClass(), getPortletDataHandlerClass(),
2192 getPortletLayoutListenerClass(), getSmtpMessageListenerClass(),
2193 getDefaultPreferences(), getPreferencesValidator(),
2194 isPreferencesCompanyWide(), isPreferencesUniquePerLayout(),
2195 isPreferencesOwnedByGroup(), isUseDefaultTemplate(),
2196 isShowPortletAccessDenied(), isShowPortletInactive(),
2197 isActionURLRedirect(), isRestoreCurrentView(), isMaximizeEdit(),
2198 isMaximizeHelp(), isPopUpPrint(), isLayoutCacheable(),
2199 isInstanceable(), isPrivateRequestAttributes(),
2200 isPrivateSessionAttributes(), getRenderWeight(), isAjaxable(),
2201 getHeaderPortalCss(), getHeaderPortletCss(),
2202 getHeaderPortalJavaScript(), getHeaderPortletJavaScript(),
2203 getFooterPortalCss(), getFooterPortletCss(),
2204 getFooterPortalJavaScript(), getFooterPortletJavaScript(),
2205 isAddDefaultResource(), getRoles(), getUnlinkedRoles(),
2206 getRoleMappers(), isSystem(), isActive(), isInclude(),
2207 getInitParams(), getExpCache(), getPortletModes(),
2208 getSupportedLocales(), getResourceBundle(), getPortletInfo(),
2209 getUserAttributes(), getCustomUserAttributes(),
2210 getServletContextName(), getServletURLPatterns());
2211 }
2212
2213 /**
2214 * Compares this portlet to the specified object.
2215 *
2216 * @param obj the object to compare this portlet against
2217 * @return the value 0 if the argument portlet is equal to this
2218 * portlet; a value less than -1 if this portlet is less than
2219 * the portlet argument; and 1 if this portlet is greater than
2220 * the portlet argument
2221 */
2222 public int compareTo(Object obj) {
2223 Portlet portlet = (Portlet)obj;
2224
2225 return getPortletId().compareTo(portlet.getPortletId());
2226 }
2227
2228 /**
2229 * Checks whether this portlet is equal to the specified object.
2230 *
2231 * @param obj the object to compare this portlet against
2232 * @return true if the portlet is equal to the specified object
2233 */
2234 public boolean equals(Object obj) {
2235 Portlet portlet = (Portlet)obj;
2236
2237 return getPortletId().equals(portlet.getPortletId());
2238 }
2239
2240 /**
2241 * Log instance for this class.
2242 */
2243 private static Log _log = LogFactory.getLog(PortletImpl.class);
2244
2245 /**
2246 * Package to which this plugin belongs to.
2247 */
2248 private PluginPackage _pluginPackage;
2249
2250 /**
2251 * Plugin settings associated with the portlet.
2252 */
2253 private PluginSetting _defaultPluginSetting;
2254
2255 /**
2256 * The icon of the portlet.
2257 */
2258 private String _icon;
2259
2260 /**
2261 * The virtual path of the portlet.
2262 */
2263 private String _virtualPath;
2264
2265 /**
2266 * The struts path of the portlet.
2267 */
2268 private String _strutsPath;
2269
2270 /**
2271 * The display name of the portlet.
2272 */
2273 private String _displayName;
2274
2275 /**
2276 * The name of the portlet class of the portlet.
2277 */
2278 private String _portletClass;
2279
2280 /**
2281 * The configuration action class of the portlet.
2282 */
2283 private String _configurationActionClass;
2284
2285 /**
2286 * The name of the indexer class of the portlet.
2287 */
2288 private String _indexerClass;
2289
2290 /**
2291 * The name of the open search class of the portlet.
2292 */
2293 private String _openSearchClass;
2294
2295 /**
2296 * The name of the scheduler class of the portlet.
2297 */
2298 private String _schedulerClass;
2299
2300 /**
2301 * The name of the portlet URL class of the portlet.
2302 */
2303 private String _portletURLClass;
2304
2305 /**
2306 * The name of the friendly URL mapper class of the portlet.
2307 */
2308 private String _friendlyURLMapperClass;
2309
2310 /**
2311 * The name of the URL encoder class of the portlet.
2312 */
2313 private String _urlEncoderClass;
2314
2315 /**
2316 * The name of the portlet data handler class of the portlet.
2317 */
2318 private String _portletDataHandlerClass;
2319
2320 /**
2321 * The name of the portlet data layout listener class of the portlet.
2322 */
2323 private String _portletLayoutListenerClass;
2324
2325 /**
2326 * The name of the SMTP message listener class of the portlet.
2327 */
2328 private String _smtpMessageListenerClass;
2329
2330 /**
2331 * The default preferences of the portlet.
2332 */
2333 private String _defaultPreferences;
2334
2335 /**
2336 * The name of the preferences validator class of the portlet.
2337 */
2338 private String _prefsValidator;
2339
2340 /**
2341 * True if preferences are shared across the entire company.
2342 */
2343 private boolean _prefsCompanyWide;
2344
2345 /**
2346 * True if preferences are unique per layout.
2347 */
2348 private boolean _prefsUniquePerLayout = true;
2349
2350 /**
2351 * True if preferences are owned by the group when the portlet is shown in a
2352 * group layout. False if preferences are owned by the user at all times.
2353 */
2354 private boolean _prefsOwnedByGroup = true;
2355
2356 /**
2357 * True if the portlet uses the default template.
2358 */
2359 private boolean _useDefaultTemplate = true;
2360
2361 /**
2362 * True if users are shown that they do not have access to the portlet.
2363 */
2364 private boolean _showPortletAccessDenied = GetterUtil.getBoolean(
2365 PropsUtil.get(PropsUtil.LAYOUT_SHOW_PORTLET_ACCESS_DENIED));
2366
2367 /**
2368 * True if users are shown that the portlet is inactive.
2369 */
2370 private boolean _showPortletInactive = GetterUtil.getBoolean(
2371 PropsUtil.get(PropsUtil.LAYOUT_SHOW_PORTLET_INACTIVE));
2372
2373 /**
2374 * True if an action URL for this portlet should cause an auto redirect.
2375 */
2376 private boolean _actionURLRedirect;
2377
2378 /**
2379 * True if the portlet restores to the current view from the maximized
2380 * state.
2381 */
2382 private boolean _restoreCurrentView = true;
2383
2384 /**
2385 * True if the portlet goes into the maximized state when the user goes into
2386 * the edit mode.
2387 */
2388 private boolean _maximizeEdit;
2389
2390 /**
2391 * True if the portlet goes into the maximized state when the user goes into
2392 * the help mode.
2393 */
2394 private boolean _maximizeHelp;
2395
2396 /**
2397 * True if the portlet goes into the pop up state when the user goes into
2398 * the print mode.
2399 */
2400 private boolean _popUpPrint = true;
2401
2402 /**
2403 * True if the portlet can be cached within the layout.
2404 */
2405 private boolean _layoutCacheable;
2406
2407 /**
2408 * True if the portlet can be added multiple times to a layout.
2409 */
2410 private boolean _instanceable;
2411
2412 /**
2413 * True if the portlet does not share request attributes with the portal or
2414 * portlets from another WAR.
2415 */
2416 private boolean _privateRequestAttributes = true;
2417
2418 /**
2419 * True if the portlet does not share session attributes with the portal.
2420 */
2421 private boolean _privateSessionAttributes = true;
2422
2423 /**
2424 * Render weight of the portlet.
2425 */
2426 private int _renderWeight = 1;
2427
2428 /**
2429 * True if the portlet can be displayed via Ajax.
2430 */
2431 private boolean _ajaxable = true;
2432
2433 /**
2434 * A list of CSS files that will be referenced from the page's header
2435 * relative to the portal's context path.
2436 */
2437 private List _headerPortalCss;
2438
2439 /**
2440 * A list of CSS files that will be referenced from the page's header
2441 * relative to the portlet's context path.
2442 */
2443 private List _headerPortletCss;
2444
2445 /**
2446 * A list of JavaScript files that will be referenced from the page's header
2447 * relative to the portal's context path.
2448 */
2449 private List _headerPortalJavaScript;
2450
2451 /**
2452 * A list of JavaScript files that will be referenced from the page's header
2453 * relative to the portlet's context path.
2454 */
2455 private List _headerPortletJavaScript;
2456
2457 /**
2458 * A list of CSS files that will be referenced from the page's footer
2459 * relative to the portal's context path.
2460 */
2461 private List _footerPortalCss;
2462
2463 /**
2464 * A list of CSS files that will be referenced from the page's footer
2465 * relative to the portlet's context path.
2466 */
2467 private List _footerPortletCss;
2468
2469 /**
2470 * A list of JavaScript files that will be referenced from the page's footer
2471 * relative to the portal's context path.
2472 */
2473 private List _footerPortalJavaScript;
2474
2475 /**
2476 * A list of JavaScript files that will be referenced from the page's footer
2477 * relative to the portlet's context path.
2478 */
2479 private List _footerPortletJavaScript;
2480
2481 /**
2482 * True if default resources for the portlet are added to a page.
2483 */
2484 private boolean _addDefaultResource;
2485
2486 /**
2487 * An array of required roles of the portlet.
2488 */
2489 private String[] _rolesArray;
2490
2491 /**
2492 * The unlinked roles of the portlet.
2493 */
2494 private Set _unlinkedRoles;
2495
2496 /**
2497 * The role mappers of the portlet.
2498 */
2499 private Map _roleMappers;
2500
2501 /**
2502 * True if the portlet is a system portlet that a user cannot manually add
2503 * to their page.
2504 */
2505 private boolean _system;
2506
2507 /**
2508 * True to include the portlet and make it available to be made active.
2509 */
2510 private boolean _include = true;
2511
2512 /**
2513 * The init parameters of the portlet.
2514 */
2515 private Map _initParams;
2516
2517 /**
2518 * The expiration cache of the portlet.
2519 */
2520 private Integer _expCache;
2521
2522 /**
2523 * The portlet modes of the portlet.
2524 */
2525 private Map _portletModes;
2526
2527 /**
2528 * The supported locales of the portlet.
2529 */
2530 private Set _supportedLocales;
2531
2532 /**
2533 * The resource bundle of the portlet.
2534 */
2535 private String _resourceBundle;
2536
2537 /**
2538 * The portlet info of the portlet.
2539 */
2540 private PortletInfo _portletInfo;
2541
2542 /**
2543 * The user attributes of the portlet.
2544 */
2545 private Set _userAttributes;
2546
2547 /**
2548 * The custom user attributes of the portlet.
2549 */
2550 private Map _customUserAttributes;
2551
2552 /**
2553 * The servlet context name of the portlet.
2554 */
2555 private String _servletContextName;
2556
2557 /**
2558 * True if the portlet is found in a WAR file.
2559 */
2560 private boolean _warFile;
2561
2562 /**
2563 * The cloned instances of the portlet.
2564 */
2565 private Map _clonedInstances;
2566
2567 /**
2568 * True if the portlet is a static portlet that is cannot be moved.
2569 */
2570 private boolean _staticPortlet;
2571
2572 /**
2573 * True if the portlet is a static portlet at the start of a list of
2574 * portlets.
2575 */
2576 private boolean _staticPortletStart;
2577
2578 /**
2579 * The servlet url patterns that are part of this application.
2580 */
2581 private List _servletURLPatterns;
2582
2583}