Add missing ZonedDateTime methods for joda compat layer (#44829)

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
This commit is contained in:
Ryan Ernst 2019-07-25 11:40:21 -07:00 committed by Ryan Ernst
parent c9909b09b5
commit 03dd22b56c
2 changed files with 53 additions and 0 deletions

View File

@ -127,6 +127,17 @@ class org.elasticsearch.script.JodaCompatibleZonedDateTime {
ZonedDateTime withZoneSameLocal(ZoneId) ZonedDateTime withZoneSameLocal(ZoneId)
ZonedDateTime withZoneSameInstant(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 #### Joda methods that exist in java time
boolean equals(Object) boolean equals(Object)
int hashCode() int hashCode()

View File

@ -32,10 +32,14 @@ import java.time.DayOfWeek;
import java.time.Instant; import java.time.Instant;
import java.time.LocalDate; import java.time.LocalDate;
import java.time.LocalDateTime; import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Month; import java.time.Month;
import java.time.OffsetDateTime; import java.time.OffsetDateTime;
import java.time.ZoneId; import java.time.ZoneId;
import java.time.ZoneOffset;
import java.time.ZonedDateTime; import java.time.ZonedDateTime;
import java.time.chrono.Chronology;
import java.time.format.DateTimeFormatter;
import java.time.temporal.ChronoField; import java.time.temporal.ChronoField;
import java.time.temporal.TemporalAdjuster; import java.time.temporal.TemporalAdjuster;
import java.time.temporal.TemporalAmount; import java.time.temporal.TemporalAmount;
@ -94,6 +98,42 @@ public class JodaCompatibleZonedDateTime {
return DATE_FORMATTER.format(dt); 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) { public boolean isAfter(JodaCompatibleZonedDateTime o) {
return dt.isAfter(o.getZonedDateTime()); return dt.isAfter(o.getZonedDateTime());
} }
@ -106,6 +146,8 @@ public class JodaCompatibleZonedDateTime {
return dt.isEqual(o.getZonedDateTime()); return dt.isEqual(o.getZonedDateTime());
} }
public int getDayOfMonth() { public int getDayOfMonth() {
return dt.getDayOfMonth(); return dt.getDayOfMonth();
} }