You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ro...@apache.org on 2017/11/07 10:13:02 UTC
[sling-org-apache-sling-scripting-thymeleaf] 19/27: SLING-4686 use
ResourceResolver from ScriptContext/Bindings in SlingWebContext
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 <ol...@apache.org>
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
"commits@sling.apache.org" <co...@sling.apache.org>.