Author: radu
Date: Wed Sep 23 12:49:05 2015
New Revision: 1704838

URL: http://svn.apache.org/viewvc?rev=1704838&view=rev
Log:
SLING-5053 - Add support for Enum comparison in Sightly scripts

* implemented support for Enum comparison like defined in version 1.2 draft of 
the Sightly specification
https://github.com/Adobe-Marketing-Cloud/sightly-spec/issues/19
https://github.com/Adobe-Marketing-Cloud/sightly-tck/issues/12

Modified:
    sling/trunk/bundles/scripting/sightly/engine/pom.xml
    
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/expression/node/BinaryOperator.java
    sling/trunk/bundles/scripting/sightly/testing-content/pom.xml
    sling/trunk/bundles/scripting/sightly/testing/pom.xml

Modified: sling/trunk/bundles/scripting/sightly/engine/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/pom.xml?rev=1704838&r1=1704837&r2=1704838&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/engine/pom.xml (original)
+++ sling/trunk/bundles/scripting/sightly/engine/pom.xml Wed Sep 23 12:49:05 
2015
@@ -78,7 +78,11 @@
                         
<Embed-Dependency>antlr4-runtime,org.abego.treelayout.core</Embed-Dependency>
                         <ScriptEngine-Name>${project.name}</ScriptEngine-Name>
                         
<ScriptEngine-Version>${project.version}</ScriptEngine-Version>
-                        <Provide-Capability>io.sightly; version:Version=1.0, 
io.sightly; version:Version=1.1</Provide-Capability>
+                        <Provide-Capability>
+                            io.sightly; version:Version=1.0,
+                            io.sightly; version:Version=1.1,
+                            io.sightly; version:Version=1.2
+                        </Provide-Capability>
                     </instructions>
                 </configuration>
             </plugin>

Modified: 
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/expression/node/BinaryOperator.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/expression/node/BinaryOperator.java?rev=1704838&r1=1704837&r2=1704838&view=diff
==============================================================================
--- 
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/expression/node/BinaryOperator.java
 (original)
+++ 
sling/trunk/bundles/scripting/sightly/engine/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/expression/node/BinaryOperator.java
 Wed Sep 23 12:49:05 2015
@@ -198,6 +198,16 @@ public enum BinaryOperator {
        if (left == null && right == null) {
            return true;
        }
+       if ((left instanceof Enum && right instanceof String) || (left 
instanceof String && right instanceof Enum)) {
+           String constantName = left instanceof String ? (String) left : 
(String) right;
+           Enum enumObject = left instanceof Enum ? (Enum) left : (Enum) right;
+           try {
+               Enum enumComparisonObject = Enum.valueOf(enumObject.getClass(), 
constantName);
+               return enumComparisonObject == enumObject;
+           } catch (Exception e) {
+               return false;
+           }
+       }
        if (left == null || right == null) {
            Object notNull = (left != null) ? left : right;
            if (notNull instanceof String || notNull instanceof Boolean || 
notNull instanceof Number) {

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=1704838&r1=1704837&r2=1704838&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing-content/pom.xml (original)
+++ sling/trunk/bundles/scripting/sightly/testing-content/pom.xml Wed Sep 23 
12:49:05 2015
@@ -100,7 +100,7 @@
                                 <artifactItem>
                                     <groupId>io.sightly</groupId>
                                     <artifactId>io.sightly.tck</artifactId>
-                                    <version>1.1.2</version>
+                                    <version>1.2.0</version>
                                     <type>jar</type>
                                     
<outputDirectory>${project.build.directory}/sightlytck/</outputDirectory>
                                     
<includes>**/*.html,**/*.js,**/*.java</includes>

Modified: sling/trunk/bundles/scripting/sightly/testing/pom.xml
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing/pom.xml?rev=1704838&r1=1704837&r2=1704838&view=diff
==============================================================================
--- sling/trunk/bundles/scripting/sightly/testing/pom.xml (original)
+++ sling/trunk/bundles/scripting/sightly/testing/pom.xml Wed Sep 23 12:49:05 
2015
@@ -203,7 +203,7 @@
         <dependency>
             <groupId>io.sightly</groupId>
             <artifactId>io.sightly.tck</artifactId>
-            <version>1.1.3</version>
+            <version>1.2.0</version>
             <scope>test</scope>
             <exclusions>
                 <exclusion>


Reply via email to