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 <[email protected]> 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 "[email protected]" <[email protected]>.
