diff --git a/release-notes/CREDITS-2.x b/release-notes/CREDITS-2.x index 9734c110..1292daf2 100644 --- a/release-notes/CREDITS-2.x +++ b/release-notes/CREDITS-2.x @@ -18,6 +18,7 @@ Contributors: # 2.19.0 (not yet released) WrongWrong (@k163377) +* #959: Add extensions for configOverride * #954: Replace BooleanTriState with OptBoolean * #944: Fixed to use common util for Member accessibility override * #937: Added type match check to read functions diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x index 378d220d..dec9e137 100644 --- a/release-notes/VERSION-2.x +++ b/release-notes/VERSION-2.x @@ -18,6 +18,7 @@ Co-maintainers: 2.19.0 (not yet released) +#959: Extension functions has been added to simplify `configOverride` calls to `ObjectMapper` and `Module.SetupContext`. #954: Replaced `OptBoolean` of internal caching with a common implementation. #944: Common util is now used for member accessibility overrides. #937: For `readValue` and other shorthands for `ObjectMapper` deserialization methods, diff --git a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt index e379560c..c79fc3f8 100644 --- a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt +++ b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt @@ -7,9 +7,11 @@ import com.fasterxml.jackson.databind.JsonDeserializer import com.fasterxml.jackson.databind.JsonNode import com.fasterxml.jackson.databind.JsonSerializer import com.fasterxml.jackson.databind.MappingIterator +import com.fasterxml.jackson.databind.Module import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.ObjectReader import com.fasterxml.jackson.databind.RuntimeJsonMappingException +import com.fasterxml.jackson.databind.cfg.MutableConfigOverride import com.fasterxml.jackson.databind.json.JsonMapper import com.fasterxml.jackson.databind.module.SimpleModule import com.fasterxml.jackson.databind.node.ArrayNode @@ -226,3 +228,7 @@ fun SimpleModule.addDeserializer(kClass: KClass, deserializer: Json kClass.javaPrimitiveType?.let { addDeserializer(it, deserializer) } addDeserializer(kClass.javaObjectType, deserializer) } + +inline fun ObjectMapper.configOverride(): MutableConfigOverride = configOverride(T::class.java) +inline fun Module.SetupContext.configOverride(): MutableConfigOverride = + configOverride(T::class.java) diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/github/GitHub876.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/github/GitHub876.kt index de1a21e3..d3c41942 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/github/GitHub876.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/github/GitHub876.kt @@ -2,6 +2,7 @@ package com.fasterxml.jackson.module.kotlin.test.github import com.fasterxml.jackson.annotation.JsonSetter import com.fasterxml.jackson.annotation.Nulls +import com.fasterxml.jackson.module.kotlin.configOverride import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.readValue import org.junit.jupiter.api.Nested @@ -89,9 +90,9 @@ class GitHub876 { @Nested inner class WithoutAnnotationWithoutDefaultTest { val mapper = jacksonObjectMapper().apply { - configOverride(List::class.java).setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) - configOverride(Map::class.java).setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) - configOverride(String::class.java).setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) + configOverride>().setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) + configOverride>().setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) + configOverride().setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) } @Test @@ -124,9 +125,9 @@ class GitHub876 { @Nested inner class WithoutAnnotationWithDefaultTest { val mapper = jacksonObjectMapper().apply { - configOverride(List::class.java).setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) - configOverride(Map::class.java).setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) - configOverride(String::class.java).setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) + configOverride>().setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) + configOverride>().setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) + configOverride().setterInfo = JsonSetter.Value.forValueNulls(Nulls.AS_EMPTY) } @Test