diff --git a/redisson/src/main/java/org/redisson/codec/JsonJacksonCodec.java b/redisson/src/main/java/org/redisson/codec/JsonJacksonCodec.java index 747194ae7..4df9a9939 100755 --- a/redisson/src/main/java/org/redisson/codec/JsonJacksonCodec.java +++ b/redisson/src/main/java/org/redisson/codec/JsonJacksonCodec.java @@ -103,9 +103,9 @@ public class JsonJacksonCodec implements Codec { } public JsonJacksonCodec(ObjectMapper mapObjectMapper) { - this.mapObjectMapper = mapObjectMapper; - init(mapObjectMapper); - initTypeInclusion(mapObjectMapper); + this.mapObjectMapper = mapObjectMapper.copy(); + init(this.mapObjectMapper); + initTypeInclusion(this.mapObjectMapper); } protected void initTypeInclusion(ObjectMapper mapObjectMapper) { diff --git a/redisson/src/test/java/org/redisson/codec/JsonJacksonCodecTest.java b/redisson/src/test/java/org/redisson/codec/JsonJacksonCodecTest.java index abdd90a18..c195dadd5 100644 --- a/redisson/src/test/java/org/redisson/codec/JsonJacksonCodecTest.java +++ b/redisson/src/test/java/org/redisson/codec/JsonJacksonCodecTest.java @@ -2,6 +2,8 @@ package org.redisson.codec; import java.io.IOException; +import com.fasterxml.jackson.databind.DeserializationFeature; +import com.fasterxml.jackson.databind.ObjectMapper; import org.junit.Assert; import org.junit.Test; @@ -33,5 +35,18 @@ public class JsonJacksonCodecTest { codec.getObjectMapper().readValue(JSON, Bean1599.class); Assert.fail("Should not pass"); } - + + @Test + public void shouldNotOverrideProvidedObjectMapperProperties() throws Exception { + ObjectMapper objectMapper = new ObjectMapper(); + objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, true); + objectMapper.configure(DeserializationFeature.UNWRAP_ROOT_VALUE, false); + JsonJacksonCodec codec = new JsonJacksonCodec(objectMapper); + + Assert.assertTrue(objectMapper.getDeserializationConfig().isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)); + Assert.assertFalse(codec.getObjectMapper().getDeserializationConfig().isEnabled(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES)); + + Assert.assertFalse(objectMapper.getDeserializationConfig().isEnabled(DeserializationFeature.UNWRAP_ROOT_VALUE)); + Assert.assertFalse(codec.getObjectMapper().getDeserializationConfig().isEnabled(DeserializationFeature.UNWRAP_ROOT_VALUE)); + } }