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.List;
025 import java.util.Map;
026
027
030 public abstract class BaseSingleTemplateManager extends BaseTemplateManager {
031
032 @NotPrivileged
033 @Override
034 public Template getTemplate(
035 List<TemplateResource> templateResources, boolean restricted) {
036
037 return getTemplate(templateResources, null, restricted);
038 }
039
040 @NotPrivileged
041 @Override
042 public Template getTemplate(
043 List<TemplateResource> templateResources,
044 TemplateResource errorTemplateResource, boolean restricted) {
045
046 throw new UnsupportedOperationException(
047 "Template type does not support multi templates");
048 }
049
050 @NotPrivileged
051 @Override
052 public Template getTemplate(
053 TemplateResource templateResource, boolean restricted) {
054
055 return getTemplate(templateResource, null, restricted);
056 }
057
058 @NotPrivileged
059 @Override
060 public Template getTemplate(
061 TemplateResource templateResource,
062 TemplateResource errorTemplateResource, boolean restricted) {
063
064 AccessControlContext accessControlContext = getAccessControlContext();
065
066 if (accessControlContext == null) {
067 return doGetTemplate(
068 templateResource, errorTemplateResource, restricted,
069 getHelperUtilities(restricted), false);
070 }
071
072 Map<String, Object> helperUtilities = AccessController.doPrivileged(
073 new DoGetHelperUtilitiesPrivilegedAction(
074 templateContextHelper, getTemplateControlContextClassLoader(),
075 restricted),
076 accessControlContext);
077
078 Template template = AccessController.doPrivileged(
079 new DoGetSingleTemplatePrivilegedAction(
080 templateResource, errorTemplateResource, restricted,
081 helperUtilities));
082
083 return new PrivilegedTemplateWrapper(accessControlContext, template);
084 }
085
086 protected abstract Template doGetTemplate(
087 TemplateResource templateResource,
088 TemplateResource errorTemplateResource, boolean restricted,
089 Map<String, Object> helperUtilities, boolean privileged);
090
091 protected class DoGetSingleTemplatePrivilegedAction
092 extends DoGetAbstractTemplatePrivilegedAction {
093
094 public DoGetSingleTemplatePrivilegedAction(
095 TemplateResource templateResource,
096 TemplateResource errorTemplateResource, boolean restricted,
097 Map<String, Object> helperUtilities) {
098
099 super(errorTemplateResource, restricted, helperUtilities);
100 _templateResource = templateResource;
101 }
102
103 @Override
104 public Template run() {
105 return doGetTemplate(
106 _templateResource, errorTemplateResource, restricted,
107 helperUtilities, true);
108 }
109
110 private final TemplateResource _templateResource;
111
112 }
113
114 }