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/09/29 16:13:45 UTC
svn commit: r1705867 - in /sling/trunk/contrib/scripting/thymeleaf: ./
src/main/java/org/apache/sling/scripting/thymeleaf/
src/main/java/org/apache/sling/scripting/thymeleaf/internal/
src/main/java/org/apache/sling/scripting/thymeleaf/internal/dialect/...
Author: olli
Date: Tue Sep 29 14:13:44 2015
New Revision: 1705867
URL: http://svn.apache.org/viewvc?rev=1705867&view=rev
Log:
SLING-5075 upgrade Thymeleaf to 3.0
* use Thymeleaf 3.0.0.ALPHA03 and adjust dependencies
* refactor and use new Thymeleaf APIs
Added:
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/DefaultSlingContext.java
- copied, changed from r1705866, 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/processor/SlingAddSelectorsAttributeProcessor.java
- copied, changed from r1704832, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingAddSelectorsAttrProcessor.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingHtmlAttributeTagProcessor.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingIncludeAttributeTagProcessor.java
- copied, changed from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingIncludeAttrProcessor.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingLocalVariableAttributeTagProcessor.java
- copied, changed from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingNodePropertyAttrProcessor.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingReplaceSelectorsAttributeTagProcessor.java
- copied, changed from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingReplaceSelectorsAttrProcessor.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingReplaceSuffixAttributeTagProcessor.java
- copied, changed from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingReplaceSuffixAttrProcessor.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingResourceTypeAttributeTagProcessor.java
- copied, changed from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingResourceTypeAttrProcessor.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingUnwrapAttributeTagProcessor.java
- copied, changed from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingUnwrapAttrProcessor.java
Removed:
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/SlingTemplateModeHandler.java
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/dom/
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/templatemodehandler/
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/thymeleaf/
Modified:
sling/trunk/contrib/scripting/thymeleaf/README.md
sling/trunk/contrib/scripting/thymeleaf/pom.xml
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/NonCachingTemplateResolver.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ResourceBundleMessageResolver.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingResourceResolver.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngine.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/dialect/SlingDialect.java
sling/trunk/contrib/scripting/thymeleaf/src/main/resources/OSGI-INF/metatype/metatype.properties
Modified: sling/trunk/contrib/scripting/thymeleaf/README.md
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/README.md?rev=1705867&r1=1705866&r2=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/README.md (original)
+++ sling/trunk/contrib/scripting/thymeleaf/README.md Tue Sep 29 14:13:44 2015
@@ -6,8 +6,7 @@ scripting engine for [_Thymeleaf_](http:
Features
--------
-* out of the box support for _legacy_ HTML5 through embedded _NekoHTML_
-* runtime configurable `TemplateModeHandler`s for _XML_, _VALIDXML_, _XHTML_, _VALIDXHTML_, _HTML5_ and _LEGACYHTML5_
+* simple non-caching `TemplateResolver` supporting `PatternSpec` configurations for all template modes (`HTML`, `XML`, `TEXT`, `JAVASCRIPT`, `CSS`)
* `ResourceResolver` backed by Sling's `ResourceResolver`
* `MessageResolver` backed by `ResourceBundleProvider` from `org.apache.sling.i18n`
* `SlingDialect`
@@ -20,8 +19,6 @@ For running Sling Scripting Thymeleaf wi
mvn:org.apache.sling/org.apache.sling.i18n/2.2.10
mvn:org.javassist/javassist/3.18.2-GA
mvn:commons-io/commons-io/2.4
- mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xerces/2.11.0_1
- mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.xmlresolver/1.2_5
There is a feature for Karaf:
@@ -33,3 +30,4 @@ relevant Thymeleaf issues
* [Create OSGi bundle](https://github.com/thymeleaf/thymeleaf/issues/32)
* [Remove initialize() steps in extension points](https://github.com/thymeleaf/thymeleaf/issues/54)
+* [keep (custom) IContext accessible](https://github.com/thymeleaf/thymeleaf/issues/388)
Modified: sling/trunk/contrib/scripting/thymeleaf/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/pom.xml?rev=1705867&r1=1705866&r2=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/pom.xml (original)
+++ sling/trunk/contrib/scripting/thymeleaf/pom.xml Tue Sep 29 14:13:44 2015
@@ -29,7 +29,7 @@
</parent>
<artifactId>org.apache.sling.scripting.thymeleaf</artifactId>
- <version>0.0.7-SNAPSHOT</version>
+ <version>0.1.7-SNAPSHOT</version>
<packaging>bundle</packaging>
<name>Apache Sling Scripting Thymeleaf</name>
@@ -38,6 +38,10 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
+ <org.thymeleaf.version>3.0.0.ALPHA03</org.thymeleaf.version>
+ <org.attoparser.version>2.0.0.BETA3</org.attoparser.version>
+ <org.unbescape.version>1.1.1.RELEASE</org.unbescape.version>
+ <ognl.version>3.1</ognl.version>
</properties>
<scm>
@@ -119,33 +123,27 @@
<dependency>
<groupId>org.thymeleaf</groupId>
<artifactId>thymeleaf</artifactId>
- <version>2.1.4.RELEASE</version>
+ <version>${org.thymeleaf.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>org.unbescape</groupId>
- <artifactId>unbescape</artifactId>
- <version>1.1.0.RELEASE</version>
+ <groupId>org.attoparser</groupId>
+ <artifactId>attoparser</artifactId>
+ <version>${org.attoparser.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
- <groupId>net.sourceforge.nekohtml</groupId>
- <artifactId>nekohtml</artifactId>
- <version>1.9.21</version>
+ <groupId>org.unbescape</groupId>
+ <artifactId>unbescape</artifactId>
+ <version>${org.unbescape.version}</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>ognl</groupId>
<artifactId>ognl</artifactId>
- <version>3.0.8</version>
+ <version>${ognl.version}</version>
<scope>compile</scope>
</dependency>
- <dependency>
- <groupId>xerces</groupId>
- <artifactId>xercesImpl</artifactId>
- <version>2.11.0</version>
- <scope>provided</scope>
- </dependency>
<!-- logging -->
<dependency>
<groupId>org.slf4j</groupId>
@@ -174,7 +172,10 @@
<instructions>
<Export-Package>
org.apache.sling.scripting.thymeleaf,
- org.thymeleaf.*;version="2.1.4.RELEASE"
+ org.thymeleaf.*;version=${org.thymeleaf.version},
+ org.attoparser.*;version=${org.attoparser.version},
+ org.unbescape.*;version=${org.unbescape.version},
+ ognl.*;version=${ognl.version}
</Export-Package>
<Import-Package>
org.apache.commons.io.input;version="1.4.9999",
@@ -184,7 +185,7 @@
*
</DynamicImport-Package>
<Embed-Dependency>
- *;scope=compile;inline=true;inline=!**/AbstractHtmlTemplateParser*.class
+ *;scope=compile;inline=true
</Embed-Dependency>
<ScriptEngine-Name>${project.name}</ScriptEngine-Name>
<ScriptEngine-Version>${project.version}</ScriptEngine-Version>
Copied: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/DefaultSlingContext.java (from r1705866, 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/DefaultSlingContext.java?p2=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/DefaultSlingContext.java&p1=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingWebContext.java&r1=1705866&r2=1705867&rev=1705867&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/DefaultSlingContext.java Tue Sep 29 14:13:44 2015
@@ -18,64 +18,20 @@
*/
package org.apache.sling.scripting.thymeleaf.internal;
-import java.util.Calendar;
import java.util.Locale;
import java.util.Map;
-import javax.servlet.ServletContext;
-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.apache.sling.scripting.thymeleaf.SlingContext;
import org.thymeleaf.context.AbstractContext;
-import org.thymeleaf.context.IWebContext;
-import org.thymeleaf.context.VariablesMap;
-import org.thymeleaf.context.WebContextExecutionInfo;
-import org.thymeleaf.util.Validate;
-
-public final class SlingWebContext implements SlingContext, IWebContext {
-
- private final SlingHttpServletRequest servletRequest;
- private final SlingHttpServletResponse servletResponse;
-
- private final ServletContext servletContext;
+public final class DefaultSlingContext extends AbstractContext implements SlingContext {
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;
+ public DefaultSlingContext(final ResourceResolver resourceResolver, final Locale locale, final Map<String, Object> variables) {
+ super(locale, variables);
this.resourceResolver = resourceResolver;
- this.locale = locale;
- this.variables.putAll(variables);
- }
-
- @Override
- public SlingHttpServletRequest getHttpServletRequest() {
- return servletRequest;
- }
-
- @Override
- public SlingHttpServletResponse getHttpServletResponse() {
- return servletResponse;
- }
-
- @Override
- public HttpSession getHttpSession() {
- return servletRequest.getSession(false);
- }
-
- @Override
- public ServletContext getServletContext() {
- return servletContext;
}
@Override
@@ -83,42 +39,4 @@ public final class SlingWebContext imple
return resourceResolver;
}
- @Override
- public Locale getLocale() {
- return locale;
- }
-
- @Override
- public VariablesMap<String, Object> getVariables() {
- return variables;
- }
-
- @Override
- public VariablesMap<String, String[]> getRequestParameters() {
- throw new UnsupportedOperationException("Deprecated method is not supported.");
- }
-
- @Override
- public VariablesMap<String, Object> getRequestAttributes() {
- throw new UnsupportedOperationException("Deprecated method is not supported.");
- }
-
- @Override
- public VariablesMap<String, Object> getSessionAttributes() {
- throw new UnsupportedOperationException("Deprecated method is not supported.");
- }
-
- @Override
- public VariablesMap<String, Object> getApplicationAttributes() {
- throw new UnsupportedOperationException("Deprecated method is not supported.");
- }
-
- @Override
- public void addContextExecutionInfo(String templateName) {
- Validate.notEmpty(templateName, "Template name cannot be null or empty");
- final Calendar now = Calendar.getInstance();
- final WebContextExecutionInfo webContextExecutionInfo = new WebContextExecutionInfo(templateName, now);
- variables.put(AbstractContext.EXEC_INFO_VARIABLE_NAME, webContextExecutionInfo);
- }
-
}
Modified: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/NonCachingTemplateResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/NonCachingTemplateResolver.java?rev=1705867&r1=1705866&r2=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/NonCachingTemplateResolver.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/NonCachingTemplateResolver.java Tue Sep 29 14:13:44 2015
@@ -18,8 +18,9 @@
*/
package org.apache.sling.scripting.thymeleaf.internal;
+import java.util.Collections;
import java.util.Dictionary;
-import java.util.LinkedHashSet;
+import java.util.HashSet;
import java.util.Set;
import org.apache.felix.scr.annotations.Activate;
@@ -28,22 +29,23 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Modified;
import org.apache.felix.scr.annotations.Properties;
import org.apache.felix.scr.annotations.Property;
+import org.apache.felix.scr.annotations.PropertyUnbounded;
import org.apache.felix.scr.annotations.Reference;
-import org.apache.felix.scr.annotations.ReferenceCardinality;
-import org.apache.felix.scr.annotations.ReferencePolicy;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.commons.osgi.PropertiesUtil;
-import org.apache.sling.scripting.thymeleaf.SlingTemplateModeHandler;
import org.osgi.framework.Constants;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.thymeleaf.TemplateProcessingParameters;
+import org.thymeleaf.IEngineConfiguration;
+import org.thymeleaf.cache.ICacheEntryValidity;
+import org.thymeleaf.cache.NonCacheableCacheEntryValidity;
+import org.thymeleaf.context.IContext;
import org.thymeleaf.resourceresolver.IResourceResolver;
-import org.thymeleaf.templateresolver.ITemplateResolutionValidity;
+import org.thymeleaf.templatemode.TemplateMode;
import org.thymeleaf.templateresolver.ITemplateResolver;
-import org.thymeleaf.templateresolver.NonCacheableTemplateResolutionValidity;
import org.thymeleaf.templateresolver.TemplateResolution;
+import org.thymeleaf.util.PatternSpec;
@Component(
label = "Apache Sling Scripting Thymeleaf âNon-Caching Template Resolverâ",
@@ -53,17 +55,20 @@ import org.thymeleaf.templateresolver.Te
)
@Service
@Properties({
- @Property(name = Constants.SERVICE_VENDOR, value = "The Apache Software Foundation"),
- @Property(name = Constants.SERVICE_DESCRIPTION, value = "non-caching template resolver for Sling Scripting Thymeleaf")
+ @Property(
+ name = Constants.SERVICE_VENDOR,
+ value = "The Apache Software Foundation"
+ ),
+ @Property(
+ name = Constants.SERVICE_DESCRIPTION,
+ value = "non-caching template resolver for Sling Scripting Thymeleaf"
+ )
})
public class NonCachingTemplateResolver implements ITemplateResolver {
@Reference
private IResourceResolver resourceResolver;
- @Reference(referenceInterface = SlingTemplateModeHandler.class, cardinality = ReferenceCardinality.MANDATORY_MULTIPLE, policy = ReferencePolicy.DYNAMIC)
- private final Set<SlingTemplateModeHandler> templateModeHandlers = new LinkedHashSet<SlingTemplateModeHandler>();
-
private Integer order;
public static final int DEFAULT_ORDER = 0;
@@ -78,6 +83,31 @@ public class NonCachingTemplateResolver
@Property(value = DEFAULT_ENCODING)
public static final String ENCODING_PARAMETER = "org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.encoding";
+ private final PatternSpec htmlPatternSpec = new PatternSpec();
+
+ @Property(unbounded = PropertyUnbounded.ARRAY)
+ public static final String HTML_PATTERNS_PARAMETER = "org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.htmlPatterns";
+
+ private final PatternSpec xmlPatternSpec = new PatternSpec();
+
+ @Property(unbounded = PropertyUnbounded.ARRAY)
+ public static final String XML_PATTERNS_PARAMETER = "org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.xmlPatterns";
+
+ private final PatternSpec textPatternSpec = new PatternSpec();
+
+ @Property(unbounded = PropertyUnbounded.ARRAY)
+ public static final String TEXT_PATTERNS_PARAMETER = "org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.textPatterns";
+
+ private final PatternSpec javascriptPatternSpec = new PatternSpec();
+
+ @Property(unbounded = PropertyUnbounded.ARRAY)
+ public static final String JAVASCRIPT_PATTERNS_PARAMETER = "org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.javascriptPatterns";
+
+ private final PatternSpec cssPatternSpec = new PatternSpec();
+
+ @Property(unbounded = PropertyUnbounded.ARRAY)
+ public static final String CSS_PATTERNS_PARAMETER = "org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.cssPatterns";
+
private final Logger logger = LoggerFactory.getLogger(NonCachingTemplateResolver.class);
public NonCachingTemplateResolver() {
@@ -100,20 +130,31 @@ public class NonCachingTemplateResolver
logger.debug("deactivate");
}
- protected synchronized void bindTemplateModeHandlers(final SlingTemplateModeHandler templateModeHandler) {
- logger.debug("binding template mode handler '{}'", templateModeHandler.getTemplateModeName());
- templateModeHandlers.add(templateModeHandler);
- }
-
- protected synchronized void unbindTemplateModeHandlers(final SlingTemplateModeHandler templateModeHandler) {
- logger.debug("unbinding template mode handler '{}'", templateModeHandler.getTemplateModeName());
- templateModeHandlers.remove(templateModeHandler);
- }
-
private void configure(final ComponentContext componentContext) {
final Dictionary properties = componentContext.getProperties();
order = PropertiesUtil.toInteger(properties.get(ORDER_PARAMETER), DEFAULT_ORDER);
encoding = PropertiesUtil.toString(properties.get(ENCODING_PARAMETER), DEFAULT_ENCODING);
+ // HTML
+ final String[] htmlPatterns = PropertiesUtil.toStringArray(properties.get(HTML_PATTERNS_PARAMETER), new String[]{});
+ setPatterns(htmlPatterns, htmlPatternSpec);
+ // XML
+ final String[] xmlPatterns = PropertiesUtil.toStringArray(properties.get(XML_PATTERNS_PARAMETER), new String[]{});
+ setPatterns(xmlPatterns, htmlPatternSpec);
+ // TEXT
+ final String[] textPatterns = PropertiesUtil.toStringArray(properties.get(TEXT_PATTERNS_PARAMETER), new String[]{});
+ setPatterns(textPatterns, textPatternSpec);
+ // JAVASCRIPT
+ final String[] javascriptPatterns = PropertiesUtil.toStringArray(properties.get(JAVASCRIPT_PATTERNS_PARAMETER), new String[]{});
+ setPatterns(javascriptPatterns, javascriptPatternSpec);
+ // CSS
+ final String[] cssPatterns = PropertiesUtil.toStringArray(properties.get(CSS_PATTERNS_PARAMETER), new String[]{});
+ setPatterns(cssPatterns, cssPatternSpec);
+ }
+
+ private void setPatterns(final String[] strings, final PatternSpec patternSpec) {
+ final Set<String> set = new HashSet<String>();
+ Collections.addAll(set, strings);
+ patternSpec.setPatterns(set);
}
@Override
@@ -127,27 +168,35 @@ public class NonCachingTemplateResolver
}
@Override
- public TemplateResolution resolveTemplate(TemplateProcessingParameters templateProcessingParameters) {
- final String templateName = templateProcessingParameters.getTemplateName();
- final String resourceName = templateName; // TODO
+ public TemplateResolution resolveTemplate(final IEngineConfiguration configuration, final IContext context, final String templateName) {
+ final String resourceName = templateName;
final String characterEncoding = encoding;
- final String templateMode = computeTemplateMode(templateName);
- final ITemplateResolutionValidity validity = new NonCacheableTemplateResolutionValidity();
- return new TemplateResolution(templateName, resourceName, resourceResolver, characterEncoding, templateMode, validity);
- }
-
- @Override
- public void initialize() {
+ final TemplateMode templateMode = computeTemplateMode(templateName);
+ final ICacheEntryValidity cacheEntryValidity = new NonCacheableCacheEntryValidity();
+ if (templateMode != null) {
+ logger.debug("using template mode '{}' for template '{}'", templateMode, templateName);
+ return new TemplateResolution(templateName, resourceName, resourceResolver, characterEncoding, templateMode, cacheEntryValidity);
+ } else {
+ logger.warn("no template mode for template '{}'", templateName);
+ return null; // will fail at caller
+ }
}
- protected String computeTemplateMode(final String templateName) {
- for (final SlingTemplateModeHandler templateModeHandler : templateModeHandlers) {
- final String templateMode = templateModeHandler.getTemplateModeName();
- logger.debug("template mode handler '{}' with patterns {}", templateMode, templateModeHandler.getPatternSpec().getPatterns());
- if (templateModeHandler.getPatternSpec().matches(templateName)) {
- logger.debug("using template mode '{}' for template '{}'", templateMode, templateName);
- return templateMode;
- }
+ private TemplateMode computeTemplateMode(final String templateName) {
+ if (htmlPatternSpec.matches(templateName)) {
+ return TemplateMode.HTML;
+ }
+ if (xmlPatternSpec.matches(templateName)) {
+ return TemplateMode.XML;
+ }
+ if (textPatternSpec.matches(templateName)) {
+ return TemplateMode.TEXT;
+ }
+ if (javascriptPatternSpec.matches(templateName)) {
+ return TemplateMode.JAVASCRIPT;
+ }
+ if (cssPatternSpec.matches(templateName)) {
+ return TemplateMode.CSS;
}
return null;
}
Modified: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ResourceBundleMessageResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ResourceBundleMessageResolver.java?rev=1705867&r1=1705866&r2=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ResourceBundleMessageResolver.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ResourceBundleMessageResolver.java Tue Sep 29 14:13:44 2015
@@ -37,8 +37,7 @@ import org.osgi.framework.Constants;
import org.osgi.service.component.ComponentContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.thymeleaf.Arguments;
-import org.thymeleaf.context.IContext;
+import org.thymeleaf.context.ITemplateProcessingContext;
import org.thymeleaf.messageresolver.IMessageResolver;
import org.thymeleaf.messageresolver.MessageResolution;
@@ -105,10 +104,9 @@ public class ResourceBundleMessageResolv
}
@Override
- public MessageResolution resolveMessage(final Arguments arguments, final String key, final Object[] messageParameters) {
- logger.debug("arguments: {}, key: {}, message parameters: {}", arguments, key, messageParameters);
- final IContext context = arguments.getContext();
- final Locale locale = context.getLocale();
+ public MessageResolution resolveMessage(final ITemplateProcessingContext processingContext, final String key, final Object[] messageParameters) {
+ logger.debug("processingContext: {}, key: {}, message parameters: {}", processingContext, key, messageParameters);
+ final Locale locale = processingContext.getLocale();
final ResourceBundle resourceBundle = resourceBundleProvider.getResourceBundle(locale);
final String string = resourceBundle.getString(key);
final MessageFormat messageFormat = new MessageFormat(string, locale);
@@ -116,8 +114,4 @@ public class ResourceBundleMessageResolv
return new MessageResolution(message);
}
- @Override
- public void initialize() {
- }
-
}
Modified: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingResourceResolver.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingResourceResolver.java?rev=1705867&r1=1705866&r2=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingResourceResolver.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/SlingResourceResolver.java Tue Sep 29 14:13:44 2015
@@ -18,19 +18,25 @@
*/
package org.apache.sling.scripting.thymeleaf.internal;
+import java.io.IOException;
import java.io.InputStream;
+import org.apache.commons.io.IOUtils;
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.api.scripting.SlingScriptConstants;
import org.apache.sling.scripting.thymeleaf.SlingContext;
import org.osgi.framework.Constants;
-import org.thymeleaf.TemplateProcessingParameters;
+import org.thymeleaf.IEngineConfiguration;
import org.thymeleaf.context.IContext;
+import org.thymeleaf.context.IWebVariablesMap;
import org.thymeleaf.exceptions.TemplateProcessingException;
+import org.thymeleaf.resource.CharArrayResource;
+import org.thymeleaf.resource.IResource;
import org.thymeleaf.resourceresolver.IResourceResolver;
import org.thymeleaf.util.Validate;
@@ -57,18 +63,32 @@ public class SlingResourceResolver imple
}
@Override
- public InputStream getResourceAsStream(final TemplateProcessingParameters templateProcessingParameters, final String resourceName) {
-
- Validate.notNull(templateProcessingParameters, "Template Processing Parameters cannot be null");
-
- final IContext context = templateProcessingParameters.getContext();
+ public IResource resolveResource(final IEngineConfiguration engineConfiguration, final IContext context, final String resourceName, final String characterEncoding) {
+ Validate.notNull(context, "context cannot be null");
+ Validate.notNull(context, "resource name cannot be null");
if (context instanceof SlingContext) {
final SlingContext slingContext = (SlingContext) context;
final ResourceResolver resourceResolver = slingContext.getResourceResolver();
- final Resource resource = resourceResolver.getResource(resourceName);
- return resource.adaptTo(InputStream.class);
+ return resolveResource(resourceResolver, resourceName);
+ } else if (context instanceof IWebVariablesMap) { // TODO Thymeleaf #388
+ final IWebVariablesMap webVariablesMap = (IWebVariablesMap) context;
+ final ResourceResolver resourceResolver = (ResourceResolver) webVariablesMap.getVariable(SlingScriptConstants.ATTR_SCRIPT_RESOURCE_RESOLVER);
+ return resolveResource(resourceResolver, resourceName);
} else {
- throw new TemplateProcessingException("Cannot handle context: " + context.getClass().getName());
+ final String message = String.format("Cannot handle context: %s", context.getClass().getName());
+ throw new TemplateProcessingException(message);
+ }
+ }
+
+ private IResource resolveResource(final ResourceResolver resourceResolver, final String resourceName) {
+ final Resource resource = resourceResolver.getResource(resourceName);
+ final InputStream inputStream = resource.adaptTo(InputStream.class);
+ try {
+ final char[] content = IOUtils.toCharArray(inputStream);
+ return new CharArrayResource(resourceName, content);
+ } catch (IOException e) {
+ final String message = String.format("Cannot read from resource '%s'", resourceName);
+ throw new TemplateProcessingException(message, e);
}
}
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=1705867&r1=1705866&r2=1705867&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 Tue Sep 29 14:13:44 2015
@@ -25,10 +25,7 @@ import java.util.Locale;
import javax.script.Bindings;
import javax.script.ScriptContext;
import javax.script.ScriptException;
-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;
@@ -58,10 +55,6 @@ public final class ThymeleafScriptEngine
throw new ScriptException("SlingScriptHelper missing from bindings");
}
- final SlingHttpServletRequest request = helper.getRequest();
- 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();
@@ -71,8 +64,10 @@ public final class ThymeleafScriptEngine
final String scriptName = helper.getScript().getScriptResource().getPath();
final Writer writer = scriptContext.getWriter();
+ bindings.put(SlingScriptConstants.ATTR_SCRIPT_RESOURCE_RESOLVER, resourceResolver); // TODO #388
+
try {
- final IContext context = new SlingWebContext(request, response, servletContext, resourceResolver, locale, bindings);
+ final IContext context = new DefaultSlingContext(resourceResolver, locale, bindings);
thymeleafScriptEngineFactory.getTemplateEngine().process(scriptName, context, writer);
} catch (Exception e) {
logger.error("Failure rendering Thymeleaf template '{}': {}", scriptName, e.getMessage());
Modified: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java?rev=1705867&r1=1705866&r2=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java Tue Sep 29 14:13:44 2015
@@ -42,6 +42,7 @@ import org.osgi.service.component.Compon
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.thymeleaf.TemplateEngine;
+import org.thymeleaf.Thymeleaf;
import org.thymeleaf.dialect.IDialect;
import org.thymeleaf.messageresolver.IMessageResolver;
import org.thymeleaf.standard.StandardDialect;
@@ -137,13 +138,13 @@ public final class ThymeleafScriptEngine
}
protected synchronized void bindDialects(final IDialect dialect) {
- logger.debug("binding a dialect for prefix '{}'", dialect.getPrefix());
+ logger.debug("binding dialect '{}'", dialect.getName());
dialects.add(dialect);
configureTemplateEngine();
}
protected synchronized void unbindDialects(final IDialect dialect) {
- logger.debug("unbinding a dialect for prefix '{}'", dialect.getPrefix());
+ logger.debug("unbinding dialect '{}'", dialect.getName());
dialects.remove(dialect);
configureTemplateEngine();
}
@@ -164,9 +165,7 @@ public final class ThymeleafScriptEngine
// the configuration of the Thymeleaf TemplateEngine is static and we need to recreate on modification
private synchronized void configureTemplateEngine() {
logger.info("configure template engine");
- if (templateEngine == null || templateEngine.isInitialized()) {
- templateEngine = new TemplateEngine();
- }
+ final TemplateEngine templateEngine = new TemplateEngine();
if (templateResolvers.size() > 0) {
templateEngine.setTemplateResolvers(templateResolvers);
}
@@ -178,6 +177,10 @@ public final class ThymeleafScriptEngine
final IDialect standardDialect = new StandardDialect();
templateEngine.addDialect(standardDialect);
}
+ // TODO
+ // final ICacheManager cacheManager = null;
+ // templateEngine.setCacheManager(cacheManager);
+ this.templateEngine = templateEngine;
}
@Override
@@ -187,7 +190,7 @@ public final class ThymeleafScriptEngine
@Override
public String getLanguageVersion() {
- return "2.1"; // TODO get version from Thymeleaf
+ return Thymeleaf.VERSION;
}
@Override
Modified: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/dialect/SlingDialect.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/dialect/SlingDialect.java?rev=1705867&r1=1705866&r2=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/dialect/SlingDialect.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/dialect/SlingDialect.java Tue Sep 29 14:13:44 2015
@@ -25,14 +25,14 @@ import org.apache.felix.scr.annotations.
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.scripting.thymeleaf.internal.processor.attr.SlingAddSelectorsAttrProcessor;
-import org.apache.sling.scripting.thymeleaf.internal.processor.attr.SlingIncludeAttrProcessor;
-import org.apache.sling.scripting.thymeleaf.internal.processor.attr.SlingReplaceSelectorsAttrProcessor;
-import org.apache.sling.scripting.thymeleaf.internal.processor.attr.SlingReplaceSuffixAttrProcessor;
-import org.apache.sling.scripting.thymeleaf.internal.processor.attr.SlingResourceTypeAttrProcessor;
-import org.apache.sling.scripting.thymeleaf.internal.processor.attr.SlingUnwrapAttrProcessor;
+import org.apache.sling.scripting.thymeleaf.internal.processor.SlingAddSelectorsAttributeProcessor;
+import org.apache.sling.scripting.thymeleaf.internal.processor.SlingIncludeAttributeTagProcessor;
+import org.apache.sling.scripting.thymeleaf.internal.processor.SlingReplaceSelectorsAttributeTagProcessor;
+import org.apache.sling.scripting.thymeleaf.internal.processor.SlingReplaceSuffixAttributeTagProcessor;
+import org.apache.sling.scripting.thymeleaf.internal.processor.SlingResourceTypeAttributeTagProcessor;
+import org.apache.sling.scripting.thymeleaf.internal.processor.SlingUnwrapAttributeTagProcessor;
import org.osgi.framework.Constants;
-import org.thymeleaf.dialect.AbstractDialect;
+import org.thymeleaf.dialect.AbstractProcessorDialect;
import org.thymeleaf.processor.IProcessor;
@Component(
@@ -40,27 +40,34 @@ import org.thymeleaf.processor.IProcesso
)
@Service
@Properties({
- @Property(name = Constants.SERVICE_VENDOR, value = "The Apache Software Foundation"),
- @Property(name = Constants.SERVICE_DESCRIPTION, value = "Sling dialect for Sling Scripting Thymeleaf")
+ @Property(
+ name = Constants.SERVICE_VENDOR,
+ value = "The Apache Software Foundation"
+ ),
+ @Property(
+ name = Constants.SERVICE_DESCRIPTION,
+ value = "Sling dialect for Sling Scripting Thymeleaf"
+ )
})
-public final class SlingDialect extends AbstractDialect {
+public final class SlingDialect extends AbstractProcessorDialect {
+
+ public static final String NAME = "Sling";
public static final String PREFIX = "sling";
- @Override
- public String getPrefix() {
- return PREFIX;
+ public SlingDialect() {
+ super(NAME, PREFIX, 0);
}
@Override
- public Set<IProcessor> getProcessors() {
+ public Set<IProcessor> getProcessors(final String prefix) {
final Set<IProcessor> processors = new HashSet<IProcessor>();
- processors.add(new SlingAddSelectorsAttrProcessor());
- processors.add(new SlingIncludeAttrProcessor());
- processors.add(new SlingReplaceSelectorsAttrProcessor());
- processors.add(new SlingReplaceSuffixAttrProcessor());
- processors.add(new SlingResourceTypeAttrProcessor());
- processors.add(new SlingUnwrapAttrProcessor());
+ processors.add(new SlingAddSelectorsAttributeProcessor(this, prefix));
+ processors.add(new SlingIncludeAttributeTagProcessor(this, prefix));
+ processors.add(new SlingReplaceSelectorsAttributeTagProcessor(this, prefix));
+ processors.add(new SlingReplaceSuffixAttributeTagProcessor(this, prefix));
+ processors.add(new SlingResourceTypeAttributeTagProcessor(this, prefix));
+ processors.add(new SlingUnwrapAttributeTagProcessor(this, prefix));
return processors;
}
Copied: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingAddSelectorsAttributeProcessor.java (from r1704832, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingAddSelectorsAttrProcessor.java)
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingAddSelectorsAttributeProcessor.java?p2=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingAddSelectorsAttributeProcessor.java&p1=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingAddSelectorsAttrProcessor.java&r1=1704832&r2=1705867&rev=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingAddSelectorsAttrProcessor.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingAddSelectorsAttributeProcessor.java Tue Sep 29 14:13:44 2015
@@ -16,27 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.scripting.thymeleaf.internal.processor.attr;
+package org.apache.sling.scripting.thymeleaf.internal.processor;
-public final class SlingAddSelectorsAttrProcessor extends SlingNodePropertyAttrProcessor {
+import org.thymeleaf.dialect.IProcessorDialect;
- public static final int ATTR_PRECEDENCE = 99;
+public final class SlingAddSelectorsAttributeProcessor extends SlingLocalVariableAttributeTagProcessor {
- public static final String ATTR_NAME = "addSelectors";
+ public static final int ATTRIBUTE_PRECEDENCE = 99;
- public static final String NODE_PROPERTY_NAME = String.format("%s.%s", PREFIX, ATTR_NAME);
+ public static final String ATTRIBUTE_NAME = "addSelectors";
- public SlingAddSelectorsAttrProcessor() {
- super(ATTR_NAME);
- }
+ public static final String NODE_PROPERTY_NAME = String.format("%s.%s", LOCAL_VARIABLE_PREFIX, ATTRIBUTE_NAME);
- @Override
- public int getPrecedence() {
- return ATTR_PRECEDENCE;
+ public SlingAddSelectorsAttributeProcessor(final IProcessorDialect processorDialect, final String dialectPrefix) {
+ super(processorDialect, dialectPrefix, ATTRIBUTE_NAME, ATTRIBUTE_PRECEDENCE);
}
@Override
- protected String getNodePropertyName() {
+ protected String getLocalVariableName() {
return NODE_PROPERTY_NAME;
}
Added: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingHtmlAttributeTagProcessor.java
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingHtmlAttributeTagProcessor.java?rev=1705867&view=auto
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingHtmlAttributeTagProcessor.java (added)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingHtmlAttributeTagProcessor.java Tue Sep 29 14:13:44 2015
@@ -0,0 +1,31 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.sling.scripting.thymeleaf.internal.processor;
+
+import org.thymeleaf.dialect.IProcessorDialect;
+import org.thymeleaf.processor.element.AbstractAttributeTagProcessor;
+import org.thymeleaf.templatemode.TemplateMode;
+
+public abstract class SlingHtmlAttributeTagProcessor extends AbstractAttributeTagProcessor {
+
+ public SlingHtmlAttributeTagProcessor(final IProcessorDialect processorDialect, final String dialectPrefix, final String attributeName, final int precedence, final boolean removeAttribute) {
+ super(processorDialect, TemplateMode.HTML, dialectPrefix, null, false, attributeName, false, precedence, removeAttribute);
+ }
+
+}
Copied: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingIncludeAttributeTagProcessor.java (from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingIncludeAttrProcessor.java)
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingIncludeAttributeTagProcessor.java?p2=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingIncludeAttributeTagProcessor.java&p1=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingIncludeAttrProcessor.java&r1=1701282&r2=1705867&rev=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingIncludeAttrProcessor.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingIncludeAttributeTagProcessor.java Tue Sep 29 14:13:44 2015
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.scripting.thymeleaf.internal.processor.attr;
+package org.apache.sling.scripting.thymeleaf.internal.processor;
import java.io.IOException;
@@ -30,51 +30,46 @@ import org.apache.sling.api.resource.Res
import org.apache.sling.api.resource.ResourceUtil;
import org.apache.sling.api.resource.SyntheticResource;
import org.apache.sling.scripting.core.servlet.CaptureResponseWrapper;
-import org.apache.sling.scripting.thymeleaf.internal.SlingWebContext;
-import org.apache.sling.scripting.thymeleaf.internal.dom.NodeUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
-import org.thymeleaf.Arguments;
-import org.thymeleaf.Configuration;
-import org.thymeleaf.context.IContext;
-import org.thymeleaf.dom.Element;
-import org.thymeleaf.dom.Macro;
-import org.thymeleaf.processor.ProcessorResult;
-import org.thymeleaf.processor.attr.AbstractAttrProcessor;
+import org.thymeleaf.IEngineConfiguration;
+import org.thymeleaf.context.ITemplateProcessingContext;
+import org.thymeleaf.context.IVariablesMap;
+import org.thymeleaf.context.IWebVariablesMap;
+import org.thymeleaf.dialect.IProcessorDialect;
+import org.thymeleaf.engine.AttributeName;
+import org.thymeleaf.model.IProcessableElementTag;
+import org.thymeleaf.processor.element.IElementTagStructureHandler;
import org.thymeleaf.standard.expression.IStandardExpression;
import org.thymeleaf.standard.expression.IStandardExpressionParser;
import org.thymeleaf.standard.expression.StandardExpressions;
-public class SlingIncludeAttrProcessor extends AbstractAttrProcessor {
+public class SlingIncludeAttributeTagProcessor extends SlingHtmlAttributeTagProcessor {
- public static final int ATTR_PRECEDENCE = 100;
+ public static final int ATTRIBUTE_PRECEDENCE = 100;
- public static final String ATTR_NAME = "include";
+ public static final String ATTRIBUTE_NAME = "include";
- private final Logger logger = LoggerFactory.getLogger(SlingIncludeAttrProcessor.class);
+ private final Logger logger = LoggerFactory.getLogger(SlingIncludeAttributeTagProcessor.class);
- public SlingIncludeAttrProcessor() {
- super(ATTR_NAME);
+ public SlingIncludeAttributeTagProcessor(final IProcessorDialect processorDialect, final String dialectPrefix) {
+ super(processorDialect, dialectPrefix, ATTRIBUTE_NAME, ATTRIBUTE_PRECEDENCE, true);
}
@Override
- public int getPrecedence() {
- return ATTR_PRECEDENCE;
- }
+ protected void doProcess(final ITemplateProcessingContext processingContext, final IProcessableElementTag tag, final AttributeName attributeName, final String attributeValue, final String tagTemplateName, final int tagLine, final int tagCol, final IElementTagStructureHandler elementTagStructureHandler) {
+ // final IContext context = arguments.getTemplateProcessingParameters().getContext();
+ // if (context instanceof SlingWebContext) {
+ try {
+ final IWebVariablesMap webVariablesMap = (IWebVariablesMap) processingContext.getVariables();
+ final SlingHttpServletRequest slingHttpServletRequest = (SlingHttpServletRequest) webVariablesMap.getRequest();
+ final SlingHttpServletResponse slingHttpServletResponse = (SlingHttpServletResponse) webVariablesMap.getResponse();
+
+ final IEngineConfiguration configuration = processingContext.getConfiguration();
+ final IStandardExpressionParser expressionParser = StandardExpressions.getExpressionParser(configuration);
+ final IStandardExpression expression = expressionParser.parseExpression(processingContext, attributeValue);
+ final Object include = expression.execute(processingContext);
- @Override
- protected ProcessorResult processAttribute(final Arguments arguments, final Element element, final String attributeName) {
- final IContext context = arguments.getTemplateProcessingParameters().getContext();
- if (context instanceof SlingWebContext) {
- final SlingWebContext slingWebContext = (SlingWebContext) context;
- final SlingHttpServletRequest slingHttpServletRequest = slingWebContext.getHttpServletRequest();
- final SlingHttpServletResponse slingHttpServletResponse = slingWebContext.getHttpServletResponse();
- // resource or path to include
- final Configuration configuration = arguments.getConfiguration();
- final String attributeValue = element.getAttributeValue(attributeName);
- final IStandardExpressionParser parser = StandardExpressions.getExpressionParser(configuration);
- final IStandardExpression expression = parser.parseExpression(configuration, arguments, attributeValue);
- final Object include = expression.execute(configuration, arguments);
String path = null;
if (include instanceof String) {
path = (String) include;
@@ -84,30 +79,29 @@ public class SlingIncludeAttrProcessor e
resource = (Resource) include;
}
// request dispatcher options
- final RequestDispatcherOptions requestDispatcherOptions = prepareRequestDispatcherOptions(element);
+ final RequestDispatcherOptions requestDispatcherOptions = prepareRequestDispatcherOptions(webVariablesMap);
// dispatch
final String content = dispatch(resource, path, slingHttpServletRequest, slingHttpServletResponse, requestDispatcherOptions);
// cleanup
- element.removeAttribute(attributeName);
- element.clearChildren();
+ tag.getAttributes().removeAttribute(attributeName);
+ // element.clearChildren();
// add output
- final Macro macro = new Macro(content);
- element.addChild(macro);
- final Boolean unwrap = NodeUtil.getNodeProperty(element, SlingUnwrapAttrProcessor.NODE_PROPERTY_NAME, Boolean.class);
+ final Boolean unwrap = (Boolean) webVariablesMap.getVariable(SlingUnwrapAttributeTagProcessor.NODE_PROPERTY_NAME);
if (unwrap != null && unwrap) {
- element.getParent().extractChild(element);
+ elementTagStructureHandler.replaceWith(content, false);
+ } else {
+ elementTagStructureHandler.setBody(content, false);
}
- } else {
- throw new RuntimeException("Context is not an instance of SlingWebContext, unable to process include attribute");
+ } catch (Exception e) {
+ throw new RuntimeException("unable to process include attribute", e);
}
- return ProcessorResult.OK;
}
- protected RequestDispatcherOptions prepareRequestDispatcherOptions(final Element element) {
- final String resourceType = NodeUtil.getNodeProperty(element, SlingResourceTypeAttrProcessor.NODE_PROPERTY_NAME, String.class);
- final String replaceSelectors = NodeUtil.getNodeProperty(element, SlingReplaceSelectorsAttrProcessor.NODE_PROPERTY_NAME, String.class);
- final String addSelectors = NodeUtil.getNodeProperty(element, SlingAddSelectorsAttrProcessor.NODE_PROPERTY_NAME, String.class);
- final String replaceSuffix = NodeUtil.getNodeProperty(element, SlingReplaceSuffixAttrProcessor.NODE_PROPERTY_NAME, String.class);
+ protected RequestDispatcherOptions prepareRequestDispatcherOptions(final IVariablesMap variablesMap) {
+ final String resourceType = (String) variablesMap.getVariable(SlingResourceTypeAttributeTagProcessor.NODE_PROPERTY_NAME);
+ final String replaceSelectors = (String) variablesMap.getVariable(SlingReplaceSelectorsAttributeTagProcessor.NODE_PROPERTY_NAME);
+ final String addSelectors = (String) variablesMap.getVariable(SlingAddSelectorsAttributeProcessor.NODE_PROPERTY_NAME);
+ final String replaceSuffix = (String) variablesMap.getVariable(SlingReplaceSuffixAttributeTagProcessor.NODE_PROPERTY_NAME);
final RequestDispatcherOptions options = new RequestDispatcherOptions();
options.setForceResourceType(resourceType);
options.setReplaceSelectors(replaceSelectors);
@@ -117,14 +111,13 @@ public class SlingIncludeAttrProcessor e
}
/**
- * @see "org.apache.sling.scripting.jsp.taglib.IncludeTagHandler"
- *
* @param resource the resource to include
* @param path the path to include
* @param slingHttpServletRequest the current request
* @param slingHttpServletResponse the current response
* @param requestDispatcherOptions the options for the request dispatcher
* @return the character response from the include call to request dispatcher
+ * @see "org.apache.sling.scripting.jsp.taglib.IncludeTagHandler"
*/
protected String dispatch(Resource resource, String path, final SlingHttpServletRequest slingHttpServletRequest, final SlingHttpServletResponse slingHttpServletResponse, final RequestDispatcherOptions requestDispatcherOptions) {
Copied: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingLocalVariableAttributeTagProcessor.java (from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingNodePropertyAttrProcessor.java)
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingLocalVariableAttributeTagProcessor.java?p2=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingLocalVariableAttributeTagProcessor.java&p1=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingNodePropertyAttrProcessor.java&r1=1701282&r2=1705867&rev=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingNodePropertyAttrProcessor.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingLocalVariableAttributeTagProcessor.java Tue Sep 29 14:13:44 2015
@@ -16,37 +16,35 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.scripting.thymeleaf.internal.processor.attr;
+package org.apache.sling.scripting.thymeleaf.internal.processor;
-import org.thymeleaf.Arguments;
-import org.thymeleaf.Configuration;
-import org.thymeleaf.dom.Element;
-import org.thymeleaf.processor.ProcessorResult;
-import org.thymeleaf.processor.attr.AbstractAttrProcessor;
+import org.thymeleaf.IEngineConfiguration;
+import org.thymeleaf.context.ITemplateProcessingContext;
+import org.thymeleaf.dialect.IProcessorDialect;
+import org.thymeleaf.engine.AttributeName;
+import org.thymeleaf.model.IProcessableElementTag;
+import org.thymeleaf.processor.element.IElementTagStructureHandler;
import org.thymeleaf.standard.expression.IStandardExpression;
import org.thymeleaf.standard.expression.IStandardExpressionParser;
import org.thymeleaf.standard.expression.StandardExpressions;
-public abstract class SlingNodePropertyAttrProcessor extends AbstractAttrProcessor {
+public abstract class SlingLocalVariableAttributeTagProcessor extends SlingHtmlAttributeTagProcessor {
- public static final String PREFIX = "sling";
+ public static final String LOCAL_VARIABLE_PREFIX = "sling";
- public SlingNodePropertyAttrProcessor(final String attributeName) {
- super(attributeName);
+ public SlingLocalVariableAttributeTagProcessor(final IProcessorDialect processorDialect, final String dialectPrefix, final String attributeName, final int precedence) {
+ super(processorDialect, dialectPrefix, attributeName, precedence, true);
}
- protected abstract String getNodePropertyName();
+ protected abstract String getLocalVariableName();
@Override
- protected ProcessorResult processAttribute(final Arguments arguments, final Element element, final String attributeName) {
- final Configuration configuration = arguments.getConfiguration();
- final String attributeValue = element.getAttributeValue(attributeName);
- final IStandardExpressionParser parser = StandardExpressions.getExpressionParser(configuration);
- final IStandardExpression expression = parser.parseExpression(configuration, arguments, attributeValue);
- final Object result = expression.execute(configuration, arguments);
- element.setNodeProperty(getNodePropertyName(), result);
- element.removeAttribute(attributeName);
- return ProcessorResult.OK;
+ protected void doProcess(final ITemplateProcessingContext templateProcessingContext, final IProcessableElementTag processableElementTag, final AttributeName attributeName, final String attributeValue, final String attributeTemplateName, final int attributeLine, final int attributeCol, final IElementTagStructureHandler structureHandler) {
+ final IEngineConfiguration configuration = templateProcessingContext.getConfiguration();
+ final IStandardExpressionParser expressionParser = StandardExpressions.getExpressionParser(configuration);
+ final IStandardExpression expression = expressionParser.parseExpression(templateProcessingContext, attributeValue);
+ final Object result = expression.execute(templateProcessingContext);
+ structureHandler.setLocalVariable(getLocalVariableName(), result);
}
}
Copied: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingReplaceSelectorsAttributeTagProcessor.java (from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingReplaceSelectorsAttrProcessor.java)
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingReplaceSelectorsAttributeTagProcessor.java?p2=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingReplaceSelectorsAttributeTagProcessor.java&p1=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingReplaceSelectorsAttrProcessor.java&r1=1701282&r2=1705867&rev=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingReplaceSelectorsAttrProcessor.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingReplaceSelectorsAttributeTagProcessor.java Tue Sep 29 14:13:44 2015
@@ -16,27 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.scripting.thymeleaf.internal.processor.attr;
+package org.apache.sling.scripting.thymeleaf.internal.processor;
-public final class SlingReplaceSelectorsAttrProcessor extends SlingNodePropertyAttrProcessor {
+import org.thymeleaf.dialect.IProcessorDialect;
- public static final int ATTR_PRECEDENCE = 99;
+public final class SlingReplaceSelectorsAttributeTagProcessor extends SlingLocalVariableAttributeTagProcessor {
- public static final String ATTR_NAME = "replaceSelectors";
+ public static final int ATTRIBUTE_PRECEDENCE = 99;
- public static final String NODE_PROPERTY_NAME = String.format("%s.%s", PREFIX, ATTR_NAME);
+ public static final String ATTRIBUTE_NAME = "replaceSelectors";
- public SlingReplaceSelectorsAttrProcessor() {
- super(ATTR_NAME);
- }
+ public static final String NODE_PROPERTY_NAME = String.format("%s.%s", LOCAL_VARIABLE_PREFIX, ATTRIBUTE_NAME);
- @Override
- public int getPrecedence() {
- return ATTR_PRECEDENCE;
+ public SlingReplaceSelectorsAttributeTagProcessor(final IProcessorDialect processorDialect, final String dialectPrefix) {
+ super(processorDialect, dialectPrefix, ATTRIBUTE_NAME, ATTRIBUTE_PRECEDENCE);
}
@Override
- protected String getNodePropertyName() {
+ protected String getLocalVariableName() {
return NODE_PROPERTY_NAME;
}
Copied: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingReplaceSuffixAttributeTagProcessor.java (from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingReplaceSuffixAttrProcessor.java)
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingReplaceSuffixAttributeTagProcessor.java?p2=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingReplaceSuffixAttributeTagProcessor.java&p1=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingReplaceSuffixAttrProcessor.java&r1=1701282&r2=1705867&rev=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingReplaceSuffixAttrProcessor.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingReplaceSuffixAttributeTagProcessor.java Tue Sep 29 14:13:44 2015
@@ -16,27 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.scripting.thymeleaf.internal.processor.attr;
+package org.apache.sling.scripting.thymeleaf.internal.processor;
-public final class SlingReplaceSuffixAttrProcessor extends SlingNodePropertyAttrProcessor {
+import org.thymeleaf.dialect.IProcessorDialect;
- public static final int ATTR_PRECEDENCE = 99;
+public final class SlingReplaceSuffixAttributeTagProcessor extends SlingLocalVariableAttributeTagProcessor {
- public static final String ATTR_NAME = "replaceSuffix";
+ public static final int ATTRIBUTE_PRECEDENCE = 99;
- public static final String NODE_PROPERTY_NAME = String.format("%s.%s", PREFIX, ATTR_NAME);
+ public static final String ATTRIBUTE_NAME = "replaceSuffix";
- public SlingReplaceSuffixAttrProcessor() {
- super(ATTR_NAME);
- }
+ public static final String NODE_PROPERTY_NAME = String.format("%s.%s", LOCAL_VARIABLE_PREFIX, ATTRIBUTE_NAME);
- @Override
- public int getPrecedence() {
- return ATTR_PRECEDENCE;
+ public SlingReplaceSuffixAttributeTagProcessor(final IProcessorDialect processorDialect, final String dialectPrefix) {
+ super(processorDialect, dialectPrefix, ATTRIBUTE_NAME, ATTRIBUTE_PRECEDENCE);
}
@Override
- protected String getNodePropertyName() {
+ protected String getLocalVariableName() {
return NODE_PROPERTY_NAME;
}
Copied: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingResourceTypeAttributeTagProcessor.java (from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingResourceTypeAttrProcessor.java)
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingResourceTypeAttributeTagProcessor.java?p2=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingResourceTypeAttributeTagProcessor.java&p1=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingResourceTypeAttrProcessor.java&r1=1701282&r2=1705867&rev=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingResourceTypeAttrProcessor.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingResourceTypeAttributeTagProcessor.java Tue Sep 29 14:13:44 2015
@@ -16,27 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.scripting.thymeleaf.internal.processor.attr;
+package org.apache.sling.scripting.thymeleaf.internal.processor;
-public final class SlingResourceTypeAttrProcessor extends SlingNodePropertyAttrProcessor {
+import org.thymeleaf.dialect.IProcessorDialect;
- public static final int ATTR_PRECEDENCE = 99;
+public final class SlingResourceTypeAttributeTagProcessor extends SlingLocalVariableAttributeTagProcessor {
- public static final String ATTR_NAME = "resourceType";
+ public static final int ATTRIBUTE_PRECEDENCE = 99;
- public static final String NODE_PROPERTY_NAME = String.format("%s.%s", PREFIX, ATTR_NAME);
+ public static final String ATTRIBUTE_NAME = "resourceType";
- public SlingResourceTypeAttrProcessor() {
- super(ATTR_NAME);
- }
+ public static final String NODE_PROPERTY_NAME = String.format("%s.%s", LOCAL_VARIABLE_PREFIX, ATTRIBUTE_NAME);
- @Override
- public int getPrecedence() {
- return ATTR_PRECEDENCE;
+ public SlingResourceTypeAttributeTagProcessor(final IProcessorDialect processorDialect, final String dialectPrefix) {
+ super(processorDialect, dialectPrefix, ATTRIBUTE_NAME, ATTRIBUTE_PRECEDENCE);
}
@Override
- protected String getNodePropertyName() {
+ protected String getLocalVariableName() {
return NODE_PROPERTY_NAME;
}
Copied: sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingUnwrapAttributeTagProcessor.java (from r1701282, sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingUnwrapAttrProcessor.java)
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingUnwrapAttributeTagProcessor.java?p2=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingUnwrapAttributeTagProcessor.java&p1=sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingUnwrapAttrProcessor.java&r1=1701282&r2=1705867&rev=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/attr/SlingUnwrapAttrProcessor.java (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/processor/SlingUnwrapAttributeTagProcessor.java Tue Sep 29 14:13:44 2015
@@ -16,27 +16,24 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.sling.scripting.thymeleaf.internal.processor.attr;
+package org.apache.sling.scripting.thymeleaf.internal.processor;
-public final class SlingUnwrapAttrProcessor extends SlingNodePropertyAttrProcessor {
+import org.thymeleaf.dialect.IProcessorDialect;
- public static final int ATTR_PRECEDENCE = 99;
+public final class SlingUnwrapAttributeTagProcessor extends SlingLocalVariableAttributeTagProcessor {
- public static final String ATTR_NAME = "unwrap";
+ public static final int ATTRIBUTE_PRECEDENCE = 99;
- public static final String NODE_PROPERTY_NAME = String.format("%s.%s", PREFIX, ATTR_NAME);
+ public static final String ATTRIBUTE_NAME = "unwrap";
- public SlingUnwrapAttrProcessor() {
- super(ATTR_NAME);
- }
+ public static final String NODE_PROPERTY_NAME = String.format("%s.%s", LOCAL_VARIABLE_PREFIX, ATTRIBUTE_NAME);
- @Override
- public int getPrecedence() {
- return ATTR_PRECEDENCE;
+ public SlingUnwrapAttributeTagProcessor(final IProcessorDialect processorDialect, final String dialectPrefix) {
+ super(processorDialect, dialectPrefix, ATTRIBUTE_NAME, ATTRIBUTE_PRECEDENCE);
}
@Override
- protected String getNodePropertyName() {
+ protected String getLocalVariableName() {
return NODE_PROPERTY_NAME;
}
Modified: sling/trunk/contrib/scripting/thymeleaf/src/main/resources/OSGI-INF/metatype/metatype.properties
URL: http://svn.apache.org/viewvc/sling/trunk/contrib/scripting/thymeleaf/src/main/resources/OSGI-INF/metatype/metatype.properties?rev=1705867&r1=1705866&r2=1705867&view=diff
==============================================================================
--- sling/trunk/contrib/scripting/thymeleaf/src/main/resources/OSGI-INF/metatype/metatype.properties (original)
+++ sling/trunk/contrib/scripting/thymeleaf/src/main/resources/OSGI-INF/metatype/metatype.properties Tue Sep 29 14:13:44 2015
@@ -37,30 +37,21 @@ org.apache.sling.scripting.thymeleaf.int
org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.encoding.name = encoding
org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.encoding.description = encoding for reading templates
+org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.htmlPatterns.name = patterns for Template Mode HTML
+org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.htmlPatterns.description = the template patterns (regular expressions) which should be handled by Template Mode HTML (e.g. /apps/sling/*.html - NOTE: extension needs to be enabled for this script engine)
+
+org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.xmlPatterns.name = patterns for Template Mode XML
+org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.xmlPatterns.description = the template patterns (regular expressions) which should be handled by Template Mode XML (e.g. /apps/sling/*.xml - NOTE: extension needs to be enabled for this script engine)
+
+org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.textPatterns.name = patterns for Template Mode TEXT
+org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.textPatterns.description = the template patterns (regular expressions) which should be handled by Template Mode TEXT (e.g. /apps/sling/*.txt - NOTE: extension needs to be enabled for this script engine)
+
+org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.javascriptPatterns.name = patterns for Template Mode JAVASCRIPT
+org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.javascriptPatterns.description = the template patterns (regular expressions) which should be handled by Template Mode JAVASCRIPT (e.g. /apps/sling/*.js - NOTE: extension needs to be enabled for this script engine)
+
+org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.cssPatterns.name = patterns for Template Mode CSS
+org.apache.sling.scripting.thymeleaf.internal.NonCachingTemplateResolver.cssPatterns.description = the template patterns (regular expressions) which should be handled by Template Mode CSS (e.g. /apps/sling/*.css) - NOTE: extension needs to be enabled for this script engine)
+
# ResourceBundleMessageResolver
org.apache.sling.scripting.thymeleaf.internal.ResourceBundleMessageResolver.order.name = order
org.apache.sling.scripting.thymeleaf.internal.ResourceBundleMessageResolver.order.description = property for ordering message resolvers inside the Thymeleaf template engine
-
-# XmlTemplateModeHandler
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.XmlTemplateModeHandler.patterns.name = patterns
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.XmlTemplateModeHandler.patterns.description = the template patterns (regular expressions) this service should handle (e.g. /apps/sling/*.xml - NOTE: extension needs to be enabled for this script engine)
-
-# ValidatingXmlTemplateModeHandler
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.ValidatingXmlTemplateModeHandler.patterns.name = patterns
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.ValidatingXmlTemplateModeHandler.patterns.description = the template patterns (regular expressions) this service should handle (e.g. /apps/sling/*.xml - NOTE: extension needs to be enabled for this script engine)
-
-# XhtmlTemplateModeHandler
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.XhtmlTemplateModeHandler.patterns.name = patterns
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.XhtmlTemplateModeHandler.patterns.description = the template patterns (regular expressions) this service should handle (e.g. /apps/sling/*.xhtml - NOTE: extension needs to be enabled for this script engine)
-
-# ValidatingXhtmlTemplateModeHandler
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.ValidatingXhtmlTemplateModeHandler.patterns.name = patterns
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.ValidatingXhtmlTemplateModeHandler.patterns.description = the template patterns (regular expressions) this service should handle (e.g. /apps/sling/*.xhtml - NOTE: extension needs to be enabled for this script engine)
-
-# Html5TemplateModeHandler
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.Html5TemplateModeHandler.patterns.name = patterns
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.Html5TemplateModeHandler.patterns.description = the template patterns (regular expressions) this service should handle (e.g. /apps/sling/*.html) - NOTE: extension needs to be enabled for this script engine)
-
-# LegacyHtml5TemplateModeHandler
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.LegacyHtml5TemplateModeHandler.patterns.name = patterns
-org.apache.sling.scripting.thymeleaf.internal.templatemodehandler.LegacyHtml5TemplateModeHandler.patterns.description = the template patterns (regular expressions) this service should handle (e.g. /apps/sling/*.html) - NOTE: extension needs to be enabled for this script engine)