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>.