diff --git a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/model/template/command/WarningsModel.java b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/model/template/command/WarningsModel.java index bbf135556..f9886f08e 100644 --- a/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/model/template/command/WarningsModel.java +++ b/abstracto-application/abstracto-modules/moderation/moderation-int/src/main/java/dev/sheldan/abstracto/moderation/model/template/command/WarningsModel.java @@ -1,6 +1,5 @@ package dev.sheldan.abstracto.moderation.model.template.command; -import dev.sheldan.abstracto.core.models.context.SlimUserInitiatedServerContext; import lombok.Getter; import lombok.Setter; import lombok.experimental.SuperBuilder; @@ -13,7 +12,7 @@ import java.util.List; @Getter @Setter @SuperBuilder -public class WarningsModel extends SlimUserInitiatedServerContext { +public class WarningsModel { /** * A collection of {@link dev.sheldan.abstracto.moderation.model.database.Warning}s being rendered, might be all warnings of the server, or only the warnings of a specific user */ diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/CoreConfig.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/CoreConfig.java index 28c2144f7..e7c6f8998 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/CoreConfig.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/CoreConfig.java @@ -40,7 +40,7 @@ public class CoreConfig { public Gson gson() { GsonBuilder builder = new GsonBuilder() .registerTypeAdapter(OffsetDateTime.class, new OffsetDateTimeAdapter()) - .registerTypeAdapter(Instant.class, new InstantTimeAdapter()) + .registerTypeAdapter(Instant.class, new InstantAdapter()) .setPrettyPrinting(); if(customJsonDeSerializers != null) { customJsonDeSerializers.forEach(customJsonSerializer -> diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/InstantAdapter.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/InstantAdapter.java new file mode 100644 index 000000000..502fa46d3 --- /dev/null +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/InstantAdapter.java @@ -0,0 +1,24 @@ +package dev.sheldan.abstracto.core.config; + +import com.google.gson.*; + +import java.lang.reflect.Type; +import java.time.Instant; +import java.time.format.DateTimeFormatter; +import java.time.temporal.TemporalAccessor; + +public class InstantAdapter implements JsonDeserializer, JsonSerializer { + + public static final DateTimeFormatter FORMATTER = DateTimeFormatter.ISO_INSTANT; + + @Override + public Instant deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) { + TemporalAccessor ta = FORMATTER.parse(jsonElement.getAsString()); + return Instant.from(ta); + } + + @Override + public JsonElement serialize(Instant instant, Type type, JsonSerializationContext jsonSerializationContext) { + return new JsonPrimitive(FORMATTER.format(instant)); + } +} diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/InstantTimeAdapter.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/InstantTimeAdapter.java deleted file mode 100644 index ce94d217d..000000000 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/InstantTimeAdapter.java +++ /dev/null @@ -1,19 +0,0 @@ -package dev.sheldan.abstracto.core.config; - -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; - -import java.lang.reflect.Type; -import java.time.Instant; -import java.time.format.DateTimeFormatter; -import java.time.temporal.TemporalAccessor; - -public class InstantTimeAdapter implements JsonDeserializer { - - @Override - public Instant deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) { - TemporalAccessor ta = DateTimeFormatter.ISO_INSTANT.parse(jsonElement.getAsString()); - return Instant.from(ta); - } -} diff --git a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/OffsetDateTimeAdapter.java b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/OffsetDateTimeAdapter.java index cce8ec6bf..f662b0f9b 100644 --- a/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/OffsetDateTimeAdapter.java +++ b/abstracto-application/core/core-impl/src/main/java/dev/sheldan/abstracto/core/config/OffsetDateTimeAdapter.java @@ -1,8 +1,6 @@ package dev.sheldan.abstracto.core.config; -import com.google.gson.JsonDeserializationContext; -import com.google.gson.JsonDeserializer; -import com.google.gson.JsonElement; +import com.google.gson.*; import java.lang.reflect.Type; import java.time.Instant; @@ -11,12 +9,19 @@ import java.time.ZoneId; import java.time.format.DateTimeFormatter; import java.time.temporal.TemporalAccessor; -public class OffsetDateTimeAdapter implements JsonDeserializer { +public class OffsetDateTimeAdapter implements JsonDeserializer, JsonSerializer { + + public static final DateTimeFormatter FORMATTER = DateTimeFormatter.ISO_INSTANT; @Override public OffsetDateTime deserialize(JsonElement jsonElement, Type type, JsonDeserializationContext jsonDeserializationContext) { - TemporalAccessor ta = DateTimeFormatter.ISO_INSTANT.parse(jsonElement.getAsString()); + TemporalAccessor ta = FORMATTER.parse(jsonElement.getAsString()); Instant i = Instant.from(ta); return OffsetDateTime.ofInstant(i, ZoneId.systemDefault()); } + + @Override + public JsonElement serialize(OffsetDateTime offsetDateTime, Type type, JsonSerializationContext jsonSerializationContext) { + return new JsonPrimitive(FORMATTER.format(offsetDateTime)); + } }