Skip to content

Commit

Permalink
Add missing ZonedDateTime methods for joda compat layer (#44829)
Browse files Browse the repository at this point in the history
While joda no longer exists in the apis for 7.x, the compatibility layer
still exists with helper methods mimicking the behavior of joda for
ZonedDateTime objects returned for date fields in scripts. This layer
was originally intended to be removed in 7.0, but is now likely to exist
for the lifetime of 7.x.

This commit adds missing methods from ChronoZonedDateTime to the compat
class. These methods were not part of joda, but are needed to act like a
real ZonedDateTime.

relates #44411
  • Loading branch information
rjernst authored and jkakavas committed Jul 31, 2019
1 parent 8bbf546 commit a05805a
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 0 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,17 @@ class org.elasticsearch.script.JodaCompatibleZonedDateTime {
ZonedDateTime withZoneSameLocal(ZoneId)
ZonedDateTime withZoneSameInstant(ZoneId)

#### ChronoZonedDateTime
int compareTo(JodaCompatibleZonedDateTime)
Chronology getChronology()
String format(DateTimeFormatter)
int get(TemporalField)
long getLong(TemporalField)
ZoneOffset getOffset()
boolean isSupported(TemporalField)
long toEpochSecond()
LocalTime toLocalTime()

#### Joda methods that exist in java time
boolean equals(Object)
int hashCode()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,14 @@
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month;
import java.time.OffsetDateTime;
import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime;
import java.time.chrono.Chronology;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAmount;
Expand Down Expand Up @@ -94,6 +98,42 @@ public String toString() {
return DATE_FORMATTER.format(dt);
}

public String format(DateTimeFormatter formatter) {
return dt.format(formatter);
}

public int get(TemporalField field) {
return dt.get(field);
}

public long getLong(TemporalField field) {
return dt.getLong(field);
}

public Chronology getChronology() {
return dt.getChronology();
}

public int compareTo(JodaCompatibleZonedDateTime o) {
return dt.compareTo(o.dt);
}

public ZoneOffset getOffset() {
return dt.getOffset();
}

public boolean isSupported(TemporalField field) {
return dt.isSupported(field);
}

public long toEpochSecond() {
return dt.toEpochSecond();
}

public LocalTime toLocalTime() {
return dt.toLocalTime();
}

public boolean isAfter(JodaCompatibleZonedDateTime o) {
return dt.isAfter(o.getZonedDateTime());
}
Expand All @@ -106,6 +146,8 @@ public boolean isEqual(JodaCompatibleZonedDateTime o) {
return dt.isEqual(o.getZonedDateTime());
}



public int getDayOfMonth() {
return dt.getDayOfMonth();
}
Expand Down

0 comments on commit a05805a

Please sign in to comment.