From 98d6cec646b95a3b2c435b9497f94577d96dafe8 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 30 Dec 2023 22:24:41 +0900 Subject: [PATCH 1/4] Remove Kotlin version check Kotlin 1.4 has already been deprecated for some time. --- .../fasterxml/jackson/module/kotlin/KotlinModule.kt | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt index 8846b807..d85c6158 100644 --- a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt +++ b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt @@ -1,6 +1,5 @@ package com.fasterxml.jackson.module.kotlin -import com.fasterxml.jackson.databind.JsonMappingException import com.fasterxml.jackson.databind.MapperFeature import com.fasterxml.jackson.databind.module.SimpleModule import com.fasterxml.jackson.module.kotlin.KotlinFeature.NullIsSameAsDefault @@ -62,16 +61,6 @@ class KotlinModule @Deprecated( private const val serialVersionUID = 2L } - init { - if (!KotlinVersion.CURRENT.isAtLeast(1, 5)) { - // Kotlin 1.4 was deprecated when this process was introduced(jackson-module-kotlin 2.15). - throw JsonMappingException( - null, - "KotlinModule requires Kotlin version >= 1.5 - Found ${KotlinVersion.CURRENT}" - ) - } - } - @Deprecated( level = DeprecationLevel.HIDDEN, message = "If you have no choice but to initialize KotlinModule from reflection, use this constructor." From 1dc7bc80c4f3175c2e8b9e0493c4060b079b7760 Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 30 Dec 2023 22:34:59 +0900 Subject: [PATCH 2/4] Improved the way ClosedRangeMixin is set ClosedRangeMixin can be applied to IntRange, etc. by only setting it to ClosedRange::class. --- .../com/fasterxml/jackson/module/kotlin/KotlinModule.kt | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt index d85c6158..969380d7 100644 --- a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt +++ b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt @@ -151,15 +151,8 @@ class KotlinModule @Deprecated( context.addSerializers(KotlinSerializers()) context.addKeySerializers(KotlinKeySerializers()) - fun addMixIn(clazz: Class<*>, mixin: Class<*>) { - context.setMixInAnnotations(clazz, mixin) - } - // ranges - addMixIn(IntRange::class.java, ClosedRangeMixin::class.java) - addMixIn(CharRange::class.java, ClosedRangeMixin::class.java) - addMixIn(LongRange::class.java, ClosedRangeMixin::class.java) - addMixIn(ClosedRange::class.java, ClosedRangeMixin::class.java) + context.setMixInAnnotations(ClosedRange::class.java, ClosedRangeMixin::class.java) } class Builder { From aa82497fd7e322835c834d3ba5b231579a33041d Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 30 Dec 2023 22:57:59 +0900 Subject: [PATCH 3/4] Remove unused property and fix visibility --- pom.xml | 1 + .../com/fasterxml/jackson/module/kotlin/KotlinModule.kt | 1 - .../module/kotlin/KotlinNamesAnnotationIntrospector.kt | 7 +++---- 3 files changed, 4 insertions(+), 5 deletions(-) diff --git a/pom.xml b/pom.xml index 348afb9b..eae26f87 100644 --- a/pom.xml +++ b/pom.xml @@ -236,6 +236,7 @@ com.fasterxml.jackson.module.kotlin.SequenceSerializer com.fasterxml.jackson.module.kotlin.KotlinModule#serialVersionUID + com.fasterxml.jackson.module.kotlin.KotlinNamesAnnotationIntrospector diff --git a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt index 969380d7..a5e35c6a 100644 --- a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt +++ b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinModule.kt @@ -140,7 +140,6 @@ class KotlinModule @Deprecated( )) context.appendAnnotationIntrospector( KotlinNamesAnnotationIntrospector( - this, cache, ignoredClassesForImplyingJsonCreator, useKotlinPropertyNameForGetter) diff --git a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinNamesAnnotationIntrospector.kt b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinNamesAnnotationIntrospector.kt index d4af91b9..710e56a1 100644 --- a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinNamesAnnotationIntrospector.kt +++ b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinNamesAnnotationIntrospector.kt @@ -26,10 +26,9 @@ import kotlin.reflect.jvm.javaType import kotlin.reflect.jvm.kotlinFunction internal class KotlinNamesAnnotationIntrospector( - val module: KotlinModule, - val cache: ReflectionCache, - val ignoredClassesForImplyingJsonCreator: Set>, - val useKotlinPropertyNameForGetter: Boolean + private val cache: ReflectionCache, + private val ignoredClassesForImplyingJsonCreator: Set>, + private val useKotlinPropertyNameForGetter: Boolean ) : NopAnnotationIntrospector() { private fun getterNameFromJava(member: AnnotatedMethod): String? { val name = member.name From a33dbf5acdfc5a6bfc70df0558f4531735dfce8b Mon Sep 17 00:00:00 2001 From: wrongwrong Date: Sat, 30 Dec 2023 23:17:00 +0900 Subject: [PATCH 4/4] Update release notes wrt #747 --- release-notes/CREDITS-2.x | 1 + release-notes/VERSION-2.x | 2 ++ 2 files changed, 3 insertions(+) diff --git a/release-notes/CREDITS-2.x b/release-notes/CREDITS-2.x index 6f21d2b1..f7ea18e1 100644 --- a/release-notes/CREDITS-2.x +++ b/release-notes/CREDITS-2.x @@ -18,6 +18,7 @@ Contributors: # 2.17.0 (not yet released) WrongWrong (@k163377) +* #747: Improved performance related to KotlinModule initialization and setupModule. * #746: The KotlinModule#serialVersionUID is set to private. * #745: Modified isKotlinClass determination method. * #744: API deprecation update for KotlinModule. diff --git a/release-notes/VERSION-2.x b/release-notes/VERSION-2.x index 0ea6041c..0b77866e 100644 --- a/release-notes/VERSION-2.x +++ b/release-notes/VERSION-2.x @@ -18,6 +18,8 @@ Co-maintainers: 2.17.0 (not yet released) +#747: Improved performance related to KotlinModule initialization and setupModule. + With this change, the KotlinModule initialization error when using Kotlin 1.4 or lower has been eliminated. #746: The KotlinModule#serialVersionUID is set to private. #745: Modified isKotlinClass determination method. #744: Functions that were already marked as deprecated,