DATACMNS-1440 - Added converters to parse LocalDate(Time) and Instant from their toString() representation.

This commit is contained in:
Oliver Drotbohm
2018-12-07 15:05:42 +01:00
parent b3879a2f4f
commit 4537c11eba
2 changed files with 78 additions and 2 deletions

View File

@@ -26,6 +26,7 @@ import java.time.LocalDateTime;
import java.time.LocalTime;
import java.time.Period;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -36,6 +37,7 @@ import java.util.List;
import javax.annotation.Nonnull;
import org.springframework.core.convert.converter.Converter;
import org.springframework.lang.NonNull;
import org.springframework.util.ClassUtils;
/**
@@ -80,6 +82,9 @@ public abstract class Jsr310Converters {
converters.add(StringToDurationConverter.INSTANCE);
converters.add(PeriodToStringConverter.INSTANCE);
converters.add(StringToPeriodConverter.INSTANCE);
converters.add(StringToLocalDateConverter.INSTANCE);
converters.add(StringToLocalDateTimeConverter.INSTANCE);
converters.add(StringToInstantConverter.INSTANCE);
return converters;
}
@@ -285,4 +290,52 @@ public abstract class Jsr310Converters {
return Period.parse(s);
}
}
@ReadingConverter
public static enum StringToLocalDateConverter implements Converter<String, LocalDate> {
INSTANCE;
/*
* (non-Javadoc)
* @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object)
*/
@NonNull
@Override
public LocalDate convert(String source) {
return LocalDate.parse(source, DateTimeFormatter.ISO_DATE);
}
}
@ReadingConverter
public static enum StringToLocalDateTimeConverter implements Converter<String, LocalDateTime> {
INSTANCE;
/*
* (non-Javadoc)
* @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object)
*/
@NonNull
@Override
public LocalDateTime convert(String source) {
return LocalDateTime.parse(source, DateTimeFormatter.ISO_DATE_TIME);
}
}
@ReadingConverter
public static enum StringToInstantConverter implements Converter<String, Instant> {
INSTANCE;
/*
* (non-Javadoc)
* @see org.springframework.core.convert.converter.Converter#convert(java.lang.Object)
*/
@NonNull
@Override
public Instant convert(String source) {
return Instant.parse(source);
}
}
}