001
014
015 package com.liferay.portal.template;
016
017 import com.liferay.portal.kernel.security.pacl.NotPrivileged;
018 import com.liferay.portal.kernel.template.Template;
019 import com.liferay.portal.kernel.template.TemplateResource;
020
021 import java.security.AccessControlContext;
022 import java.security.AccessController;
023
024 import java.util.Collections;
025 import java.util.List;
026 import java.util.Map;
027
028
031 public abstract class BaseMultiTemplateManager extends BaseTemplateManager {
032
033 @NotPrivileged
034 @Override
035 public Template getTemplate(
036 TemplateResource templateResource, boolean restricted) {
037
038 return getTemplates(
039 Collections.singletonList(templateResource), null, restricted);
040 }
041
042 @NotPrivileged
043 @Override
044 public Template getTemplate(
045 TemplateResource templateResource,
046 TemplateResource errorTemplateResource, boolean restricted) {
047
048 return getTemplates(
049 Collections.singletonList(templateResource), errorTemplateResource,
050 restricted);
051 }
052
053 @NotPrivileged
054 @Override
055 public Template getTemplates(
056 List<TemplateResource> templateResources, boolean restricted) {
057
058 return getTemplates(templateResources, null, restricted);
059 }
060
061 @NotPrivileged
062 @Override
063 public Template getTemplates(
064 List<TemplateResource> templateResources,
065 TemplateResource errorTemplateResource, boolean restricted) {
066
067 AccessControlContext accessControlContext = getAccessControlContext();
068
069 if (accessControlContext == null) {
070 return doGetTemplate(
071 templateResources, errorTemplateResource, restricted,
072 getHelperUtilities(restricted), false);
073 }
074
075 Map<String, Object> helperUtilities = AccessController.doPrivileged(
076 new DoGetHelperUtilitiesPrivilegedAction(
077 templateContextHelper, getTemplateControlContextClassLoader(),
078 restricted),
079 accessControlContext);
080
081 Template template = AccessController.doPrivileged(
082 new DoGetMultiTemplatePrivilegedAction(
083 templateResources, errorTemplateResource, restricted,
084 helperUtilities));
085
086 return new PrivilegedTemplateWrapper(accessControlContext, template);
087 }
088
089 protected abstract Template doGetTemplate(
090 List<TemplateResource> templateResources,
091 TemplateResource errorTemplateResource, boolean restricted,
092 Map<String, Object> helperUtilities, boolean privileged);
093
094 protected class DoGetMultiTemplatePrivilegedAction
095 extends DoGetAbstractTemplatePrivilegedAction {
096
097 public DoGetMultiTemplatePrivilegedAction(
098 List<TemplateResource> templateResources,
099 TemplateResource errorTemplateResource, boolean restricted,
100 Map<String, Object> helperUtilities) {
101
102 super(errorTemplateResource, restricted, helperUtilities);
103 _templateResources = templateResources;
104 }
105
106 @Override
107 public Template run() {
108 return doGetTemplate(
109 _templateResources, errorTemplateResource, restricted,
110 helperUtilities, true);
111 }
112
113 private final List<TemplateResource> _templateResources;
114
115 }
116
117 }