From 4a7bb4853bbaf18a9813f2509397c846b7d4ece2 Mon Sep 17 00:00:00 2001 From: Mark Paluch Date: Thu, 19 Apr 2018 09:56:14 +0200 Subject: [PATCH] DATACMNS-1294 - Enforce JSR-310 type mapping to java.util.Date. After considering JSR-310 types to be simple we map these types primarily to java.util.Date as the majority of stores does not natively support JSR-310 types. Converters referencing JSR-310 types are now properly annotated with Reading/WritingConverter annotations to distinguish between reading and writing intents. Othwerise, converters between JSR-310/java.util types and Joda/ThreeTenBackport to JSR-310 types interfere with conversion as regular java.util.Date types would convert to e.g. LocalDateTime. --- .../data/convert/JodaTimeConverters.java | 3 +++ .../data/convert/Jsr310Converters.java | 11 +++++++++++ .../data/convert/ThreeTenBackPortConverters.java | 2 ++ 3 files changed, 16 insertions(+) diff --git a/src/main/java/org/springframework/data/convert/JodaTimeConverters.java b/src/main/java/org/springframework/data/convert/JodaTimeConverters.java index 56e4ce6ea..687b9693d 100644 --- a/src/main/java/org/springframework/data/convert/JodaTimeConverters.java +++ b/src/main/java/org/springframework/data/convert/JodaTimeConverters.java @@ -38,6 +38,7 @@ import org.springframework.util.ClassUtils; * @author Oliver Gierke * @author Christoph Strobl * @author Jens Schauder + * @author Mark Paluch */ public abstract class JodaTimeConverters { @@ -74,6 +75,7 @@ public abstract class JodaTimeConverters { return converters; } + @ReadingConverter public enum LocalDateTimeToJsr310Converter implements Converter { INSTANCE; @@ -151,6 +153,7 @@ public abstract class JodaTimeConverters { } } + @ReadingConverter public enum LocalDateTimeToJodaLocalDateTime implements Converter { INSTANCE; diff --git a/src/main/java/org/springframework/data/convert/Jsr310Converters.java b/src/main/java/org/springframework/data/convert/Jsr310Converters.java index 4c5efaf70..6f4a0a126 100644 --- a/src/main/java/org/springframework/data/convert/Jsr310Converters.java +++ b/src/main/java/org/springframework/data/convert/Jsr310Converters.java @@ -45,6 +45,7 @@ import org.springframework.util.ClassUtils; * @author Barak Schoster * @author Christoph Strobl * @author Jens Schauder + * @author Mark Paluch */ public abstract class Jsr310Converters { @@ -93,6 +94,7 @@ public abstract class Jsr310Converters { .contains(type); } + @ReadingConverter public static enum DateToLocalDateTimeConverter implements Converter { INSTANCE; @@ -104,6 +106,7 @@ public abstract class Jsr310Converters { } } + @WritingConverter public static enum LocalDateTimeToDateConverter implements Converter { INSTANCE; @@ -115,6 +118,7 @@ public abstract class Jsr310Converters { } } + @ReadingConverter public static enum DateToLocalDateConverter implements Converter { INSTANCE; @@ -126,6 +130,7 @@ public abstract class Jsr310Converters { } } + @WritingConverter public static enum LocalDateToDateConverter implements Converter { INSTANCE; @@ -137,6 +142,7 @@ public abstract class Jsr310Converters { } } + @ReadingConverter public static enum DateToLocalTimeConverter implements Converter { INSTANCE; @@ -148,6 +154,7 @@ public abstract class Jsr310Converters { } } + @WritingConverter public static enum LocalTimeToDateConverter implements Converter { INSTANCE; @@ -159,6 +166,7 @@ public abstract class Jsr310Converters { } } + @ReadingConverter public static enum DateToInstantConverter implements Converter { INSTANCE; @@ -170,6 +178,7 @@ public abstract class Jsr310Converters { } } + @WritingConverter public static enum InstantToDateConverter implements Converter { INSTANCE; @@ -181,6 +190,7 @@ public abstract class Jsr310Converters { } } + @ReadingConverter public static enum LocalDateTimeToInstantConverter implements Converter { INSTANCE; @@ -192,6 +202,7 @@ public abstract class Jsr310Converters { } } + @ReadingConverter public static enum InstantToLocalDateTimeConverter implements Converter { INSTANCE; diff --git a/src/main/java/org/springframework/data/convert/ThreeTenBackPortConverters.java b/src/main/java/org/springframework/data/convert/ThreeTenBackPortConverters.java index a794f3c74..216ef9382 100644 --- a/src/main/java/org/springframework/data/convert/ThreeTenBackPortConverters.java +++ b/src/main/java/org/springframework/data/convert/ThreeTenBackPortConverters.java @@ -45,6 +45,7 @@ import org.threeten.bp.ZoneOffset; * @author Oliver Gierke * @author Christoph Strobl * @author Jens Schauder + * @author Mark Paluch * @see http://www.threeten.org/threetenbp * @since 1.10 */ @@ -92,6 +93,7 @@ public abstract class ThreeTenBackPortConverters { .contains(type); } + @ReadingConverter public static enum LocalDateTimeToJsr310LocalDateTimeConverter implements Converter {