From 30ecc06f62e67374e5d19813e8355dc99c100347 Mon Sep 17 00:00:00 2001 From: Tomasz Jankowski Date: Thu, 16 Nov 2023 14:29:57 +0100 Subject: [PATCH] Fix: JsonJacksonCodec fails to serialize Throwable on Java17, fixes #5369 Signed-off-by: Tomasz Jankowski --- .../java/org/redisson/codec/JsonJacksonCodec.java | 2 +- .../org/redisson/codec/JsonJacksonCodecTest.java | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/redisson/src/main/java/org/redisson/codec/JsonJacksonCodec.java b/redisson/src/main/java/org/redisson/codec/JsonJacksonCodec.java index 1f5351a5c..19a67a45b 100755 --- a/redisson/src/main/java/org/redisson/codec/JsonJacksonCodec.java +++ b/redisson/src/main/java/org/redisson/codec/JsonJacksonCodec.java @@ -65,7 +65,7 @@ public class JsonJacksonCodec extends BaseCodec { public static final JsonJacksonCodec INSTANCE = new JsonJacksonCodec(); @JsonIdentityInfo(generator=ObjectIdGenerators.IntSequenceGenerator.class, property="@id") - @JsonAutoDetect(fieldVisibility = Visibility.ANY, + @JsonAutoDetect(fieldVisibility = Visibility.NON_PRIVATE, getterVisibility = Visibility.PUBLIC_ONLY, setterVisibility = Visibility.NONE, isGetterVisibility = Visibility.NONE) diff --git a/redisson/src/test/java/org/redisson/codec/JsonJacksonCodecTest.java b/redisson/src/test/java/org/redisson/codec/JsonJacksonCodecTest.java index b1f725c28..f1fba5536 100644 --- a/redisson/src/test/java/org/redisson/codec/JsonJacksonCodecTest.java +++ b/redisson/src/test/java/org/redisson/codec/JsonJacksonCodecTest.java @@ -2,6 +2,7 @@ package org.redisson.codec; import java.io.IOException; +import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.ObjectMapper; @@ -37,6 +38,17 @@ public class JsonJacksonCodecTest { }); } + @Test + public void shouldSerializeAndDeserializeThrowable() throws JsonProcessingException { + //given + ObjectMapper objectMapper = JsonJacksonCodec.INSTANCE.getObjectMapper(); + //when + String serialized = objectMapper.writeValueAsString(new RuntimeException("Example message")); + RuntimeException deserialized = objectMapper.readValue(serialized, RuntimeException.class); + //then + Assertions.assertEquals("Example message", deserialized.getMessage()); + } + @Test public void shouldNotOverrideProvidedObjectMapperProperties() { ObjectMapper objectMapper = new ObjectMapper();