From 4ac38e80c2442e085c53986f5717d44f9d2d821a Mon Sep 17 00:00:00 2001 From: sowgro Date: Sun, 16 Nov 2025 00:22:00 -0500 Subject: fix datetime issue --- src/main/java/design/persistence/JSONLeagueDatabase.java | 4 +++- src/main/java/design/persistence/JSONPersonalDatabase.java | 4 +++- src/main/java/design/persistence/Serializers.java | 9 +++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) (limited to 'src/main/java') diff --git a/src/main/java/design/persistence/JSONLeagueDatabase.java b/src/main/java/design/persistence/JSONLeagueDatabase.java index 81a4913..0891551 100644 --- a/src/main/java/design/persistence/JSONLeagueDatabase.java +++ b/src/main/java/design/persistence/JSONLeagueDatabase.java @@ -11,6 +11,7 @@ import design.model.League; import java.io.File; import java.io.IOException; +import java.time.LocalDateTime; import java.util.Arrays; import java.util.HashMap; import java.util.List; @@ -42,11 +43,12 @@ public class JSONLeagueDatabase implements LeagueDatabase { module.addSerializer(Course.class, new Serializers.CourseIdSerializer()); module.addDeserializer(Golfer.class, new Serializers.GolferUsernameDeserializer()); module.addSerializer(Golfer.class, new Serializers.GolferUsernameSerializer()); + module.addSerializer(LocalDateTime.class, new Serializers.DateTimeStringSerializer()); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); - mapper.registerModule(module); mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); mapper.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES)); mapper.registerModule(new JavaTimeModule()); + mapper.registerModule(module); mapper.configOverride(List.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY)); try { diff --git a/src/main/java/design/persistence/JSONPersonalDatabase.java b/src/main/java/design/persistence/JSONPersonalDatabase.java index a5a4795..bf0dda9 100644 --- a/src/main/java/design/persistence/JSONPersonalDatabase.java +++ b/src/main/java/design/persistence/JSONPersonalDatabase.java @@ -11,6 +11,7 @@ import design.model.League; import java.io.File; import java.io.IOException; +import java.time.LocalDateTime; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -41,11 +42,12 @@ public class JSONPersonalDatabase implements PersonalDatabase { module.addSerializer(Course.class, new Serializers.CourseIdSerializer()); module.addSerializer(League.class, new Serializers.LeagueIDSerializer()); module.addDeserializer(League.class, new Serializers.LeagueIDDeserializer()); - mapper.registerModule(module); + module.addSerializer(LocalDateTime.class, new Serializers.DateTimeStringSerializer()); mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); mapper.setVisibility(PropertyAccessor.FIELD, JsonAutoDetect.Visibility.ANY); mapper.registerModule(new ParameterNamesModule(JsonCreator.Mode.PROPERTIES)); mapper.registerModule(new JavaTimeModule()); + mapper.registerModule(module); mapper.configOverride(List.class).setSetterInfo(JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY)); try { diff --git a/src/main/java/design/persistence/Serializers.java b/src/main/java/design/persistence/Serializers.java index 3940b44..2f2b208 100644 --- a/src/main/java/design/persistence/Serializers.java +++ b/src/main/java/design/persistence/Serializers.java @@ -8,11 +8,13 @@ import com.fasterxml.jackson.databind.DeserializationContext; import com.fasterxml.jackson.databind.JsonDeserializer; import com.fasterxml.jackson.databind.JsonSerializer; import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.datatype.jsr310.deser.LocalDateTimeDeserializer; import design.model.Course; import design.model.Golfer; import design.model.League; import java.io.IOException; +import java.time.LocalDateTime; public class Serializers { public static class CustomPrettyPrinter extends DefaultPrettyPrinter { @@ -76,4 +78,11 @@ public class Serializers { return personalDB.getGolfer(username); } } + + public static class DateTimeStringSerializer extends JsonSerializer { + @Override + public void serialize(LocalDateTime value, JsonGenerator gen, SerializerProvider serializers) throws IOException { + gen.writeString(value.toString()); + } + } } -- cgit v1.2.3