Skip to content

Commit 8128f97

Browse files
authored
Merge pull request #456 from k163377/optimize_findImplicitPropertyName
Optimize `KotlinNamesAnnotationIntrospector.findImplicitPropertyName` method.
2 parents e97a0d8 + 5c675f1 commit 8128f97

File tree

1 file changed

+10
-22
lines changed

1 file changed

+10
-22
lines changed

src/main/kotlin/com/fasterxml/jackson/module/kotlin/KotlinNamesAnnotationIntrospector.kt

+10-22
Original file line numberDiff line numberDiff line change
@@ -28,26 +28,16 @@ import kotlin.reflect.jvm.kotlinFunction
2828

2929
internal class KotlinNamesAnnotationIntrospector(val module: KotlinModule, val cache: ReflectionCache, val ignoredClassesForImplyingJsonCreator: Set<KClass<*>>) : NopAnnotationIntrospector() {
3030
// since 2.4
31-
override fun findImplicitPropertyName(member: AnnotatedMember): String? {
32-
if (member is AnnotatedMethod && member.isInlineClass()) {
33-
if (member.name.startsWith("get") &&
34-
member.name.contains('-') &&
35-
member.parameterCount == 0) {
36-
return member.name.substringAfter("get")
37-
.replaceFirstChar { it.lowercase(Locale.getDefault()) }
38-
.substringBefore('-')
39-
} else if (member.name.startsWith("is") &&
40-
member.name.contains('-') &&
41-
member.parameterCount == 0) {
42-
return member.name.substringAfter("is")
43-
.replaceFirstChar { it.lowercase(Locale.getDefault()) }
44-
.substringBefore('-')
45-
}
46-
} else if (member is AnnotatedParameter) {
47-
return findKotlinParameterName(member)
48-
}
49-
50-
return null
31+
override fun findImplicitPropertyName(member: AnnotatedMember): String? = when (member) {
32+
is AnnotatedMethod -> if (member.name.contains('-') && member.parameterCount == 0) {
33+
when {
34+
member.name.startsWith("get") -> member.name.substringAfter("get")
35+
member.name.startsWith("is") -> member.name.substringAfter("is")
36+
else -> null
37+
}?.replaceFirstChar { it.lowercase(Locale.getDefault()) }?.substringBefore('-')
38+
} else null
39+
is AnnotatedParameter -> findKotlinParameterName(member)
40+
else -> null
5141
}
5242

5343
// since 2.11: support Kotlin's way of handling "isXxx" backed properties where
@@ -169,5 +159,3 @@ internal class KotlinNamesAnnotationIntrospector(val module: KotlinModule, val c
169159
}
170160
}
171161
}
172-
173-
private fun AnnotatedMethod.isInlineClass() = declaringClass.declaredMethods.any { it.name.contains('-') }

0 commit comments

Comments
 (0)