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/12/07 23:43:24 UTC

svn commit: r1718487 - in /sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf: SlingContext.java internal/DefaultSlingContext.java internal/ResourceBundleMessageResolver.java internal/ThymeleafScriptEngine.java

Author: olli
Date: Mon Dec  7 22:43:24 2015
New Revision: 1718487

URL: http://svn.apache.org/viewvc?rev=1718487&view=rev
Log:
SLING-5075 Upgrade Thymeleaf to 3.0

* adjust to new Context API
* adjust to new Message Resolution API
* cleanup

Removed:
    sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/SlingContext.java
    sling/trunk/contrib/scripting/thymeleaf/src/main/java/org/apache/sling/scripting/thymeleaf/internal/DefaultSlingContext.java
Modified:
    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/ThymeleafScriptEngine.java

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=1718487&r1=1718486&r2=1718487&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 Mon Dec  7 22:43:24 2015
@@ -18,7 +18,10 @@
  */
 package org.apache.sling.scripting.thymeleaf.internal;
 
+import java.text.MessageFormat;
 import java.util.Dictionary;
+import java.util.Locale;
+import java.util.ResourceBundle;
 
 import org.apache.felix.scr.annotations.Activate;
 import org.apache.felix.scr.annotations.Component;
@@ -100,26 +103,21 @@ public class ResourceBundleMessageResolv
     }
 
     @Override
-    public String resolveMessage(ITemplateContext context, Class<?> origin, String key, Object[] messageParameters) {
-        return null;
-    }
-
-    @Override
-    public String createAbsentMessageRepresentation(ITemplateContext context, Class<?> origin, String key, Object[] messageParameters) {
-        return null;
-    }
-
-    /*
-    @Override
-    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();
+    public String resolveMessage(final ITemplateContext templateContext, final Class<?> origin, final String key, final Object[] messageParameters) {
+        logger.debug("template context: {}, origin: {}, key: {}, message parameters: {}", templateContext, origin, key, messageParameters);
+        // TODO can origin be useful with Sling i18n?
+        final Locale locale = templateContext.getLocale();
         final ResourceBundle resourceBundle = resourceBundleProvider.getResourceBundle(locale);
         final String string = resourceBundle.getString(key);
         final MessageFormat messageFormat = new MessageFormat(string, locale);
         final String message = messageFormat.format((messageParameters != null ? messageParameters : EMPTY_MESSAGE_PARAMETERS));
-        return new MessageResolution(message);
+        logger.debug("message: '{}'", message);
+        return message;
+    }
+
+    @Override
+    public String createAbsentMessageRepresentation(final ITemplateContext templateContext, final Class<?> origin, final String key, final Object[] messageParameters) {
+        return key; // TODO make configurable
     }
-    */
 
 }

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=1718487&r1=1718486&r2=1718487&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 Mon Dec  7 22:43:24 2015
@@ -33,6 +33,7 @@ import org.apache.sling.api.scripting.Sl
 import org.apache.sling.scripting.api.AbstractSlingScriptEngine;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.thymeleaf.context.Context;
 import org.thymeleaf.context.IContext;
 
 public final class ThymeleafScriptEngine extends AbstractSlingScriptEngine {
@@ -64,12 +65,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
+        bindings.put(SlingScriptConstants.ATTR_SCRIPT_RESOURCE_RESOLVER, resourceResolver); // TODO SlingBindings.RESOLVER
 
         try {
-            final IContext context = new DefaultSlingContext(resourceResolver, locale, bindings);
-            // TODO optimize, process() calls TemplateManager which does resolving, parsing and processing
-            // resolving is already done by Sling, so we need a parsing and processing only call into TemplateEngine
+            final IContext context = new Context(locale, bindings);
             thymeleafScriptEngineFactory.getTemplateEngine().process(scriptName, context, writer);
         } catch (Exception e) {
             logger.error("Failure rendering Thymeleaf template '{}': {}", scriptName, e.getMessage());