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