andreachild commented on code in PR #3090:
URL: https://github.com/apache/tinkerpop/pull/3090#discussion_r2037903208


##########
gremlin-core/src/main/java/org/apache/tinkerpop/gremlin/process/traversal/step/map/DateDiffStep.java:
##########
@@ -36,34 +39,61 @@
  */
 public final class DateDiffStep<S> extends ScalarMapStep<S, Long> implements 
TraversalParent {
 
-    private Date value;
-    private Traversal.Admin<S, Date> dateTraversal;
+    private OffsetDateTime value;
+    private Traversal.Admin<S, OffsetDateTime> dateTraversal;
 
     public DateDiffStep(final Traversal.Admin traversal, final Date value) {
+        super(traversal);
+        this.value = value == null ? null : 
value.toInstant().atOffset(ZoneOffset.UTC);
+    }
+
+    public DateDiffStep(final Traversal.Admin traversal, final OffsetDateTime 
value) {
         super(traversal);
         this.value = value;
     }
 
-    public DateDiffStep(final Traversal.Admin traversal, final Traversal<?, 
Date> dateTraversal) {
+    public DateDiffStep(final Traversal.Admin traversal, final Traversal<?, ?> 
dateTraversal) {
         super(traversal);
         this.dateTraversal = this.integrateChild(dateTraversal.asAdmin());
     }
 
     @Override
     protected Long map(final Traverser.Admin<S> traverser) {
         final Object object = traverser.get();
-
-        if (!(object instanceof Date))
-            throw new IllegalArgumentException(
-                    String.format("DateDiff can only take Date as argument, 
encountered %s", object.getClass()));
-
-        final Date otherDate = value != null ? value :
-                dateTraversal != null ? TraversalUtil.apply(traverser, 
dateTraversal) : null;
+        OffsetDateTime date;
+        OffsetDateTime otherDate;
+
+        if (!(object instanceof OffsetDateTime)) {
+            // allow incoming traverser to resolve into Date object for 
compatibility
+            if (object instanceof Date) {
+                date = ((Date) object).toInstant().atOffset(ZoneOffset.UTC);
+            } else {
+                throw new IllegalArgumentException(
+                        String.format("DateDiff can only take OffsetDateTime 
or Date (deprecated) as argument, encountered %s", object.getClass()));

Review Comment:
   This can throw `NullPointerException` if `object` is null. Should the null 
logic handling be made consistent with the null logic handling for 
`dateTraversal` that assumes null means zero?



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to