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:12:21 UTC
[sling-org-apache-sling-scripting-thymeleaf] 05/17: SLING-3649 fix
issue with fragments (use Sling's ResourceResolver instead of supplied
Reader)
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.2
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-thymeleaf.git
commit 11ea14289d83b8338e70fec2f292a493f6f9bf65
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Wed Jun 11 20:20:22 2014 +0000
SLING-3649 fix issue with fragments (use Sling's ResourceResolver instead of supplied Reader)
git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/scripting/thymeleaf@1602004 13f79535-47bb-0310-9956-ffa450edef68
---
.../apache/sling/scripting/thymeleaf/SlingContext.java | 5 ++---
.../sling/scripting/thymeleaf/SlingWebContext.java | 11 ++++-------
.../scripting/thymeleaf/ThymeleafScriptEngine.java | 4 ++--
...ResourceResolver.java => SlingResourceResolver.java} | 17 +++++++++++------
4 files changed, 19 insertions(+), 18 deletions(-)
diff --git a/src/main/java/org/apache/sling/scripting/thymeleaf/SlingContext.java b/src/main/java/org/apache/sling/scripting/thymeleaf/SlingContext.java
index a4fc418..18e6763 100644
--- a/src/main/java/org/apache/sling/scripting/thymeleaf/SlingContext.java
+++ b/src/main/java/org/apache/sling/scripting/thymeleaf/SlingContext.java
@@ -18,12 +18,11 @@
*/
package org.apache.sling.scripting.thymeleaf;
-import java.io.Reader;
-
+import org.apache.sling.api.resource.ResourceResolver;
import org.thymeleaf.context.IContext;
public interface SlingContext extends IContext {
- Reader getReader();
+ ResourceResolver getResourceResolver();
}
diff --git a/src/main/java/org/apache/sling/scripting/thymeleaf/SlingWebContext.java b/src/main/java/org/apache/sling/scripting/thymeleaf/SlingWebContext.java
index afbdfd8..a5e206d 100644
--- a/src/main/java/org/apache/sling/scripting/thymeleaf/SlingWebContext.java
+++ b/src/main/java/org/apache/sling/scripting/thymeleaf/SlingWebContext.java
@@ -18,7 +18,6 @@
*/
package org.apache.sling.scripting.thymeleaf;
-import java.io.Reader;
import java.util.Calendar;
import java.util.Locale;
import java.util.Map;
@@ -28,6 +27,7 @@ import javax.servlet.http.HttpSession;
import org.apache.sling.api.SlingHttpServletRequest;
import org.apache.sling.api.SlingHttpServletResponse;
+import org.apache.sling.api.resource.ResourceResolver;
import org.thymeleaf.context.AbstractContext;
import org.thymeleaf.context.IWebContext;
import org.thymeleaf.context.VariablesMap;
@@ -46,15 +46,12 @@ public class SlingWebContext implements SlingContext, IWebContext {
private final ServletContext servletContext;
- private final Reader reader;
-
- public SlingWebContext(final SlingHttpServletRequest servletRequest, final SlingHttpServletResponse servletResponse, final ServletContext servletContext, final Locale locale, final Map<String, ?> variables, final Reader reader) {
+ public SlingWebContext(final SlingHttpServletRequest servletRequest, final SlingHttpServletResponse servletResponse, final ServletContext servletContext, final Locale locale, final Map<String, ?> variables) {
this.servletRequest = servletRequest;
this.servletResponse = servletResponse;
this.servletContext = servletContext;
this.locale = locale;
this.variables.putAll(variables);
- this.reader = reader;
}
@Override
@@ -98,8 +95,8 @@ public class SlingWebContext implements SlingContext, IWebContext {
}
@Override
- public Reader getReader() {
- return reader;
+ public ResourceResolver getResourceResolver() {
+ return servletRequest.getResourceResolver();
}
@Override
diff --git a/src/main/java/org/apache/sling/scripting/thymeleaf/ThymeleafScriptEngine.java b/src/main/java/org/apache/sling/scripting/thymeleaf/ThymeleafScriptEngine.java
index 91d4916..d3de614 100644
--- a/src/main/java/org/apache/sling/scripting/thymeleaf/ThymeleafScriptEngine.java
+++ b/src/main/java/org/apache/sling/scripting/thymeleaf/ThymeleafScriptEngine.java
@@ -47,7 +47,7 @@ public class ThymeleafScriptEngine extends AbstractSlingScriptEngine {
}
@Override
- public Object eval(Reader reader, ScriptContext scriptContext) throws ScriptException {
+ public Object eval(final Reader reader, final ScriptContext scriptContext) throws ScriptException {
final Bindings bindings = scriptContext.getBindings(ScriptContext.ENGINE_SCOPE);
final SlingScriptHelper helper = (SlingScriptHelper) bindings.get(SlingBindings.SLING);
@@ -63,7 +63,7 @@ public class ThymeleafScriptEngine extends AbstractSlingScriptEngine {
final String scriptName = helper.getScript().getScriptResource().getPath();
try {
- final IContext context = new SlingWebContext(request, response, servletContext, locale, bindings, reader);
+ final IContext context = new SlingWebContext(request, response, servletContext, locale, bindings);
thymeleafScriptEngineFactory.getTemplateEngine().process(scriptName, context, scriptContext.getWriter());
} catch (Exception e) {
logger.error("Failure rendering Thymeleaf template '{}': {}", scriptName, e.getMessage());
diff --git a/src/main/java/org/apache/sling/scripting/thymeleaf/impl/ScriptReaderResourceResolver.java b/src/main/java/org/apache/sling/scripting/thymeleaf/impl/SlingResourceResolver.java
similarity index 79%
rename from src/main/java/org/apache/sling/scripting/thymeleaf/impl/ScriptReaderResourceResolver.java
rename to src/main/java/org/apache/sling/scripting/thymeleaf/impl/SlingResourceResolver.java
index 661ed9e..68f4475 100644
--- a/src/main/java/org/apache/sling/scripting/thymeleaf/impl/ScriptReaderResourceResolver.java
+++ b/src/main/java/org/apache/sling/scripting/thymeleaf/impl/SlingResourceResolver.java
@@ -20,13 +20,13 @@ package org.apache.sling.scripting.thymeleaf.impl;
import java.io.InputStream;
-import org.apache.commons.io.input.ReaderInputStream;
import org.apache.felix.scr.annotations.Component;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
import org.apache.felix.scr.annotations.Service;
+import org.apache.sling.api.resource.Resource;
+import org.apache.sling.api.resource.ResourceResolver;
import org.apache.sling.scripting.thymeleaf.SlingContext;
-import org.apache.sling.scripting.thymeleaf.ThymeleafScriptEngineFactory;
import org.osgi.framework.Constants;
import org.thymeleaf.TemplateProcessingParameters;
import org.thymeleaf.context.IContext;
@@ -36,17 +36,20 @@ import org.thymeleaf.util.Validate;
@Component(
label = "Apache Sling Scripting Thymeleaf “Script Reader Resource Resolver”",
- description = "script reader resource resolver for Sling Scripting Thymeleaf",
+ description = "Sling resource resolver for Sling Scripting Thymeleaf",
immediate = true,
metatype = true
)
@Service
@Properties({
@Property(name = Constants.SERVICE_VENDOR, value = "The Apache Software Foundation"),
- @Property(name = Constants.SERVICE_DESCRIPTION, value = "script reader resource resolver for Sling Scripting Thymeleaf"),
+ @Property(name = Constants.SERVICE_DESCRIPTION, value = "Sling resource resolver for Sling Scripting Thymeleaf"),
@Property(name = Constants.SERVICE_RANKING, intValue = 0, propertyPrivate = false)
})
-public class ScriptReaderResourceResolver implements IResourceResolver {
+public class SlingResourceResolver implements IResourceResolver {
+
+ public SlingResourceResolver() {
+ }
@Override
public String getName() {
@@ -61,7 +64,9 @@ public class ScriptReaderResourceResolver implements IResourceResolver {
final IContext context = templateProcessingParameters.getContext();
if (context instanceof SlingContext) {
final SlingContext slingContext = (SlingContext) context;
- return new ReaderInputStream(slingContext.getReader(), ThymeleafScriptEngineFactory.TEMPLATE_CHARSET);
+ final ResourceResolver resourceResolver = slingContext.getResourceResolver();
+ final Resource resource = resourceResolver.getResource(resourceName);
+ return resource.adaptTo(InputStream.class);
} else {
throw new TemplateProcessingException("Cannot handle context: " + context.getClass().getName());
}
--
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.