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);