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:13:37 UTC

[sling-org-apache-sling-scripting-thymeleaf] 26/50: SLING-5075 Upgrade Thymeleaf to 3.0

This is an automated email from the ASF dual-hosted git repository.

rombert pushed a commit to annotated tag org.apache.sling.scripting.thymeleaf-1.0.0
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-thymeleaf.git

commit 25083edfd0eeaa70cde1730f2f0038b796c6d84f
Author: Oliver Lietz <ol...@apache.org>
AuthorDate: Fri May 13 12:28:13 2016 +0000

    SLING-5075 Upgrade Thymeleaf to 3.0
    
    add support for ILinkBuilder and IDecoupledTemplateLogicResolver services
    
    git-svn-id: https://svn.apache.org/repos/asf/sling/trunk/contrib/scripting/org.apache.sling.scripting.thymeleaf@1743664 13f79535-47bb-0310-9956-ffa450edef68
---
 .../internal/ThymeleafScriptEngineFactory.java     | 62 ++++++++++++++++++++++
 1 file changed, 62 insertions(+)

diff --git a/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java b/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java
index 03f0387..2f58531 100644
--- a/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java
+++ b/src/main/java/org/apache/sling/scripting/thymeleaf/internal/ThymeleafScriptEngineFactory.java
@@ -47,8 +47,10 @@ import org.thymeleaf.ITemplateEngine;
 import org.thymeleaf.TemplateEngine;
 import org.thymeleaf.cache.ICacheManager;
 import org.thymeleaf.dialect.IDialect;
+import org.thymeleaf.linkbuilder.ILinkBuilder;
 import org.thymeleaf.messageresolver.IMessageResolver;
 import org.thymeleaf.standard.StandardDialect;
+import org.thymeleaf.templateparser.markup.decoupled.IDecoupledTemplateLogicResolver;
 import org.thymeleaf.templateresolver.ITemplateResolver;
 
 @Component(
@@ -89,6 +91,23 @@ public final class ThymeleafScriptEngineFactory extends AbstractScriptEngineFact
     private List<IDialect> dialects;
 
     @Reference(
+        cardinality = ReferenceCardinality.MULTIPLE,
+        policy = ReferencePolicy.DYNAMIC,
+        bind = "addLinkBuilder",
+        unbind = "removeLinkBuilder"
+    )
+    private List<ILinkBuilder> linkBuilders;
+
+    @Reference(
+        cardinality = ReferenceCardinality.OPTIONAL,
+        policy = ReferencePolicy.DYNAMIC,
+        policyOption = ReferencePolicyOption.GREEDY,
+        bind = "setDecoupledTemplateLogicResolver",
+        unbind = "unsetDecoupledTemplateLogicResolver"
+    )
+    private volatile IDecoupledTemplateLogicResolver decoupledTemplateLogicResolver;
+
+    @Reference(
         cardinality = ReferenceCardinality.OPTIONAL,
         policy = ReferencePolicy.DYNAMIC,
         policyOption = ReferencePolicyOption.GREEDY,
@@ -164,6 +183,42 @@ public final class ThymeleafScriptEngineFactory extends AbstractScriptEngineFact
         }
     }
 
+    protected void addLinkBuilder(final ILinkBuilder linkBuilder) {
+        synchronized (lock) {
+            logger.debug("adding link builder '{}'", linkBuilder.getName());
+            if (templateEngine == null || templateEngine.isInitialized()) {
+                serviceTemplateEngine();
+            } else {
+                templateEngine.addLinkBuilder(linkBuilder);
+            }
+        }
+    }
+
+    protected void removeLinkBuilder(final ILinkBuilder linkBuilder) {
+        synchronized (lock) {
+            logger.debug("removing link builder '{}'", linkBuilder.getName());
+            serviceTemplateEngine();
+        }
+    }
+
+    protected void setDecoupledTemplateLogicResolver(final IDecoupledTemplateLogicResolver decoupledTemplateLogicResolver) {
+        synchronized (lock) {
+            logger.debug("setting decoupled template logic resolver '{}'", decoupledTemplateLogicResolver.getClass().getName());
+            if (templateEngine == null || templateEngine.isInitialized()) {
+                serviceTemplateEngine();
+            } else {
+                templateEngine.setDecoupledTemplateLogicResolver(decoupledTemplateLogicResolver);
+            }
+        }
+    }
+
+    protected void unsetDecoupledTemplateLogicResolver(final IDecoupledTemplateLogicResolver decoupledTemplateLogicResolver) {
+        synchronized (lock) {
+            logger.debug("unsetting decoupled template logic resolver '{}'", decoupledTemplateLogicResolver.getClass().getName());
+            serviceTemplateEngine();
+        }
+    }
+
     protected void setCacheManager(final ICacheManager cacheManager) {
         synchronized (lock) {
             logger.debug("setting cache manager '{}'", cacheManager.getClass().getName());
@@ -253,12 +308,19 @@ public final class ThymeleafScriptEngineFactory extends AbstractScriptEngineFact
             final Set<IMessageResolver> messageResolvers = new HashSet<>(this.messageResolvers);
             templateEngine.setMessageResolvers(messageResolvers);
         }
+        if (this.linkBuilders != null) {
+            final Set<ILinkBuilder> linkBuilders = new HashSet<>(this.linkBuilders);
+            templateEngine.setLinkBuilders(linkBuilders);
+        }
         if (this.dialects != null) {
             final Set<IDialect> dialects = new HashSet<>(this.dialects);
             templateEngine.setDialects(dialects);
         }
         final IDialect standardDialect = new StandardDialect();
         templateEngine.addDialect(standardDialect);
+        if (decoupledTemplateLogicResolver != null) {
+            templateEngine.setDecoupledTemplateLogicResolver(decoupledTemplateLogicResolver);
+        }
         templateEngine.setCacheManager(cacheManager);
         this.templateEngine = templateEngine;
     }

-- 
To stop receiving notification emails like this one, please contact
"commits@sling.apache.org" <co...@sling.apache.org>.