You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by ra...@apache.org on 2016/12/14 22:13:33 UTC

svn commit: r1774351 - in /sling/trunk/bundles/scripting/sightly: compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/ compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/expression/nodes/ compiler/src/main/java/org/apache...

Author: radu
Date: Wed Dec 14 22:13:32 2016
New Revision: 1774351

URL: http://svn.apache.org/viewvc?rev=1774351&view=rev
Log:
SLING-6399 - Implement support for date and number formatting for HTL

* implemented support for the date and number formatting features from version 1.3
of the HTL Language Specification
* applied slightly modified patch submitted by Vlad B\u0103ilescu at https://github.com/apache/sling/pull/191
(Closes #191)

Modified:
    sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java
    sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/expression/nodes/NumericConstant.java
    sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/filter/FormatFilter.java
    sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/filter/I18nFilter.java
    sling/trunk/bundles/scripting/sightly/compiler/src/test/java/org/apache/sling/scripting/sightly/impl/frontend/ExpressionWrapperTest.java
    sling/trunk/bundles/scripting/sightly/engine/pom.xml
    sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/FormatFilterExtension.java
    sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java
    sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/RuntimeObjectModel.java
    sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/package-info.java
    sling/trunk/bundles/scripting/sightly/testing-content/pom.xml
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/models/TestModel.java
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/use/Test.java
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/use/package-info.java
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/locales/de.json
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/Test.java
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/jsp-el.jsp
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-pojo-bundle.html
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-pojo-repo.html
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-slingmodels.html
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-js-async.html
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-js-sync.html
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test-async.js
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test-sync.js
    sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test.jsp
    sling/trunk/bundles/scripting/sightly/testing/pom.xml
    sling/trunk/bundles/scripting/sightly/testing/src/main/provisioning/model.txt

Modified: sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java (original)
+++ sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/SightlyCompiler.java Wed Dec 14 22:13:32 2016
@@ -103,8 +103,8 @@ public final class SightlyCompiler {
 
         // register filters
         final List<Filter> filters = new ArrayList<>(5);
-        filters.add(FormatFilter.getInstance());
         filters.add(I18nFilter.getInstance());
+        filters.add(FormatFilter.getInstance());
         filters.add(JoinFilter.getInstance());
         filters.add(URIManipulationFilter.getInstance());
         filters.add(XSSFilter.getInstance());

Modified: sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/expression/nodes/NumericConstant.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/expression/nodes/NumericConstant.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/expression/nodes/NumericConstant.java (original)
+++ sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/compiler/expression/nodes/NumericConstant.java Wed Dec 14 22:13:32 2016
@@ -49,7 +49,7 @@ public final class NumericConstant imple
      * @param value the number representation
      */
     public NumericConstant(Number value) {
-        this.value = value.longValue();
+        this.value = value;
         this.text = value.toString();
     }
 
@@ -80,11 +80,10 @@ public final class NumericConstant imple
     }
 
     private Number parseNumber(String s) {
-        try {
-            return Long.parseLong(s);
-        } catch (NumberFormatException e) {
+        if (s.contains(".")) {
             return Double.parseDouble(s);
         }
+        return Long.parseLong(s);
     }
 
 }

Modified: sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/filter/FormatFilter.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/filter/FormatFilter.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/filter/FormatFilter.java (original)
+++ sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/filter/FormatFilter.java Wed Dec 14 22:13:32 2016
@@ -21,6 +21,7 @@ package org.apache.sling.scripting.sight
 import org.apache.sling.scripting.sightly.compiler.RuntimeFunction;
 import org.apache.sling.scripting.sightly.compiler.expression.Expression;
 import org.apache.sling.scripting.sightly.compiler.expression.ExpressionNode;
+import org.apache.sling.scripting.sightly.compiler.expression.nodes.MapLiteral;
 import org.apache.sling.scripting.sightly.compiler.expression.nodes.RuntimeCall;
 
 /**
@@ -29,6 +30,9 @@ import org.apache.sling.scripting.sightl
 public class FormatFilter extends AbstractFilter {
 
     public static final String FORMAT_OPTION = "format";
+    public static final String TYPE_OPTION = "type";
+    public static final String FORMAT_LOCALE_OPTION = "formatLocale";
+    public static final String TIMEZONE_OPTION = "timezone";
 
     private static final class FormatFilterLoader {
         private static final FormatFilter INSTANCE = new FormatFilter();
@@ -53,7 +57,13 @@ public class FormatFilter extends Abstra
             return expression;
         }
         ExpressionNode translation =
-                new RuntimeCall(RuntimeFunction.FORMAT, expression.getRoot(), expression.removeOption(FORMAT_OPTION));
+                new RuntimeCall(RuntimeFunction.FORMAT, expression.getRoot(),
+                        new MapLiteral(getFilterOptions(expression,
+                                FORMAT_OPTION,
+                                TYPE_OPTION,
+                                I18nFilter.LOCALE_OPTION,
+                                FORMAT_LOCALE_OPTION,
+                                TIMEZONE_OPTION)));
         return expression.withNode(translation);
     }
 }

Modified: sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/filter/I18nFilter.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/filter/I18nFilter.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/filter/I18nFilter.java (original)
+++ sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/filter/I18nFilter.java Wed Dec 14 22:13:32 2016
@@ -18,6 +18,8 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.impl.filter;
 
+import java.util.Map;
+
 import org.apache.sling.scripting.sightly.compiler.RuntimeFunction;
 import org.apache.sling.scripting.sightly.compiler.expression.Expression;
 import org.apache.sling.scripting.sightly.compiler.expression.ExpressionNode;
@@ -55,9 +57,11 @@ public final class I18nFilter extends Ab
                 == ExpressionContext.PLUGIN_DATA_SLY_TEMPLATE || expressionContext == ExpressionContext.PLUGIN_DATA_SLY_CALL) {
             return expression;
         }
+        Map <String, ExpressionNode> options = getFilterOptions(expression, HINT_OPTION, LOCALE_OPTION, BASENAME_OPTION);
         ExpressionNode translation = new RuntimeCall(RuntimeFunction.I18N, expression.getRoot(), new MapLiteral
-                (getFilterOptions(expression, HINT_OPTION, LOCALE_OPTION, BASENAME_OPTION)));
+                (options));
         expression.removeOption(I18N_OPTION);
+        expression.getOptions().put(FormatFilter.FORMAT_LOCALE_OPTION, options.get(LOCALE_OPTION));
         return expression.withNode(translation);
     }
 }

Modified: sling/trunk/bundles/scripting/sightly/compiler/src/test/java/org/apache/sling/scripting/sightly/impl/frontend/ExpressionWrapperTest.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/compiler/src/test/java/org/apache/sling/scripting/sightly/impl/frontend/ExpressionWrapperTest.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/compiler/src/test/java/org/apache/sling/scripting/sightly/impl/frontend/ExpressionWrapperTest.java (original)
+++ sling/trunk/bundles/scripting/sightly/compiler/src/test/java/org/apache/sling/scripting/sightly/impl/frontend/ExpressionWrapperTest.java Wed Dec 14 22:13:32 2016
@@ -74,7 +74,7 @@ public class ExpressionWrapperTest {
         interpolation.addExpression(new Expression(new StringConstant("hello"), options));
         ExpressionWrapper wrapper = new ExpressionWrapper(filters);
         Expression result = wrapper.transform(interpolation, MarkupContext.TEXT, ExpressionContext.TEXT);
-        List<ExpressionNode> xssArguments = runEmptyOptionsAndXSSAssertions(result);
+        List<ExpressionNode> xssArguments = runOptionsAndXSSAssertions(result, 1);
         RuntimeCall i18n = (RuntimeCall) xssArguments.get(0);
         assertEquals("Expected to I18n runtime function call.", RuntimeFunction.I18N, i18n.getFunctionName());
     }
@@ -90,7 +90,7 @@ public class ExpressionWrapperTest {
         interpolation.addExpression(new Expression(new StringConstant("Hello {0} {1}"), options));
         ExpressionWrapper wrapper = new ExpressionWrapper(filters);
         Expression result = wrapper.transform(interpolation, MarkupContext.TEXT, ExpressionContext.TEXT);
-        List<ExpressionNode> xssArguments = runEmptyOptionsAndXSSAssertions(result);
+        List<ExpressionNode> xssArguments = runOptionsAndXSSAssertions(result, 0);
         RuntimeCall format = (RuntimeCall) xssArguments.get(0);
         assertEquals(RuntimeFunction.FORMAT, format.getFunctionName());
     }
@@ -106,7 +106,7 @@ public class ExpressionWrapperTest {
         interpolation.addExpression(new Expression(new ArrayLiteral(array), options));
         ExpressionWrapper wrapper = new ExpressionWrapper(filters);
         Expression result = wrapper.transform(interpolation, MarkupContext.TEXT, ExpressionContext.TEXT);
-        List<ExpressionNode> xssArguments = runEmptyOptionsAndXSSAssertions(result);
+        List<ExpressionNode> xssArguments = runOptionsAndXSSAssertions(result, 0);
         RuntimeCall join = (RuntimeCall) xssArguments.get(0);
         assertEquals(RuntimeFunction.JOIN, join.getFunctionName());
     }
@@ -142,13 +142,13 @@ public class ExpressionWrapperTest {
                         options));
         ExpressionWrapper wrapper = new ExpressionWrapper(filters);
         Expression result = wrapper.transform(interpolation, MarkupContext.TEXT, ExpressionContext.TEXT);
-        List<ExpressionNode> xssArguments = runEmptyOptionsAndXSSAssertions(result);
+        List<ExpressionNode> xssArguments = runOptionsAndXSSAssertions(result, 0);
         RuntimeCall join = (RuntimeCall) xssArguments.get(0);
         assertEquals(RuntimeFunction.URI_MANIPULATION, join.getFunctionName());
     }
 
-    private List<ExpressionNode> runEmptyOptionsAndXSSAssertions(Expression result) {
-        assertTrue("Expected empty options map for expression after processing.", result.getOptions().isEmpty());
+    private List<ExpressionNode> runOptionsAndXSSAssertions(Expression result, int expectedOptions) {
+        assertEquals("Options map size for expression after processing is different from expected.", expectedOptions, result.getOptions().size());
         RuntimeCall xss = (RuntimeCall) result.getRoot();
         assertEquals("Expected XSS escaping applied to expression.", RuntimeFunction.XSS, xss.getFunctionName());
         return xss.getArguments();

Modified: sling/trunk/bundles/scripting/sightly/engine/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/pom.xml?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/engine/pom.xml (original)
+++ sling/trunk/bundles/scripting/sightly/engine/pom.xml Wed Dec 14 22:13:32 2016
@@ -170,7 +170,7 @@
         <dependency>
             <groupId>org.apache.sling</groupId>
             <artifactId>org.apache.sling.scripting.sightly.compiler.java</artifactId>
-            <version>1.0.4</version>
+            <version>1.0.5-SNAPSHOT</version>
             <scope>provided</scope>
         </dependency>
 

Modified: sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/FormatFilterExtension.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/FormatFilterExtension.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/FormatFilterExtension.java (original)
+++ sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/engine/extension/FormatFilterExtension.java Wed Dec 14 22:13:32 2016
@@ -18,9 +18,21 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.impl.engine.extension;
 
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
+import java.text.SimpleDateFormat;
+import java.util.Calendar;
+import java.util.Date;
+import java.util.Locale;
+import java.util.Map;
+import java.util.TimeZone;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
+import org.apache.commons.lang.LocaleUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.sling.scripting.sightly.SightlyException;
 import org.apache.sling.scripting.sightly.compiler.RuntimeFunction;
 import org.apache.sling.scripting.sightly.extension.RuntimeExtension;
 import org.apache.sling.scripting.sightly.render.RenderContext;
@@ -36,14 +48,65 @@ import org.osgi.service.component.annota
 public class FormatFilterExtension implements RuntimeExtension {
 
     private static final Pattern PLACEHOLDER_REGEX = Pattern.compile("\\{\\d+}");
+    private static final String FORMAT_OPTION = "format";
+    private static final String TYPE_OPTION = "type";
+    private static final String LOCALE_OPTION = "locale";
+    private static final String FORMAT_LOCALE_OPTION = "formatLocale";
+    private static final String TIMEZONE_OPTION = "timezone";
+
+    private static final String DATE_FORMAT_TYPE = "date";
+    private static final String NUMBER_FORMAT_TYPE = "number";
+    private static final String STRING_FORMAT_TYPE = "string";
 
     @Override
     public Object call(final RenderContext renderContext, Object... arguments) {
         ExtensionUtils.checkArgumentCount(RuntimeFunction.FORMAT, arguments, 2);
         RuntimeObjectModel runtimeObjectModel = renderContext.getObjectModel();
         String source = runtimeObjectModel.toString(arguments[0]);
-        Object[] params = decodeParams(runtimeObjectModel, arguments[1]);
-        return replace(runtimeObjectModel, source, params);
+        Map<String, Object> options = (Map<String, Object>) arguments[1];
+
+        String formattingType = runtimeObjectModel.toString(options.get(TYPE_OPTION));
+        Object formatObject = options.get(FORMAT_OPTION);
+        boolean hasPlaceHolders = PLACEHOLDER_REGEX.matcher(source).find();
+        if (STRING_FORMAT_TYPE.equals(formattingType)) {
+            Object[] params = decodeParams(runtimeObjectModel, formatObject);
+            return formatString(runtimeObjectModel, source, params);
+        } else if (DATE_FORMAT_TYPE.equals(formattingType) || (!hasPlaceHolders && runtimeObjectModel.isDate(formatObject))) {
+            Locale locale = getLocale(runtimeObjectModel, options);
+            TimeZone timezone = getTimezone(runtimeObjectModel, options);
+            return formatDate(source, runtimeObjectModel.toDate(formatObject), locale, timezone);
+        } else if (NUMBER_FORMAT_TYPE.equals(formattingType) || (!hasPlaceHolders && runtimeObjectModel.isNumber(formatObject))) {
+            Locale locale = getLocale(runtimeObjectModel, options);
+            return formatNumber(source, runtimeObjectModel.toNumber(formatObject), locale);
+        }
+        Object[] params = decodeParams(runtimeObjectModel, formatObject);
+        return formatString(runtimeObjectModel, source, params);
+    }
+
+    private Locale getLocale(RuntimeObjectModel runtimeObjectModel, Map<String, Object> options) {
+        String localeOption = null;
+        if (options.containsKey(LOCALE_OPTION)) {
+            localeOption = runtimeObjectModel.toString(options.get(LOCALE_OPTION));
+        }
+        if (localeOption == null && options.containsKey(FORMAT_LOCALE_OPTION)) {
+            localeOption = runtimeObjectModel.toString(options.get(FORMAT_LOCALE_OPTION));
+        }
+        if (StringUtils.isNotBlank(localeOption)) {
+            return LocaleUtils.toLocale(localeOption);
+        }
+        return null;
+    }
+
+    private TimeZone getTimezone(RuntimeObjectModel runtimeObjectModel, Map<String, Object> options) {
+        if ( options.containsKey(TIMEZONE_OPTION)) {
+            return TimeZone.getTimeZone(runtimeObjectModel.toString(options.get(TIMEZONE_OPTION)));
+        } else {
+            Object formatObject = options.get(FORMAT_OPTION);
+            if (formatObject instanceof Calendar) {
+                return ((Calendar)formatObject).getTimeZone();
+            }
+            return TimeZone.getDefault();
+        }
     }
 
     private Object[] decodeParams(RuntimeObjectModel runtimeObjectModel, Object paramObj) {
@@ -53,7 +116,7 @@ public class FormatFilterExtension imple
         return new Object[] {paramObj};
     }
 
-    private String replace(RuntimeObjectModel runtimeObjectModel, String source, Object[] params) {
+    private String formatString(RuntimeObjectModel runtimeObjectModel, String source, Object[] params) {
         Matcher matcher = PLACEHOLDER_REGEX.matcher(source);
         StringBuilder builder = new StringBuilder();
         int lastPos = 0;
@@ -63,7 +126,7 @@ public class FormatFilterExtension imple
             if (matched) {
                 String group = matcher.group();
                 int paramIndex = Integer.parseInt(group.substring(1, group.length() - 1));
-                String replacement = param(runtimeObjectModel, params, paramIndex);
+                String replacement = toString(runtimeObjectModel, params, paramIndex);
                 int matchStart = matcher.start();
                 int matchEnd = matcher.end();
                 builder.append(source, lastPos, matchStart).append(replacement);
@@ -74,10 +137,43 @@ public class FormatFilterExtension imple
         return builder.toString();
     }
 
-    private String param(RuntimeObjectModel runtimeObjectModel, Object[] params, int index) {
+    private String toString(RuntimeObjectModel runtimeObjectModel, Object[] params, int index) {
         if (index >= 0 && index < params.length) {
             return runtimeObjectModel.toString(params[index]);
         }
         return "";
     }
+
+    private String formatDate(String format, Date date, Locale locale, TimeZone timezone) {
+        try {
+            SimpleDateFormat formatter;
+            if (locale != null) {
+                formatter = new SimpleDateFormat(format, locale);
+            } else {
+                formatter = new SimpleDateFormat(format);
+            }
+            if (timezone != null) {
+                formatter.setTimeZone(timezone);
+            }
+            return formatter.format(date);
+        } catch (Exception e) {
+            String error = String.format("Error during formatting of date %s with format %s, locale %s and timezone %s", date, format, locale, timezone);
+            throw new SightlyException( error, e);
+        }
+    }
+
+    private String formatNumber(String format, Number number, Locale locale) {
+        try {
+            NumberFormat formatter;
+            if (locale != null) {
+                formatter = new DecimalFormat(format, new DecimalFormatSymbols(locale));
+            } else {
+                formatter = new DecimalFormat(format);
+            }
+            return formatter.format(number);
+        } catch (Exception e) {
+            String error = String.format("Error during formatting of number %s with format %s and locale %s", number, format, locale);
+            throw new SightlyException( error, e);
+        }
+    }
 }

Modified: sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java (original)
+++ sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java Wed Dec 14 22:13:32 2016
@@ -21,8 +21,10 @@ import java.lang.reflect.Method;
 import java.lang.reflect.Modifier;
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Calendar;
 import java.util.Collection;
 import java.util.Collections;
+import java.util.Date;
 import java.util.Enumeration;
 import java.util.HashMap;
 import java.util.HashSet;
@@ -48,7 +50,6 @@ public abstract class AbstractRuntimeObj
      */
     public static final Set<Class<?>> PRIMITIVE_CLASSES = Collections.unmodifiableSet(new HashSet<Class<?>>() {{
         add(Boolean.class);
-        add(Boolean.class);
         add(Character.class);
         add(Byte.class);
         add(Short.class);
@@ -67,6 +68,16 @@ public abstract class AbstractRuntimeObj
     }
 
     @Override
+    public boolean isDate(Object target) {
+        return (target instanceof Date || target instanceof Calendar);
+    }
+
+    @Override
+    public boolean isNumber(Object target) {
+        return (target instanceof Number);
+    }
+
+    @Override
     public boolean isCollection(Object target) {
         return (target instanceof Collection) || (target instanceof Object[]) || (target instanceof Iterable) ||
                 (target instanceof Iterator);
@@ -96,6 +107,15 @@ public abstract class AbstractRuntimeObj
         return 0;
     }
 
+    public Date toDate(Object object) {
+        if (object instanceof Date) {
+            return (Date)object;
+        } else if (object instanceof Calendar) {
+            return ((Calendar)object).getTime();
+        }
+        return new Date(0);
+    }
+
     @Override
     public String toString(Object target) {
         return objectToString(target);
@@ -368,4 +388,3 @@ public abstract class AbstractRuntimeObj
     }
 
 }
-

Modified: sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/RuntimeObjectModel.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/RuntimeObjectModel.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/RuntimeObjectModel.java (original)
+++ sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/RuntimeObjectModel.java Wed Dec 14 22:13:32 2016
@@ -17,6 +17,7 @@
 package org.apache.sling.scripting.sightly.render;
 
 import java.util.Collection;
+import java.util.Date;
 import java.util.Map;
 
 import org.osgi.annotation.versioning.ProviderType;
@@ -44,6 +45,10 @@ public interface RuntimeObjectModel {
      */
     boolean isCollection(Object target);
 
+    boolean isNumber(Object target);
+
+    boolean isDate(Object target);
+
     /**
      * Resolve a property of a target object and return its value. The property can
      * be either an index or a name
@@ -70,6 +75,8 @@ public interface RuntimeObjectModel {
      */
     Number toNumber(Object object);
 
+    Date toDate(Object object);
+
     /**
      * Convert the given object to a string.
      *

Modified: sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/package-info.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/package-info.java (original)
+++ sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/package-info.java Wed Dec 14 22:13:32 2016
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ******************************************************************************/
-@Version("2.0.0")
+@Version("2.1.0")
 package org.apache.sling.scripting.sightly.render;
 
 import org.osgi.annotation.versioning.Version;

Modified: sling/trunk/bundles/scripting/sightly/testing-content/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/pom.xml?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/pom.xml (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/pom.xml Wed Dec 14 22:13:32 2016
@@ -100,7 +100,7 @@
                                 <artifactItem>
                                     <groupId>io.sightly</groupId>
                                     <artifactId>io.sightly.tck</artifactId>
-                                    <version>1.2.5</version>
+                                    <version>1.3.0-SNAPSHOT</version>
                                     <type>jar</type>
                                     <outputDirectory>${project.build.directory}/sightlytck/</outputDirectory>
                                     <includes>**/*.html,**/*.js,**/*.java</includes>
@@ -187,6 +187,14 @@
         </plugins>
     </build>
 
+    <repositories>
+        <repository>
+            <id>oss-sonatype</id>
+            <name>OSS Sonatype</name>
+            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
+        </repository>
+    </repositories>
+
     <dependencies>
         <!-- Test bundle dependencies -->
         <dependency>

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/models/TestModel.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/models/TestModel.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/models/TestModel.java (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/models/TestModel.java Wed Dec 14 22:13:32 2016
@@ -16,6 +16,7 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.testing.models;
 
+import java.util.Date;
 import java.util.Iterator;
 import javax.inject.Inject;
 
@@ -72,4 +73,8 @@ public class TestModel {
         return resource.listChildren();
     }
 
+    public Date getDate() {
+        return new Date();
+    }
+
 }

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/use/Test.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/use/Test.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/use/Test.java (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/use/Test.java Wed Dec 14 22:13:32 2016
@@ -16,6 +16,7 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.testing.use;
 
+import java.util.Date;
 import java.util.Iterator;
 import javax.script.Bindings;
 
@@ -82,4 +83,8 @@ public class Test implements Use {
     public Iterator<Resource> getChildren() {
         return this.children;
     }
+
+    public Date getDate() {
+        return new Date();
+    }
 }
\ No newline at end of file

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/use/package-info.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/use/package-info.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/use/package-info.java (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/java/org/apache/sling/scripting/sightly/testing/use/package-info.java Wed Dec 14 22:13:32 2016
@@ -15,7 +15,7 @@
  * limitations under the License.
  ******************************************************************************/
 
-@Version("1.0.0")
+@Version("1.1.0")
 package org.apache.sling.scripting.sightly.testing.use;
 
 import org.osgi.annotation.versioning.Version;

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/locales/de.json
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/locales/de.json?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/locales/de.json (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/locales/de.json Wed Dec 14 22:13:32 2016
@@ -26,5 +26,20 @@
         "jcr:primaryType": "sling:MessageEntry",
         "sling:key"      : "the bank",
         "sling:message"  : "das Ufer"
+    },
+    "dayofweek"         : {
+        "jcr:primaryType": "sling:MessageEntry",
+        "sling:key"      : "'Day of week': EEEE",
+        "sling:message"  : "'Wochentag': EEEE"
+    },
+    "total"              : {
+        "jcr:primaryType": "sling:MessageEntry",
+        "sling:key"      : "Total: {0}",
+        "sling:message"  : "Gesamtbetrag: {0}"
+    },
+    "number"        : {
+        "jcr:primaryType": "sling:MessageEntry",
+        "sling:key"      : "##",
+        "sling:message"  : "##.###"
     }
 }

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/Test.java
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/Test.java?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/Test.java (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/Test.java Wed Dec 14 22:13:32 2016
@@ -18,6 +18,7 @@
  ******************************************************************************/
 package apps.sightlyperf.test;
 
+import java.util.Date;
 import java.util.Iterator;
 
 import javax.script.Bindings;
@@ -85,4 +86,8 @@ public class Test implements Use {
     public Iterator<Resource> getChildren() {
         return this.children;
     }
+
+    public Date getDate() {
+        return new Date();
+    }
 }
\ No newline at end of file

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/jsp-el.jsp
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/jsp-el.jsp?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/jsp-el.jsp (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/jsp-el.jsp Wed Dec 14 22:13:32 2016
@@ -1,4 +1,5 @@
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
+<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>
 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
 <%@ taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling"%>
 <%--~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -22,9 +23,11 @@
 <sling:defineObjects />
 <c:set var="properties" value="${sling:adaptTo(resource,'org.apache.sling.api.resource.ValueMap')}" />
 <c:set var="tag" value="${sling:getValue(properties, 'tag', '')}" />
+<c:set var="now" value="<%=new java.util.Date()%>" />
 <c:if test="${tag != ''}"><${tag}></c:if>
 ${sling:encode(sling:getValue(properties, 'text', resource.path), 'HTML')}
 <c:if test="${tag != ''}"></${tag}></c:if>
+<fmt:formatDate pattern="yyyy-MM-dd HH:mm:ss.SSS" value="${now}" />
 <sling:call script="mode.jsp" />
 <c:if test="${sling:getValue(properties, 'includeChildren', false)}">
     <ul>

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-pojo-bundle.html
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-pojo-bundle.html?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-pojo-bundle.html (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-pojo-bundle.html Wed Dec 14 22:13:32 2016
@@ -20,6 +20,7 @@
     ${test.tag != null ? test.startTag : '' @ context = "unsafe"}
     ${test.text @ context = "text"}
     ${test.tag != null ? test.endTag : '' @ context = "unsafe"}
+    ${'yyyy-MM-dd HH:mm:ss.SSS' @ format = test.date}
     <div data-sly-include="mode.jsp" data-sly-unwrap=""></div>
     <ul data-sly-test="${test.includeChildren}" data-sly-list.child="${test.children}">
         <li data-sly-resource="${child.path}"></li>

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-pojo-repo.html
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-pojo-repo.html?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-pojo-repo.html (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-pojo-repo.html Wed Dec 14 22:13:32 2016
@@ -20,6 +20,7 @@
     ${test.tag != null ? test.startTag : '' @ context = "unsafe"}
     ${test.text @ context = "text"}
     ${test.tag != null ? test.endTag : '' @ context = "unsafe"}
+    ${'yyyy-MM-dd HH:mm:ss.SSS' @ format = test.date}
     <div data-sly-include="mode.jsp" data-sly-unwrap=""></div>
     <ul data-sly-test="${test.includeChildren}" data-sly-list.child="${test.children}">
         <li data-sly-resource="${child.path}"></li>

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-slingmodels.html
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-slingmodels.html?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-slingmodels.html (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-java-slingmodels.html Wed Dec 14 22:13:32 2016
@@ -20,6 +20,7 @@
     ${test.tag != null ? test.startTag : '' @ context = "unsafe"}
     ${test.text @ context = "text"}
     ${test.tag != null ? test.endTag : '' @ context = "unsafe"}
+    ${'yyyy-MM-dd HH:mm:ss.SSS' @ format = test.date}
     <div data-sly-include="mode.jsp" data-sly-unwrap=""></div>
     <ul data-sly-test="${test.includeChildren}" data-sly-list.child="${test.children}">
         <li data-sly-resource="${child.path}"></li>

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-js-async.html
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-js-async.html?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-js-async.html (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-js-async.html Wed Dec 14 22:13:32 2016
@@ -20,6 +20,7 @@
     ${test.tag != null ? test.startTag : '' @ context = "unsafe"}
     ${test.text @ context = "text"}
     ${test.tag != null ? test.endTag : '' @ context = "unsafe"}
+    ${'yyyy-MM-dd HH:mm:ss.SSS' @ format = test.date}
     <div data-sly-include="mode.jsp" data-sly-unwrap=""></div>
     <ul data-sly-test="${test.includeChildren}" data-sly-list.child="${test.children}">
         <li data-sly-resource="${child.path}"></li>

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-js-sync.html
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-js-sync.html?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-js-sync.html (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/sly-js-sync.html Wed Dec 14 22:13:32 2016
@@ -18,6 +18,7 @@
     ${test.tag != null ? test.startTag : '' @ context = "unsafe"}
     ${test.text @ context = "text"}
     ${test.tag != null ? test.endTag : '' @ context = "unsafe"}
+    ${'yyyy-MM-dd HH:mm:ss.SSS' @ format = test.date}
     <div data-sly-include="mode.jsp" data-sly-unwrap=""></div>
     <ul data-sly-test="${test.includeChildren}" data-sly-list.child="${test.children}">
         <li data-sly-resource="${child.path}"></li>

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test-async.js
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test-async.js?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test-async.js (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test-async.js Wed Dec 14 22:13:32 2016
@@ -28,6 +28,7 @@ use(function () {
         test.startTag = '<' + test.tag + '>';
         test.endTag = '</' + test.tag + '>';
     }
+    test.date = new Packages.java.util.Date();
     test.includeChildren = properties.get('includeChildren') || false;
     if (test.includeChildren) {
         test.children = sightly.resource.getChildren();

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test-sync.js
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test-sync.js?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test-sync.js (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test-sync.js Wed Dec 14 22:13:32 2016
@@ -26,6 +26,7 @@ use(function () {
         test.startTag = '<' + test.tag + '>';
         test.endTag = '</' + test.tag + '>';
     }
+    test.date = new Packages.java.util.Date();
     test.includeChildren = properties.get('includeChildren') || false;
     if (test.includeChildren) {
         test.children = resource.getChildren();

Modified: sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test.jsp
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test.jsp?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test.jsp (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightlyperf/test/test.jsp Wed Dec 14 22:13:32 2016
@@ -1,7 +1,9 @@
 <%@ page import="org.apache.sling.api.resource.Resource" %>
 <%@ page import="org.apache.sling.api.resource.ValueMap" %>
 <%@ page import="org.apache.sling.xss.XSSAPI" %>
+<%@ page import="java.util.Date" %>
 <%@ page import="java.util.Iterator" %>
+<%@ page import="java.text.SimpleDateFormat" %>
 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions"%>
 <%@ taglib prefix="sling" uri="http://sling.apache.org/taglibs/sling"%>
@@ -36,8 +38,9 @@
     if (tag != null) {
         out.println("</" + tag + ">");
     }
-
+    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS");
 %>
+    <%=sdf.format(new Date())%>
     <sling:call script="mode.jsp" />
 <%
 

Modified: sling/trunk/bundles/scripting/sightly/testing/pom.xml
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing/pom.xml?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing/pom.xml (original)
+++ sling/trunk/bundles/scripting/sightly/testing/pom.xml Wed Dec 14 22:13:32 2016
@@ -379,13 +379,21 @@
         </profile>
     </profiles>
 
+    <repositories>
+        <repository>
+            <id>oss-sonatype</id>
+            <name>OSS Sonatype</name>
+            <url>https://oss.sonatype.org/content/repositories/snapshots</url>
+        </repository>
+    </repositories>
+
     <dependencies>
 
         <!-- The integration tests -->
         <dependency>
             <groupId>io.sightly</groupId>
             <artifactId>io.sightly.tck</artifactId>
-            <version>1.2.5</version>
+            <version>1.3.0-SNAPSHOT</version>
             <scope>test</scope>
             <exclusions>
                 <exclusion>

Modified: sling/trunk/bundles/scripting/sightly/testing/src/main/provisioning/model.txt
URL: http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing/src/main/provisioning/model.txt?rev=1774351&r1=1774350&r2=1774351&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing/src/main/provisioning/model.txt (original)
+++ sling/trunk/bundles/scripting/sightly/testing/src/main/provisioning/model.txt Wed Dec 14 22:13:32 2016
@@ -20,8 +20,8 @@
 # Dependencies
 [artifacts]
   org.apache.sling/org.apache.sling.launchpad/9-SNAPSHOT/slingstart
-  org.apache.sling/org.apache.sling.scripting.api/2.1.11-SNAPSHOT
-  org.apache.sling/org.apache.sling.scripting.core/2.0.43-SNAPSHOT
+  org.apache.sling/org.apache.sling.scripting.api/2.1.13-SNAPSHOT
+  org.apache.sling/org.apache.sling.scripting.core/2.0.45-SNAPSHOT
   org.apache.sling/org.apache.sling.scripting.sightly.compiler
   org.apache.sling/org.apache.sling.scripting.sightly.compiler.java
   org.apache.sling/org.apache.sling.scripting.sightly