From 508251e3c56d2cca8a890216552ca1b791891f89 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lo=C3=AFc=20Mathieu?= Date: Mon, 25 Nov 2024 13:46:41 +0100 Subject: [PATCH] Revert "fix(core): serialize duration as strings" This reverts commit 557eb8185f22b3abdab2a6ee04da32544b814017. --- core/src/main/java/io/kestra/core/models/flows/State.java | 4 +--- .../main/java/io/kestra/core/serializers/JacksonMapper.java | 1 - core/src/test/java/io/kestra/plugin/core/kv/SetTest.java | 3 ++- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/core/src/main/java/io/kestra/core/models/flows/State.java b/core/src/main/java/io/kestra/core/models/flows/State.java index 651089d6a5c..c7fbf5058a9 100644 --- a/core/src/main/java/io/kestra/core/models/flows/State.java +++ b/core/src/main/java/io/kestra/core/models/flows/State.java @@ -1,6 +1,5 @@ package io.kestra.core.models.flows; -import com.fasterxml.jackson.annotation.JsonFormat; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonProperty; @@ -85,11 +84,10 @@ public State reset() { } @JsonProperty(access = JsonProperty.Access.READ_ONLY) - @JsonFormat(shape = JsonFormat.Shape.NUMBER_INT) // force serialization as timestamp as the database column is using a number public Duration getDuration() { return Duration.between( this.histories.getFirst().getDate(), - this.histories.size() > 1 ? this.histories.getLast().getDate() : Instant.now() + this.histories.size() > 1 ? this.histories.get(this.histories.size() - 1).getDate() : Instant.now() ); } diff --git a/core/src/main/java/io/kestra/core/serializers/JacksonMapper.java b/core/src/main/java/io/kestra/core/serializers/JacksonMapper.java index cc9db385b7f..abcb9528f78 100644 --- a/core/src/main/java/io/kestra/core/serializers/JacksonMapper.java +++ b/core/src/main/java/io/kestra/core/serializers/JacksonMapper.java @@ -121,7 +121,6 @@ public static ObjectMapper ofIon() { private static ObjectMapper configure(ObjectMapper mapper) { return mapper .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false) - .configure(SerializationFeature.WRITE_DURATIONS_AS_TIMESTAMPS, false) .setSerializationInclusion(JsonInclude.Include.NON_NULL) .registerModule(new JavaTimeModule()) .registerModule(new Jdk8Module()) diff --git a/core/src/test/java/io/kestra/plugin/core/kv/SetTest.java b/core/src/test/java/io/kestra/plugin/core/kv/SetTest.java index 58abf00303b..36e79846610 100644 --- a/core/src/test/java/io/kestra/plugin/core/kv/SetTest.java +++ b/core/src/test/java/io/kestra/plugin/core/kv/SetTest.java @@ -209,7 +209,8 @@ void typeSpecified() throws Exception { assertThat(kv.getValue(TEST_KEY).get().value(), is(Instant.parse("2023-05-02T01:02:03Z"))); set.toBuilder().value("P1DT5S").kvType(KVType.DURATION).build().run(runContext); - assertThat(kv.getValue(TEST_KEY).get().value(), is(Duration.ofDays(1).plus(Duration.ofSeconds(5)))); + // TODO Hack meanwhile we handle duration serialization as currently they are stored as bigint... + assertThat((long) Double.parseDouble(kv.getValue(TEST_KEY).get().value().toString()), is(Duration.ofDays(1).plus(Duration.ofSeconds(5)).toSeconds())); set.toBuilder().value("[{\"some\":\"value\"},{\"another\":\"value\"}]").kvType(KVType.JSON).build().run(runContext); assertThat(kv.getValue(TEST_KEY).get().value(), is(List.of(Map.of("some", "value"), Map.of("another", "value"))));