diff --git a/common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbDate.java b/common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbDate.java index 2cfd8db09f..f06d4cec53 100644 --- a/common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbDate.java +++ b/common/script/script-api/src/main/java/org/thingsboard/script/api/tbel/TbDate.java @@ -15,6 +15,7 @@ */ package org.thingsboard.script.api.tbel; +import com.fasterxml.jackson.annotation.JsonValue; import org.mvel2.ConversionException; import org.thingsboard.common.util.JacksonUtil; import org.thingsboard.server.common.data.StringUtils; @@ -141,6 +142,7 @@ public class TbDate implements Serializable, Cloneable { return toLocaleString(localeStr, zoneIdUTC.getId(), (locale, options) -> DateTimeFormatter.ofLocalizedDateTime(FormatStyle.FULL, FormatStyle.MEDIUM).withLocale(locale)); } + @JsonValue public String toString() { return toString(Locale.getDefault().getLanguage()); } diff --git a/common/script/script-api/src/test/java/org/thingsboard/script/api/tbel/TbDateTest.java b/common/script/script-api/src/test/java/org/thingsboard/script/api/tbel/TbDateTest.java index 5fd5fea277..ab0b2875bd 100644 --- a/common/script/script-api/src/test/java/org/thingsboard/script/api/tbel/TbDateTest.java +++ b/common/script/script-api/src/test/java/org/thingsboard/script/api/tbel/TbDateTest.java @@ -37,6 +37,7 @@ import java.time.ZoneId; import java.util.ArrayList; import java.util.List; import java.util.Locale; +import java.util.Map; import java.util.concurrent.CountDownLatch; import java.util.concurrent.ExecutionException; import java.util.concurrent.Executors; @@ -799,17 +800,11 @@ class TbDateTest { } @Test - public void tbDateSerializedPMapperTest() { + public void tbDateSerializedMapperTest() { String stringDateUTC = "2023-09-06T01:04:05.345Z"; TbDate expectedDate = new TbDate(stringDateUTC); - String serializedTbDate = JacksonUtil.toString(expectedDate); - JsonNode tbDateNode = JacksonUtil.toJsonNode(serializedTbDate); - Assert.assertNotNull(tbDateNode); - ((ObjectNode) tbDateNode).put("test", (String) null); - serializedTbDate = JacksonUtil.toString(tbDateNode); - TbDate actualDate = JacksonUtil.fromStringIgnoreUnknownProperties(serializedTbDate, TbDate.class); - Assert.assertNotNull(actualDate); - Assert.assertEquals(expectedDate.toString(), actualDate.toString()); - Assert.assertEquals(expectedDate.getInstant(), actualDate.getInstant()); + String serializedTbDate = JacksonUtil.toJsonNode(JacksonUtil.toString(Map.of("date", expectedDate))).get("date").asText(); + Assert.assertNotNull(serializedTbDate); + Assert.assertEquals(expectedDate.toString(), serializedTbDate); } } diff --git a/common/util/src/main/java/org/thingsboard/common/util/JacksonUtil.java b/common/util/src/main/java/org/thingsboard/common/util/JacksonUtil.java index 17eb664399..499c0b55a5 100644 --- a/common/util/src/main/java/org/thingsboard/common/util/JacksonUtil.java +++ b/common/util/src/main/java/org/thingsboard/common/util/JacksonUtil.java @@ -52,9 +52,7 @@ import java.util.regex.Pattern; */ public class JacksonUtil { - public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper() - .registerModule(new JavaTimeModule()) - .configure(SerializationFeature.WRITE_DATES_AS_TIMESTAMPS, false); + public static final ObjectMapper OBJECT_MAPPER = new ObjectMapper(); public static final ObjectMapper PRETTY_SORTED_JSON_MAPPER = JsonMapper.builder() .enable(SerializationFeature.INDENT_OUTPUT) .configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true) @@ -66,8 +64,7 @@ public class JacksonUtil { .build(); public static final ObjectMapper IGNORE_UNKNOWN_PROPERTIES_JSON_MAPPER = JsonMapper.builder() .configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false) - .build() - .registerModule(new JavaTimeModule()); + .build(); public static ObjectMapper getObjectMapperWithJavaTimeModule() { return new ObjectMapper().registerModule(new JavaTimeModule());