You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by di...@apache.org on 2021/07/23 10:29:31 UTC

[sling-org-apache-sling-scripting-sightly-runtime] branch master updated: SLING-10651: add java.time.Instant to RuntimeObjectModel (#7)

This is an automated email from the ASF dual-hosted git repository.

diru pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/sling-org-apache-sling-scripting-sightly-runtime.git


The following commit(s) were added to refs/heads/master by this push:
     new c99f9da  SLING-10651: add java.time.Instant to RuntimeObjectModel (#7)
c99f9da is described below

commit c99f9daf77d9026b68a99ef4c88f594821bd3b85
Author: Dirk Rudolph <di...@gmail.com>
AuthorDate: Fri Jul 23 12:29:26 2021 +0200

    SLING-10651: add java.time.Instant to RuntimeObjectModel (#7)
---
 .../sightly/render/AbstractRuntimeObjectModel.java      | 17 ++++++++++++++++-
 .../scripting/sightly/render/RuntimeObjectModel.java    |  9 +++++++++
 .../sling/scripting/sightly/render/package-info.java    |  2 +-
 .../sightly/render/AbstractRuntimeObjectModelTest.java  | 15 +++++++++++++++
 4 files changed, 41 insertions(+), 2 deletions(-)

diff --git a/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java b/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java
index 858693e..473086f 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModel.java
@@ -16,6 +16,7 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.render;
 
+import java.time.Instant;
 import java.util.Calendar;
 import java.util.Collection;
 import java.util.Collections;
@@ -40,7 +41,7 @@ public abstract class AbstractRuntimeObjectModel implements RuntimeObjectModel {
 
     @Override
     public boolean isDate(Object target) {
-        return (target instanceof Date || target instanceof Calendar);
+        return (target instanceof Date || target instanceof Calendar || target instanceof Instant);
     }
 
     @Override
@@ -92,6 +93,20 @@ public abstract class AbstractRuntimeObjectModel implements RuntimeObjectModel {
             return (Date)object;
         } else if (object instanceof Calendar) {
             return ((Calendar)object).getTime();
+        } else if (object instanceof Instant) {
+            return Date.from((Instant) object);
+        }
+        return null;
+    }
+
+    @Override
+    public Instant toInstant(Object object) {
+        if (object instanceof Date) {
+            return ((Date)object).toInstant();
+        } else if (object instanceof Calendar) {
+            return (((Calendar)object)).toInstant();
+        } else if (object instanceof Instant) {
+            return (Instant) object;
         }
         return null;
     }
diff --git a/src/main/java/org/apache/sling/scripting/sightly/render/RuntimeObjectModel.java b/src/main/java/org/apache/sling/scripting/sightly/render/RuntimeObjectModel.java
index f386634..845b67e 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/render/RuntimeObjectModel.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/render/RuntimeObjectModel.java
@@ -16,6 +16,7 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.render;
 
+import java.time.Instant;
 import java.util.Collection;
 import java.util.Date;
 import java.util.Map;
@@ -96,6 +97,14 @@ public interface RuntimeObjectModel {
     Date toDate(Object object);
 
     /**
+     * Convert the given object to an {@link Instant} object
+     *
+     * @param object the target object
+     * @return the date represented by the {@code object}
+     */
+    Instant toInstant(Object object);
+
+    /**
      * Convert the given object to a string.
      *
      * @param target the target object
diff --git a/src/main/java/org/apache/sling/scripting/sightly/render/package-info.java b/src/main/java/org/apache/sling/scripting/sightly/render/package-info.java
index 3afbfb9..4307136 100644
--- a/src/main/java/org/apache/sling/scripting/sightly/render/package-info.java
+++ b/src/main/java/org/apache/sling/scripting/sightly/render/package-info.java
@@ -14,7 +14,7 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  ******************************************************************************/
-@Version("3.0.0")
+@Version("3.1.0")
 package org.apache.sling.scripting.sightly.render;
 
 import org.osgi.annotation.versioning.Version;
diff --git a/src/test/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModelTest.java b/src/test/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModelTest.java
index ab9c07b..5f7df3d 100644
--- a/src/test/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModelTest.java
+++ b/src/test/java/org/apache/sling/scripting/sightly/render/AbstractRuntimeObjectModelTest.java
@@ -16,6 +16,7 @@
  ******************************************************************************/
 package org.apache.sling.scripting.sightly.render;
 
+import java.time.Instant;
 import java.util.Arrays;
 import java.util.Calendar;
 import java.util.Collection;
@@ -91,6 +92,19 @@ public class AbstractRuntimeObjectModelTest {
         assertEquals(testDate, runtimeObjectModel.toDate(testDate));
         Calendar testCalendar = Calendar.getInstance();
         assertEquals(testCalendar.getTime(), runtimeObjectModel.toDate(testCalendar));
+        Instant testInstant = Instant.now();
+        assertEquals(Date.from(testInstant), runtimeObjectModel.toDate(testInstant));
+    }
+
+    @Test
+    public void testToInstant() {
+        assertNull(runtimeObjectModel.toInstant(null));
+        Date testDate = new Date();
+        assertEquals(testDate, Date.from(runtimeObjectModel.toInstant(testDate)));
+        Calendar testCalendar = Calendar.getInstance();
+        assertEquals(testCalendar.getTime(), Date.from(runtimeObjectModel.toInstant(testCalendar)));
+        Instant testInstant = Instant.now();
+        assertEquals(testInstant, runtimeObjectModel.toInstant(testInstant));
     }
 
     @Test
@@ -105,6 +119,7 @@ public class AbstractRuntimeObjectModelTest {
         assertFalse(runtimeObjectModel.isDate(null));
         assertTrue(runtimeObjectModel.isDate(new Date()));
         assertTrue(runtimeObjectModel.isDate(Calendar.getInstance()));
+        assertTrue(runtimeObjectModel.isDate(Instant.now()));
     }
 
     @Test