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/01/12 15:13:10 UTC
svn commit: r1651100 -
/sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java
Author: olli
Date: Mon Jan 12 14:13:10 2015
New Revision: 1651100
URL: http://svn.apache.org/r1651100
Log:
SLING-4296 add support for custom dialects
* template engine uses dialects (org.thymeleaf.dialect.IDialect) provided as OSGi service
* org.thymeleaf.standard.StandardDialect is provided by default
Modified:
sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java
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=1651100&r1=1651099&r2=1651100&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 Mon Jan 12 14:13:10 2015
@@ -42,7 +42,9 @@ import org.osgi.service.component.Compon
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.thymeleaf.TemplateEngine;
+import org.thymeleaf.dialect.IDialect;
import org.thymeleaf.messageresolver.IMessageResolver;
+import org.thymeleaf.standard.StandardDialect;
import org.thymeleaf.templateresolver.ITemplateResolver;
@Component(
@@ -65,6 +67,9 @@ public class ThymeleafScriptEngineFactor
@Reference(referenceInterface = IMessageResolver.class, cardinality = ReferenceCardinality.MANDATORY_MULTIPLE, policy = ReferencePolicy.DYNAMIC)
final private Set<IMessageResolver> messageResolvers = new LinkedHashSet<IMessageResolver>();
+ @Reference(referenceInterface = IDialect.class, cardinality = ReferenceCardinality.MANDATORY_MULTIPLE, policy = ReferencePolicy.DYNAMIC)
+ final private Set<IDialect> dialects = new LinkedHashSet<IDialect>();
+
private TemplateEngine templateEngine;
public static final String DEFAULT_EXTENSION = "html";
@@ -131,6 +136,18 @@ public class ThymeleafScriptEngineFactor
configureTemplateEngine();
}
+ protected synchronized void bindDialects(final IDialect dialect) {
+ logger.debug("binding a dialect for prefix '{}'", dialect.getPrefix());
+ dialects.add(dialect);
+ configureTemplateEngine();
+ }
+
+ protected synchronized void unbindDialects(final IDialect dialect) {
+ logger.debug("unbinding a dialect for prefix '{}'", dialect.getPrefix());
+ dialects.remove(dialect);
+ configureTemplateEngine();
+ }
+
private synchronized void configure(final ComponentContext componentContext) {
final Dictionary properties = componentContext.getProperties();
@@ -156,6 +173,11 @@ public class ThymeleafScriptEngineFactor
if (messageResolvers.size() > 0) {
templateEngine.setMessageResolvers(messageResolvers);
}
+ if (dialects.size() > 0) {
+ templateEngine.setDialects(dialects);
+ final IDialect standardDialect = new StandardDialect();
+ templateEngine.addDialect(standardDialect);
+ }
}
@Override