001
014
015 package com.liferay.portal.template;
016
017 import com.liferay.portal.kernel.audit.AuditMessageFactoryUtil;
018 import com.liferay.portal.kernel.audit.AuditRouterUtil;
019 import com.liferay.portal.kernel.json.JSONFactoryUtil;
020 import com.liferay.portal.kernel.language.LanguageUtil;
021 import com.liferay.portal.kernel.language.UnicodeLanguageUtil;
022 import com.liferay.portal.kernel.log.Log;
023 import com.liferay.portal.kernel.log.LogFactoryUtil;
024 import com.liferay.portal.kernel.portlet.PortletModeFactory_IW;
025 import com.liferay.portal.kernel.portlet.WindowStateFactory_IW;
026 import com.liferay.portal.kernel.servlet.BrowserSnifferUtil;
027 import com.liferay.portal.kernel.template.Template;
028 import com.liferay.portal.kernel.template.TemplateContextType;
029 import com.liferay.portal.kernel.template.TemplateHandler;
030 import com.liferay.portal.kernel.template.TemplateHandlerRegistryUtil;
031 import com.liferay.portal.kernel.template.TemplateVariableGroup;
032 import com.liferay.portal.kernel.util.ArrayUtil_IW;
033 import com.liferay.portal.kernel.util.DateUtil_IW;
034 import com.liferay.portal.kernel.util.FastDateFormatFactoryUtil;
035 import com.liferay.portal.kernel.util.GetterUtil;
036 import com.liferay.portal.kernel.util.GetterUtil_IW;
037 import com.liferay.portal.kernel.util.HtmlUtil;
038 import com.liferay.portal.kernel.util.HttpUtil;
039 import com.liferay.portal.kernel.util.JavaConstants;
040 import com.liferay.portal.kernel.util.ListMergeable;
041 import com.liferay.portal.kernel.util.LocaleUtil;
042 import com.liferay.portal.kernel.util.ParamUtil_IW;
043 import com.liferay.portal.kernel.util.PrefsPropsUtil;
044 import com.liferay.portal.kernel.util.PropsUtil;
045 import com.liferay.portal.kernel.util.Randomizer_IW;
046 import com.liferay.portal.kernel.util.StaticFieldGetter;
047 import com.liferay.portal.kernel.util.StringPool;
048 import com.liferay.portal.kernel.util.StringUtil_IW;
049 import com.liferay.portal.kernel.util.TimeZoneUtil_IW;
050 import com.liferay.portal.kernel.util.UnicodeFormatter_IW;
051 import com.liferay.portal.kernel.util.Validator_IW;
052 import com.liferay.portal.kernel.xml.SAXReader;
053 import com.liferay.portal.model.Layout;
054 import com.liferay.portal.model.Theme;
055 import com.liferay.portal.service.GroupLocalService;
056 import com.liferay.portal.service.GroupService;
057 import com.liferay.portal.service.LayoutLocalService;
058 import com.liferay.portal.service.LayoutService;
059 import com.liferay.portal.service.OrganizationLocalService;
060 import com.liferay.portal.service.OrganizationService;
061 import com.liferay.portal.service.UserLocalService;
062 import com.liferay.portal.service.UserService;
063 import com.liferay.portal.service.permission.AccountPermissionUtil;
064 import com.liferay.portal.service.permission.CommonPermissionUtil;
065 import com.liferay.portal.service.permission.GroupPermissionUtil;
066 import com.liferay.portal.service.permission.LayoutPermissionUtil;
067 import com.liferay.portal.service.permission.OrganizationPermissionUtil;
068 import com.liferay.portal.service.permission.PasswordPolicyPermissionUtil;
069 import com.liferay.portal.service.permission.PortalPermissionUtil;
070 import com.liferay.portal.service.permission.PortletPermissionUtil;
071 import com.liferay.portal.service.permission.RolePermissionUtil;
072 import com.liferay.portal.service.permission.UserGroupPermissionUtil;
073 import com.liferay.portal.service.permission.UserPermissionUtil;
074 import com.liferay.portal.theme.NavItem;
075 import com.liferay.portal.theme.ThemeDisplay;
076 import com.liferay.portal.util.ClassLoaderUtil;
077 import com.liferay.portal.util.PortalUtil;
078 import com.liferay.portal.util.SessionClicks_IW;
079 import com.liferay.portal.util.WebKeys;
080 import com.liferay.portal.webserver.WebServerServletTokenUtil;
081 import com.liferay.portlet.PortletURLFactoryUtil;
082 import com.liferay.portlet.documentlibrary.util.DLUtil;
083 import com.liferay.portlet.expando.service.ExpandoColumnLocalService;
084 import com.liferay.portlet.expando.service.ExpandoRowLocalService;
085 import com.liferay.portlet.expando.service.ExpandoTableLocalService;
086 import com.liferay.portlet.expando.service.ExpandoValueLocalService;
087 import com.liferay.portlet.journalcontent.util.JournalContentUtil;
088 import com.liferay.taglib.util.VelocityTaglibImpl;
089 import com.liferay.util.portlet.PortletRequestUtil;
090
091 import java.lang.reflect.Method;
092
093 import java.security.AccessControlContext;
094 import java.security.AccessController;
095 import java.security.PrivilegedAction;
096
097 import java.util.Collections;
098 import java.util.EnumMap;
099 import java.util.HashMap;
100 import java.util.List;
101 import java.util.Locale;
102 import java.util.Map;
103 import java.util.Set;
104 import java.util.concurrent.ConcurrentHashMap;
105
106 import javax.portlet.PortletConfig;
107 import javax.portlet.PortletRequest;
108 import javax.portlet.PortletResponse;
109 import javax.portlet.RenderRequest;
110 import javax.portlet.RenderResponse;
111
112 import javax.servlet.http.HttpServletRequest;
113
114 import org.apache.struts.taglib.tiles.ComponentConstants;
115 import org.apache.struts.tiles.ComponentContext;
116
117
121 public class TemplateContextHelper {
122
123 public static Map<String, TemplateVariableGroup> getTemplateVariableGroups(
124 long classNameId, long classPK, Locale locale)
125 throws Exception {
126
127 TemplateHandler templateHandler =
128 TemplateHandlerRegistryUtil.getTemplateHandler(classNameId);
129
130 if (templateHandler == null) {
131 return Collections.emptyMap();
132 }
133
134 Map<String, TemplateVariableGroup> templateVariableGroups =
135 templateHandler.getTemplateVariableGroups(classPK, locale);
136
137 TemplateVariableGroup utilTemplateVariableGroup =
138 templateVariableGroups.get("util");
139
140 utilTemplateVariableGroup.addVariable(
141 "http-request", HttpServletRequest.class, "request");
142
143 TemplateVariableGroup portalServicesTemplateVariableGroup =
144 new TemplateVariableGroup("portal-services");
145
146 portalServicesTemplateVariableGroup.setAutocompleteEnabled(false);
147
148 portalServicesTemplateVariableGroup.addServiceLocatorVariables(
149 GroupLocalService.class, GroupService.class,
150 LayoutLocalService.class, LayoutService.class,
151 OrganizationLocalService.class, OrganizationService.class,
152 UserLocalService.class, UserService.class);
153
154 templateVariableGroups.put(
155 portalServicesTemplateVariableGroup.getLabel(),
156 portalServicesTemplateVariableGroup);
157
158 return templateVariableGroups;
159 }
160
161 public Map<String, Object> getHelperUtilities(
162 TemplateContextType templateContextType) {
163
164 TemplateControlContext templateControlContext =
165 getTemplateControlContext();
166
167 AccessControlContext accessControlContext =
168 templateControlContext.getAccessControlContext();
169 ClassLoader classLoader = templateControlContext.getClassLoader();
170
171 if (accessControlContext == null) {
172 return doGetHelperUtilities(classLoader, templateContextType);
173 }
174
175 return AccessController.doPrivileged(
176 new DoGetHelperUtilitiesPrivilegedAction(
177 classLoader, templateContextType),
178 accessControlContext);
179 }
180
181 public Set<String> getRestrictedVariables() {
182 return Collections.emptySet();
183 }
184
185 public TemplateControlContext getTemplateControlContext() {
186 return _pacl.getTemplateControlContext();
187 }
188
189 public void prepare(Template template, HttpServletRequest request) {
190
191
192
193 template.put("request", request);
194
195
196
197 PortletConfig portletConfig = (PortletConfig)request.getAttribute(
198 JavaConstants.JAVAX_PORTLET_CONFIG);
199
200 if (portletConfig != null) {
201 template.put("portletConfig", portletConfig);
202 }
203
204
205
206 final PortletRequest portletRequest =
207 (PortletRequest)request.getAttribute(
208 JavaConstants.JAVAX_PORTLET_REQUEST);
209
210 if (portletRequest != null) {
211 if (portletRequest instanceof RenderRequest) {
212 template.put("renderRequest", portletRequest);
213 }
214 }
215
216
217
218 final PortletResponse portletResponse =
219 (PortletResponse)request.getAttribute(
220 JavaConstants.JAVAX_PORTLET_RESPONSE);
221
222 if (portletResponse != null) {
223 if (portletResponse instanceof RenderResponse) {
224 template.put("renderResponse", portletResponse);
225 }
226 }
227
228
229
230 if ((portletRequest != null) && (portletResponse != null)) {
231 template.put(
232 "xmlRequest",
233 new Object() {
234
235 @Override
236 public String toString() {
237 return PortletRequestUtil.toXML(
238 portletRequest, portletResponse);
239 }
240
241 }
242 );
243 }
244
245
246
247 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
248 WebKeys.THEME_DISPLAY);
249
250 if (themeDisplay != null) {
251 Layout layout = themeDisplay.getLayout();
252 List<Layout> layouts = themeDisplay.getLayouts();
253
254 template.put("themeDisplay", themeDisplay);
255 template.put("company", themeDisplay.getCompany());
256 template.put("user", themeDisplay.getUser());
257 template.put("realUser", themeDisplay.getRealUser());
258 template.put("layout", layout);
259 template.put("layouts", layouts);
260 template.put("plid", String.valueOf(themeDisplay.getPlid()));
261 template.put(
262 "layoutTypePortlet", themeDisplay.getLayoutTypePortlet());
263 template.put(
264 "scopeGroupId", new Long(themeDisplay.getScopeGroupId()));
265 template.put(
266 "permissionChecker", themeDisplay.getPermissionChecker());
267 template.put("locale", themeDisplay.getLocale());
268 template.put("timeZone", themeDisplay.getTimeZone());
269 template.put("colorScheme", themeDisplay.getColorScheme());
270 template.put("portletDisplay", themeDisplay.getPortletDisplay());
271
272
273
274 if (layout != null) {
275 List<NavItem> navItems = NavItem.fromLayouts(
276 request, layouts, template);
277
278 template.put("navItems", navItems);
279 }
280
281
282
283 template.put(
284 "portletGroupId", new Long(themeDisplay.getScopeGroupId()));
285 }
286
287
288
289 Theme theme = (Theme)request.getAttribute(WebKeys.THEME);
290
291 if ((theme == null) && (themeDisplay != null)) {
292 theme = themeDisplay.getTheme();
293 }
294
295 if (theme != null) {
296 template.put("theme", theme);
297 }
298
299
300
301 prepareTiles(template, request);
302
303
304
305 ListMergeable<String> pageTitleListMergeable =
306 (ListMergeable<String>)request.getAttribute(WebKeys.PAGE_TITLE);
307
308 if (pageTitleListMergeable != null) {
309 String pageTitle = pageTitleListMergeable.mergeToString(
310 StringPool.SPACE);
311
312 template.put("pageTitle", pageTitle);
313 }
314
315 ListMergeable<String> pageSubtitleListMergeable =
316 (ListMergeable<String>)request.getAttribute(WebKeys.PAGE_SUBTITLE);
317
318 if (pageSubtitleListMergeable != null) {
319 String pageSubtitle = pageSubtitleListMergeable.mergeToString(
320 StringPool.SPACE);
321
322 template.put("pageSubtitle", pageSubtitle);
323 }
324 }
325
326 public void removeAllHelperUtilities() {
327 _helperUtilitiesMaps.clear();
328 }
329
330 public void removeHelperUtilities(ClassLoader classLoader) {
331 _helperUtilitiesMaps.remove(classLoader);
332 }
333
334 protected Map<String, Object> doGetHelperUtilities(
335 ClassLoader classLoader, TemplateContextType templateContextType) {
336
337 HelperUtilitiesMap helperUtilitiesMap = _helperUtilitiesMaps.get(
338 classLoader);
339
340 if (helperUtilitiesMap == null) {
341 helperUtilitiesMap = new HelperUtilitiesMap(
342 TemplateContextType.class);
343
344 _helperUtilitiesMaps.put(classLoader, helperUtilitiesMap);
345 }
346
347 Map<String, Object> helperUtilities = helperUtilitiesMap.get(
348 templateContextType);
349
350 if (helperUtilities != null) {
351 return helperUtilities;
352 }
353
354 helperUtilities = new HashMap<String, Object>();
355
356 populateCommonHelperUtilities(helperUtilities);
357 populateExtraHelperUtilities(helperUtilities);
358
359 if (templateContextType.equals(TemplateContextType.RESTRICTED)) {
360 Set<String> restrictedVariables = getRestrictedVariables();
361
362 for (String restrictedVariable : restrictedVariables) {
363 helperUtilities.remove(restrictedVariable);
364 }
365 }
366
367 helperUtilities = Collections.unmodifiableMap(helperUtilities);
368
369 helperUtilitiesMap.put(templateContextType, helperUtilities);
370
371 return helperUtilities;
372 }
373
374 protected void populateCommonHelperUtilities(
375 Map<String, Object> variables) {
376
377
378
379 variables.put("arrayUtil", ArrayUtil_IW.getInstance());
380
381
382
383 try {
384 variables.put(
385 "auditMessageFactoryUtil",
386 AuditMessageFactoryUtil.getAuditMessageFactory());
387 }
388 catch (SecurityException se) {
389 _log.error(se, se);
390 }
391
392
393
394 try {
395 variables.put("auditRouterUtil", AuditRouterUtil.getAuditRouter());
396 }
397 catch (SecurityException se) {
398 _log.error(se, se);
399 }
400
401
402
403 try {
404 variables.put(
405 "browserSniffer", BrowserSnifferUtil.getBrowserSniffer());
406 }
407 catch (SecurityException se) {
408 _log.error(se, se);
409 }
410
411
412
413 try {
414 variables.put(
415 "dateFormatFactory",
416 FastDateFormatFactoryUtil.getFastDateFormatFactory());
417 }
418 catch (SecurityException se) {
419 _log.error(se, se);
420 }
421
422
423
424 variables.put("dateUtil", DateUtil_IW.getInstance());
425
426
427
428 try {
429 variables.put("dlUtil", DLUtil.getDL());
430 }
431 catch (SecurityException se) {
432 _log.error(se, se);
433 }
434
435
436
437 try {
438 ServiceLocator serviceLocator = ServiceLocator.getInstance();
439
440
441
442 variables.put("serviceLocator", serviceLocator);
443
444 try {
445 variables.put(
446 "expandoColumnLocalService",
447 serviceLocator.findService(
448 ExpandoColumnLocalService.class.getName()));
449 }
450 catch (SecurityException se) {
451 _log.error(se, se);
452 }
453
454
455
456 try {
457 variables.put(
458 "expandoRowLocalService",
459 serviceLocator.findService(
460 ExpandoRowLocalService.class.getName()));
461 }
462 catch (SecurityException se) {
463 _log.error(se, se);
464 }
465
466
467
468 try {
469 variables.put(
470 "expandoTableLocalService",
471 serviceLocator.findService(
472 ExpandoTableLocalService.class.getName()));
473 }
474 catch (SecurityException se) {
475 _log.error(se, se);
476 }
477
478
479
480 try {
481 variables.put(
482 "expandoValueLocalService",
483 serviceLocator.findService(
484 ExpandoValueLocalService.class.getName()));
485 }
486 catch (SecurityException se) {
487 _log.error(se, se);
488 }
489 }
490 catch (SecurityException se) {
491 _log.error(se, se);
492 }
493
494
495
496 variables.put("getterUtil", GetterUtil_IW.getInstance());
497
498
499
500 try {
501 variables.put("htmlUtil", HtmlUtil.getHtml());
502 }
503 catch (SecurityException se) {
504 _log.error(se, se);
505 }
506
507
508
509 try {
510 variables.put("httpUtil", HttpUtil.getHttp());
511 }
512 catch (SecurityException se) {
513 _log.error(se, se);
514 }
515
516
517
518 try {
519 variables.put(
520 "journalContentUtil", JournalContentUtil.getJournalContent());
521 }
522 catch (SecurityException se) {
523 _log.error(se, se);
524 }
525
526
527
528 try {
529 variables.put("jsonFactoryUtil", JSONFactoryUtil.getJSONFactory());
530 }
531 catch (SecurityException se) {
532 _log.error(se, se);
533 }
534
535
536
537 try {
538 variables.put("languageUtil", LanguageUtil.getLanguage());
539 }
540 catch (SecurityException se) {
541 _log.error(se, se);
542 }
543
544 try {
545 variables.put(
546 "unicodeLanguageUtil",
547 UnicodeLanguageUtil.getUnicodeLanguage());
548 }
549 catch (SecurityException se) {
550 _log.error(se, se);
551 }
552
553
554
555 try {
556 variables.put("localeUtil", LocaleUtil.getInstance());
557 }
558 catch (SecurityException se) {
559 _log.error(se, se);
560 }
561
562
563
564 variables.put("paramUtil", ParamUtil_IW.getInstance());
565
566
567
568 try {
569 variables.put("portalUtil", PortalUtil.getPortal());
570 }
571 catch (SecurityException se) {
572 _log.error(se, se);
573 }
574
575 try {
576 variables.put("portal", PortalUtil.getPortal());
577 }
578 catch (SecurityException se) {
579 _log.error(se, se);
580 }
581
582
583
584 try {
585 variables.put("prefsPropsUtil", PrefsPropsUtil.getPrefsProps());
586 }
587 catch (SecurityException se) {
588 _log.error(se, se);
589 }
590
591
592
593 try {
594 variables.put("propsUtil", PropsUtil.getProps());
595 }
596 catch (SecurityException se) {
597 _log.error(se, se);
598 }
599
600
601
602 variables.put(
603 "portletModeFactory", PortletModeFactory_IW.getInstance());
604
605
606
607 try {
608 variables.put(
609 "portletURLFactory",
610 PortletURLFactoryUtil.getPortletURLFactory());
611 }
612 catch (SecurityException se) {
613 _log.error(se, se);
614 }
615
616
617
618 try {
619 variables.put(
620 "randomizer", Randomizer_IW.getInstance().getWrappedInstance());
621 }
622 catch (SecurityException se) {
623 _log.error(se, se);
624 }
625
626 try {
627 UtilLocator utilLocator = UtilLocator.getInstance();
628
629
630
631 variables.put("utilLocator", utilLocator);
632
633
634
635 try {
636 variables.put(
637 "saxReaderUtil",
638 utilLocator.findUtil(SAXReader.class.getName()));
639 }
640 catch (SecurityException se) {
641 _log.error(se, se);
642 }
643 }
644 catch (SecurityException se) {
645 _log.error(se, se);
646 }
647
648
649
650 variables.put("sessionClicks", SessionClicks_IW.getInstance());
651
652
653
654 variables.put("staticFieldGetter", StaticFieldGetter.getInstance());
655
656
657
658 variables.put("stringUtil", StringUtil_IW.getInstance());
659
660
661
662 variables.put("timeZoneUtil", TimeZoneUtil_IW.getInstance());
663
664
665
666 variables.put("unicodeFormatter", UnicodeFormatter_IW.getInstance());
667
668
669
670 variables.put("validator", Validator_IW.getInstance());
671
672
673
674 try {
675 Class<?> clazz = VelocityTaglibImpl.class;
676
677 Method method = clazz.getMethod(
678 "layoutIcon", new Class[] {Layout.class});
679
680 variables.put("velocityTaglib#layoutIcon", method);
681 }
682 catch (Exception e) {
683 _log.error(e, e);
684 }
685
686
687
688 try {
689 variables.put(
690 "webServerToken",
691 WebServerServletTokenUtil.getWebServerServletToken());
692 }
693 catch (SecurityException se) {
694 _log.error(se, se);
695 }
696
697
698
699 variables.put(
700 "windowStateFactory", WindowStateFactory_IW.getInstance());
701
702
703
704 try {
705 variables.put(
706 "accountPermission",
707 AccountPermissionUtil.getAccountPermission());
708 }
709 catch (SecurityException se) {
710 _log.error(se, se);
711 }
712
713 try {
714 variables.put(
715 "commonPermission", CommonPermissionUtil.getCommonPermission());
716 }
717 catch (SecurityException se) {
718 _log.error(se, se);
719 }
720
721 try {
722 variables.put(
723 "groupPermission", GroupPermissionUtil.getGroupPermission());
724 }
725 catch (SecurityException se) {
726 _log.error(se, se);
727 }
728
729 try {
730 variables.put(
731 "layoutPermission", LayoutPermissionUtil.getLayoutPermission());
732 }
733 catch (SecurityException se) {
734 _log.error(se, se);
735 }
736
737 try {
738 variables.put(
739 "organizationPermission",
740 OrganizationPermissionUtil.getOrganizationPermission());
741 }
742 catch (SecurityException se) {
743 _log.error(se, se);
744 }
745
746 try {
747 variables.put(
748 "passwordPolicyPermission",
749 PasswordPolicyPermissionUtil.getPasswordPolicyPermission());
750 }
751 catch (SecurityException se) {
752 _log.error(se, se);
753 }
754
755 try {
756 variables.put(
757 "portalPermission", PortalPermissionUtil.getPortalPermission());
758 }
759 catch (SecurityException se) {
760 _log.error(se, se);
761 }
762
763 try {
764 variables.put(
765 "portletPermission",
766 PortletPermissionUtil.getPortletPermission());
767 }
768 catch (SecurityException se) {
769 _log.error(se, se);
770 }
771
772 try {
773 variables.put(
774 "rolePermission", RolePermissionUtil.getRolePermission());
775 }
776 catch (SecurityException se) {
777 _log.error(se, se);
778 }
779
780 try {
781 variables.put(
782 "userGroupPermission",
783 UserGroupPermissionUtil.getUserGroupPermission());
784 }
785 catch (SecurityException se) {
786 _log.error(se, se);
787 }
788
789 try {
790 variables.put(
791 "userPermission", UserPermissionUtil.getUserPermission());
792 }
793 catch (SecurityException se) {
794 _log.error(se, se);
795 }
796
797
798
799 try {
800 variables.put(
801 "dateFormats",
802 FastDateFormatFactoryUtil.getFastDateFormatFactory());
803 }
804 catch (SecurityException se) {
805 _log.error(se, se);
806 }
807
808 try {
809 variables.put(
810 "imageToken",
811 WebServerServletTokenUtil.getWebServerServletToken());
812 }
813 catch (SecurityException se) {
814 _log.error(se, se);
815 }
816
817 try {
818 variables.put(
819 "locationPermission",
820 OrganizationPermissionUtil.getOrganizationPermission());
821 }
822 catch (SecurityException se) {
823 _log.error(se, se);
824 }
825 }
826
827 protected void populateExtraHelperUtilities(Map<String, Object> variables) {
828 }
829
830 protected void prepareTiles(Template template, HttpServletRequest request) {
831 ComponentContext componentContext =
832 (ComponentContext)request.getAttribute(
833 ComponentConstants.COMPONENT_CONTEXT);
834
835 if (componentContext == null) {
836 return;
837 }
838
839 ThemeDisplay themeDisplay = (ThemeDisplay)request.getAttribute(
840 WebKeys.THEME_DISPLAY);
841
842 String tilesTitle = (String)componentContext.getAttribute("title");
843
844 themeDisplay.setTilesTitle(tilesTitle);
845
846 template.put("tilesTitle", tilesTitle);
847
848 String tilesContent = (String)componentContext.getAttribute("content");
849
850 themeDisplay.setTilesContent(tilesContent);
851
852 template.put("tilesContent", tilesContent);
853
854 boolean tilesSelectable = GetterUtil.getBoolean(
855 (String)componentContext.getAttribute("selectable"));
856
857 themeDisplay.setTilesSelectable(tilesSelectable);
858
859 template.put("tilesSelectable", tilesSelectable);
860 }
861
862 private static Log _log = LogFactoryUtil.getLog(
863 TemplateContextHelper.class);
864
865 private static PACL _pacl = new NoPACL();
866
867 private Map<ClassLoader, HelperUtilitiesMap>
868 _helperUtilitiesMaps = new ConcurrentHashMap
869 <ClassLoader, HelperUtilitiesMap>();
870
871 private static class NoPACL implements PACL {
872
873 public TemplateControlContext getTemplateControlContext() {
874 ClassLoader contextClassLoader =
875 ClassLoaderUtil.getContextClassLoader();
876
877 return new TemplateControlContext(null, contextClassLoader);
878 }
879
880 }
881
882 public static interface PACL {
883
884 public TemplateControlContext getTemplateControlContext();
885
886 }
887
888 private class DoGetHelperUtilitiesPrivilegedAction
889 implements PrivilegedAction<Map<String, Object>> {
890
891 public DoGetHelperUtilitiesPrivilegedAction(
892 ClassLoader classLoader, TemplateContextType templateContextType) {
893
894 _classLoader = classLoader;
895 _templateContextType = templateContextType;
896 }
897
898 public Map<String, Object> run() {
899 return doGetHelperUtilities(_classLoader, _templateContextType);
900 }
901
902 private ClassLoader _classLoader;
903 private TemplateContextType _templateContextType;
904
905 }
906
907 private class HelperUtilitiesMap
908 extends EnumMap<TemplateContextType, Map<String, Object>> {
909
910 public HelperUtilitiesMap(Class<TemplateContextType> keyClazz) {
911 super(keyClazz);
912 }
913
914 }
915
916 }