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 List<TemplateResource> templateResources, boolean restricted) {
037
038 return getTemplate(templateResources, null, restricted);
039 }
040
041 @NotPrivileged
042 @Override
043 public Template getTemplate(
044 List<TemplateResource> templateResources,
045 TemplateResource errorTemplateResource, boolean restricted) {
046
047 AccessControlContext accessControlContext = getAccessControlContext();
048
049 if (accessControlContext == null) {
050 return doGetTemplate(
051 templateResources, errorTemplateResource, restricted,
052 getHelperUtilities(restricted), false);
053 }
054
055 Map<String, Object> helperUtilities = AccessController.doPrivileged(
056 new DoGetHelperUtilitiesPrivilegedAction(
057 templateContextHelper, getTemplateControlContextClassLoader(),
058 restricted),
059 accessControlContext);
060
061 Template template = AccessController.doPrivileged(
062 new DoGetMultiTemplatePrivilegedAction(
063 templateResources, errorTemplateResource, restricted,
064 helperUtilities));
065
066 return new PrivilegedTemplateWrapper(accessControlContext, template);
067 }
068
069 @NotPrivileged
070 @Override
071 public Template getTemplate(
072 TemplateResource templateResource, boolean restricted) {
073
074 return getTemplate(
075 Collections.singletonList(templateResource), null, restricted);
076 }
077
078 @NotPrivileged
079 @Override
080 public Template getTemplate(
081 TemplateResource templateResource,
082 TemplateResource errorTemplateResource, boolean restricted) {
083
084 return getTemplate(
085 Collections.singletonList(templateResource), errorTemplateResource,
086 restricted);
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 }