You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ol...@apache.org on 2015/05/03 17:35:45 UTC
svn commit: r1677419 - in
/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal:
SlingWebContext.java ThymeleafScriptEngine.java
Author: olli
Date: Sun May 3 15:35:45 2015
New Revision: 1677419
URL: http://svn.apache.org/r1677419
Log:
SLING-4686 use ResourceResolver from ScriptContext/Bindings in SlingWebContext
Modified:
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingWebContext.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngine.java
Modified: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingWebContext.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingWebContext.java?rev=1677419&r1=1677418&r2=1677419&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingWebContext.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingWebContext.java Sun May 3 15:35:45 2015
@@ -35,11 +35,7 @@ import org.thymeleaf.context.VariablesMa
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
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
}
@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
Modified: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngine.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngine.java?rev=1677419&r1=1677418&r2=1677419&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngine.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngine.java Sun May 3 15:35:45 2015
@@ -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 exten
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);