From d291b43abd57d18bfc785c5ddc978c1b02497a78 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Tue, 21 Mar 2023 21:16:18 +0900 Subject: [PATCH] Change parameter property to transient. temporary workaround for #572 --- pom.xml | 1 + .../jackson/module/kotlin/Exceptions.kt | 4 +++- .../MissingKotlinParameterExceptionTest.kt | 20 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 src/test/kotlin/com/fasterxml/jackson/module/kotlin/MissingKotlinParameterExceptionTest.kt diff --git a/pom.xml b/pom.xml index 2b49bcf4c..b41d86352 100644 --- a/pom.xml +++ b/pom.xml @@ -223,6 +223,7 @@ --> com.fasterxml.jackson.module.kotlin.ReflectionCache com.fasterxml.jackson.module.kotlin.TypesKt + com.fasterxml.jackson.module.kotlin.MissingKotlinParameterException diff --git a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Exceptions.kt b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Exceptions.kt index 0bca95b63..3aec2feae 100644 --- a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Exceptions.kt +++ b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Exceptions.kt @@ -18,7 +18,9 @@ import kotlin.reflect.KParameter ), DeprecationLevel.WARNING ) -class MissingKotlinParameterException(val parameter: KParameter, +// When deserialized by the JDK, the parameter property will be null, ignoring nullability. +// This is a temporary workaround for #572 and we will eventually remove this class. +class MissingKotlinParameterException(@Transient val parameter: KParameter, processor: JsonParser? = null, msg: String) : MismatchedInputException(processor, msg) { @Deprecated("Use main constructor", ReplaceWith("MissingKotlinParameterException(KParameter, JsonParser?, String)")) diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/MissingKotlinParameterExceptionTest.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/MissingKotlinParameterExceptionTest.kt new file mode 100644 index 000000000..2a15fed5b --- /dev/null +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/MissingKotlinParameterExceptionTest.kt @@ -0,0 +1,20 @@ +package com.fasterxml.jackson.module.kotlin + +import org.junit.Test +import kotlin.test.assertNotNull +import kotlin.test.assertNull + +class MissingKotlinParameterExceptionTest { + @Test + fun jdkSerializabilityTest() { + val param = ::MissingKotlinParameterException.parameters.first() + val ex = MissingKotlinParameterException(param, null, "test") + + val serialized = jdkSerialize(ex) + val deserialized = jdkDeserialize(serialized) + + assertNotNull(deserialized) + // see comment at MissingKotlinParameterException + assertNull(deserialized.parameter) + } +}