-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Investigate requirement for reflective access to convert date/time values. #1969
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Comments
We could create a list of all implementations of
|
I wrote a small program that gets all the relevant classes from the @SuppressWarnings("unchecked")
private static <T extends TemporalAccessor> TemporalQuery<T> getTemporalQuery(Class<T> type) {
return temporal -> {
if (type == java.time.chrono.HijrahDate.class) {
return (T) java.time.chrono.HijrahDate.from(temporal);
}
if (type == java.time.chrono.JapaneseDate.class) {
return (T) java.time.chrono.JapaneseDate.from(temporal);
}
if (type == java.time.ZonedDateTime.class) {
return (T) java.time.ZonedDateTime.from(temporal);
}
if (type == java.time.LocalDateTime.class) {
return (T) java.time.LocalDateTime.from(temporal);
}
if (type == java.time.chrono.ThaiBuddhistDate.class) {
return (T) java.time.chrono.ThaiBuddhistDate.from(temporal);
}
if (type == java.time.LocalTime.class) {
return (T) java.time.LocalTime.from(temporal);
}
if (type == java.time.ZoneOffset.class) {
return (T) java.time.ZoneOffset.from(temporal);
}
if (type == java.time.OffsetTime.class) {
return (T) java.time.OffsetTime.from(temporal);
}
if (type == java.time.chrono.ChronoLocalDate.class) {
return (T) java.time.chrono.ChronoLocalDate.from(temporal);
}
if (type == java.time.Month.class) {
return (T) java.time.Month.from(temporal);
}
if (type == java.time.chrono.ChronoLocalDateTime.class) {
return (T) java.time.chrono.ChronoLocalDateTime.from(temporal);
}
if (type == java.time.MonthDay.class) {
return (T) java.time.MonthDay.from(temporal);
}
if (type == java.time.Instant.class) {
return (T) java.time.Instant.from(temporal);
}
if (type == java.time.OffsetDateTime.class) {
return (T) java.time.OffsetDateTime.from(temporal);
}
if (type == java.time.chrono.ChronoZonedDateTime.class) {
return (T) java.time.chrono.ChronoZonedDateTime.from(temporal);
}
if (type == java.time.chrono.MinguoDate.class) {
return (T) java.time.chrono.MinguoDate.from(temporal);
}
if (type == java.time.Year.class) {
return (T) java.time.Year.from(temporal);
}
if (type == java.time.DayOfWeek.class) {
return (T) java.time.DayOfWeek.from(temporal);
}
if (type == java.time.LocalDate.class) {
return (T) java.time.LocalDate.from(temporal);
}
if (type == java.time.YearMonth.class) {
return (T) java.time.YearMonth.from(temporal);
}
throw new ConversionException("could not create object of class " + type.getName());
};
} Looks a little ugly, but should do. The only thing we'd loose is the ability to have a user have her own implementation of |
thanks @sothawo! You could leave the reflection variant in as a fallback. In that case users could still manually register a |
ok, though I think that will never happen ;-) |
The
ElasticsearchDateConverter
is making use of reflection to access thefrom
method for eg.java.time.Instant
. This requires additional configuration for GraalVM native image.Currently we are adding the required configuration for
java.time
types via the general processing of Spring Data repositories, but it would be nice to get rid of that extra bit of reflection config if possible.The text was updated successfully, but these errors were encountered: