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