This is an automated email from the ASF dual-hosted git repository. rombert pushed a commit to annotated tag org.apache.sling.scripting.thymeleaf-0.0.6 in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-thymeleaf.git
commit e8ad0e0b9529cddd2f3b39dadd0ed7388dd0d51c Author: Oliver Lietz <[email protected]> AuthorDate: Sun May 3 15:35:45 2015 +0000 SLING-4686 use ResourceResolver from ScriptContext/Bindings in SlingWebContext git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/scripting/thymeleaf@1677419 13f79535-47bb-0310-9956-ffa450edef68 --- .../thymeleaf/internal/SlingWebContext.java | 41 ++++++++++++---------- .../thymeleaf/internal/ThymeleafScriptEngine.java | 15 ++++++-- 2 files changed, 34 insertions(+), 22 deletions(-) diff --git a/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingWebContext.java b/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingWebContext.java index 9520858..88cbf49 100644 --- a/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingWebContext.java +++ b/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingWebContext.java @@ -35,11 +35,7 @@ import org.thymeleaf.context.VariablesMap; import org.thymeleaf.context.WebContextExecutionInfo; import org.thymeleaf.util.Validate; -public class SlingWebContext implements SlingContext, IWebContext { - - private final Locale locale; - - private final VariablesMap<String, Object> variables = new VariablesMap<String, Object>(); +public final class SlingWebContext implements SlingContext, IWebContext { private final SlingHttpServletRequest servletRequest; @@ -47,10 +43,17 @@ public class SlingWebContext implements SlingContext, IWebContext { private final ServletContext servletContext; - public SlingWebContext(final SlingHttpServletRequest servletRequest, final SlingHttpServletResponse servletResponse, final ServletContext servletContext, final Locale locale, final Map<String, ?> variables) { + private final ResourceResolver resourceResolver; + + private final Locale locale; + + private final VariablesMap<String, Object> variables = new VariablesMap<String, Object>(); + + public SlingWebContext(final SlingHttpServletRequest servletRequest, final SlingHttpServletResponse servletResponse, final ServletContext servletContext, final ResourceResolver resourceResolver, final Locale locale, final Map<String, ?> variables) { this.servletRequest = servletRequest; this.servletResponse = servletResponse; this.servletContext = servletContext; + this.resourceResolver = resourceResolver; this.locale = locale; this.variables.putAll(variables); } @@ -76,38 +79,38 @@ public class SlingWebContext implements SlingContext, IWebContext { } @Override - public VariablesMap<String, String[]> getRequestParameters() { - throw new UnsupportedOperationException("Deprecated method is not supported."); + public ResourceResolver getResourceResolver() { + return resourceResolver; } @Override - public VariablesMap<String, Object> getRequestAttributes() { - throw new UnsupportedOperationException("Deprecated method is not supported."); + public Locale getLocale() { + return locale; } @Override - public VariablesMap<String, Object> getSessionAttributes() { - throw new UnsupportedOperationException("Deprecated method is not supported."); + public VariablesMap<String, Object> getVariables() { + return variables; } @Override - public VariablesMap<String, Object> getApplicationAttributes() { + public VariablesMap<String, String[]> getRequestParameters() { throw new UnsupportedOperationException("Deprecated method is not supported."); } @Override - public ResourceResolver getResourceResolver() { - return servletRequest.getResourceResolver(); + public VariablesMap<String, Object> getRequestAttributes() { + throw new UnsupportedOperationException("Deprecated method is not supported."); } @Override - public VariablesMap<String, Object> getVariables() { - return variables; + public VariablesMap<String, Object> getSessionAttributes() { + throw new UnsupportedOperationException("Deprecated method is not supported."); } @Override - public Locale getLocale() { - return locale; + public VariablesMap<String, Object> getApplicationAttributes() { + throw new UnsupportedOperationException("Deprecated method is not supported."); } @Override diff --git a/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngine.java b/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngine.java index 1761946..055e80e 100644 --- a/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngine.java +++ b/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngine.java @@ -19,6 +19,7 @@ package org.apache.sling.scripting.thymeleaf.internal; import java.io.Reader; +import java.io.Writer; import java.util.Locale; import javax.script.Bindings; @@ -28,14 +29,16 @@ import javax.servlet.ServletContext; import org.apache.sling.api.SlingHttpServletRequest; import org.apache.sling.api.SlingHttpServletResponse; +import org.apache.sling.api.resource.ResourceResolver; import org.apache.sling.api.scripting.SlingBindings; +import org.apache.sling.api.scripting.SlingScriptConstants; import org.apache.sling.api.scripting.SlingScriptHelper; import org.apache.sling.scripting.api.AbstractSlingScriptEngine; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.thymeleaf.context.IContext; -public class ThymeleafScriptEngine extends AbstractSlingScriptEngine { +public final class ThymeleafScriptEngine extends AbstractSlingScriptEngine { private final ThymeleafScriptEngineFactory thymeleafScriptEngineFactory; @@ -59,12 +62,18 @@ public class ThymeleafScriptEngine extends AbstractSlingScriptEngine { final SlingHttpServletResponse response = helper.getResponse(); final ServletContext servletContext = null; // only used by Thymeleaf's ServletContextResourceResolver + ResourceResolver resourceResolver = (ResourceResolver) scriptContext.getAttribute(SlingScriptConstants.ATTR_SCRIPT_RESOURCE_RESOLVER, SlingScriptConstants.SLING_SCOPE); + if (resourceResolver == null) { + resourceResolver = helper.getScript().getScriptResource().getResourceResolver(); + } final Locale locale = helper.getResponse().getLocale(); + final String scriptName = helper.getScript().getScriptResource().getPath(); + final Writer writer = scriptContext.getWriter(); try { - final IContext context = new SlingWebContext(request, response, servletContext, locale, bindings); - thymeleafScriptEngineFactory.getTemplateEngine().process(scriptName, context, scriptContext.getWriter()); + final IContext context = new SlingWebContext(request, response, servletContext, resourceResolver, locale, bindings); + thymeleafScriptEngineFactory.getTemplateEngine().process(scriptName, context, writer); } catch (Exception e) { logger.error("Failure rendering Thymeleaf template '{}': {}", scriptName, e.getMessage()); throw new ScriptException(e); -- To stop receiving notification emails like this one, please contact "[email protected]" <[email protected]>.
