Author: radu
Date: Fri Jul  8 11:20:36 2016
New Revision: 1751880

URL: http://svn.apache.org/viewvc?rev=1751880&view=rev
Log:
SLING-5825 - Add support for implicit conversion of Enum to String

Added:
    
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/TestEnumHolder.java
Modified:
    
sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/CompileTimeObjectModel.java
    
sling/trunk/bundles/scripting/sightly/java-compiler/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java
    
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/use.html
    
sling/trunk/bundles/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java

Modified: 
sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/CompileTimeObjectModel.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/CompileTimeObjectModel.java?rev=1751880&r1=1751879&r2=1751880&view=diff
==============================================================================
--- 
sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/CompileTimeObjectModel.java
 (original)
+++ 
sling/trunk/bundles/scripting/sightly/compiler/src/main/java/org/apache/sling/scripting/sightly/impl/compiler/CompileTimeObjectModel.java
 Fri Jul  8 11:20:36 2016
@@ -130,6 +130,8 @@ public final class CompileTimeObjectMode
                 output = (String) obj;
             } else if (isPrimitive(obj)) {
                 output = obj.toString();
+            } else if (obj instanceof Enum) {
+                return ((Enum) obj).name();
             } else {
                 Collection<?> col = obtainCollection(obj);
                 if (col != null) {

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=1751880&r1=1751879&r2=1751880&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
 Fri Jul  8 11:20:36 2016
@@ -130,6 +130,8 @@ public abstract class AbstractRuntimeObj
                 output = (String) obj;
             } else if (isPrimitive(obj)) {
                 output = obj.toString();
+            } else if (obj instanceof Enum) {
+                return ((Enum) obj).name();
             } else {
                 Collection<?> col = obtainCollection(obj);
                 if (col != null) {

Added: 
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/TestEnumHolder.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/TestEnumHolder.java?rev=1751880&view=auto
==============================================================================
--- 
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/TestEnumHolder.java
 (added)
+++ 
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/TestEnumHolder.java
 Fri Jul  8 11:20:36 2016
@@ -0,0 +1,31 @@
+/*******************************************************************************
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ 
******************************************************************************/
+package apps.sightly.scripts.use;
+
+public class TestEnumHolder {
+
+    enum TestEnum {
+        ENUM_CONSTANT;
+    }
+
+    public TestEnum getConstantValue() {
+        return TestEnum.ENUM_CONSTANT;
+    }
+
+}

Modified: 
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/use.html
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/use.html?rev=1751880&r1=1751879&r2=1751880&view=diff
==============================================================================
--- 
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/use.html
 (original)
+++ 
sling/trunk/bundles/scripting/sightly/testing-content/src/main/resources/SLING-INF/apps/sightly/scripts/use/use.html
 Fri Jul  8 11:20:36 2016
@@ -21,16 +21,20 @@
     <head>
         <title>Sightly Use-API - Sling implementation</title>
     </head>
-    <body>
-        <div id="reqmodel" 
data-sly-use.reqmodel="${'org.apache.sling.scripting.sightly.testing.models.RequestModel'
 @
-            argument='SUCCESS'}">${reqmodel.title}</div>
+    <body 
data-sly-use.reqmodel="${'org.apache.sling.scripting.sightly.testing.models.RequestModel'
 @ argument='SUCCESS'}"
+          
data-sly-use.resmodel="org.apache.sling.scripting.sightly.testing.models.ResourceModel"
+          
data-sly-use.reqadapt="org.apache.sling.scripting.sightly.testing.adaptable.RequestAdapterUseObject"
+          
data-sly-use.resadapt="org.apache.sling.scripting.sightly.testing.adaptable.ResourceAdapterUseObject"
+          
data-sly-use.osgi="org.apache.sling.scripting.sightly.testing.use.TestService"
+          data-sly-use.repoNoPkg="RepoPojoNoPkg"
+          data-sly-use.testEnum="TestEnumHolder">
+        <div id="reqmodel">${reqmodel.title}</div>
         <div id="reqmodel-reqarg">${reqmodel.requestArgument}</div>
-        <div id="resmodel" 
data-sly-use.resmodel="org.apache.sling.scripting.sightly.testing.models.ResourceModel">${resmodel.title}</div>
-        <div id="reqadapt"
-             
data-sly-use.reqadapt="org.apache.sling.scripting.sightly.testing.adaptable.RequestAdapterUseObject">${reqadapt.title}</div>
-        <div id="resadapt"
-             
data-sly-use.resadapt="org.apache.sling.scripting.sightly.testing.adaptable.ResourceAdapterUseObject">${resadapt.title}</div>
-        <div id="osgi" 
data-sly-use.osgi="org.apache.sling.scripting.sightly.testing.use.TestService">${osgi.sayHello}</div>
-        <div id="repopojo-nopkg" 
data-sly-use.repoNoPkg="RepoPojoNoPkg">${repoNoPkg.FIELD}</div>
+        <div id="resmodel">${resmodel.title}</div>
+        <div id="reqadapt">${reqadapt.title}</div>
+        <div id="resadapt">${resadapt.title}</div>
+        <div id="osgi">${osgi.sayHello}</div>
+        <div id="repopojo-nopkg">${repoNoPkg.FIELD}</div>
+        <div id="test-enum">${testEnum.constantValue}</div>
     </body>
 </html>

Modified: 
sling/trunk/bundles/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java
URL: 
http://svn.apache.org/viewvc/sling/trunk/bundles/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java?rev=1751880&r1=1751879&r2=1751880&view=diff
==============================================================================
--- 
sling/trunk/bundles/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java
 (original)
+++ 
sling/trunk/bundles/scripting/sightly/testing/src/test/java/org/apache/sling/scripting/sightly/it/SlingSpecificsSightlyIT.java
 Fri Jul  8 11:20:36 2016
@@ -94,6 +94,13 @@ public class SlingSpecificsSightlyIT {
     }
 
     @Test
+    public void testEnumConstantAsString() {
+        String url = launchpadURL + SLING_USE;
+        String pageContent = client.getStringContent(url, 200);
+        assertEquals("ENUM_CONSTANT", HTMLExtractor.innerHTML(url, 
pageContent, "#test-enum"));
+    }
+
+    @Test
     public void testErroneousUseObject() {
         String url = launchpadURL + SLING_JAVA_USE_NPE;
         String pageContent = client.getStringContent(url, 500);


Reply via email to