Skip to content

Commit 2780abd

Browse files
committed
Change to an early return
1 parent dbfe25d commit 2780abd

File tree

1 file changed

+18
-20
lines changed

1 file changed

+18
-20
lines changed

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

Lines changed: 18 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -63,31 +63,29 @@ internal class KotlinNamesAnnotationIntrospector(val module: KotlinModule, val c
6363
.apply { if (this in ignoredClassesForImplyingJsonCreator) return false }
6464
val kConstructor = cache.kotlinFromJava(member.annotated as Constructor<Any>) ?: return false
6565

66-
val isPrimaryConstructor = kClass.isPrimaryConstructor(kConstructor)
67-
68-
val propertyNames = kClass.memberProperties.map { it.name }.toSet()
69-
70-
val anyConstructorHasJsonCreator = kClass.constructors
71-
.filterOutSingleStringCallables(propertyNames)
72-
.any { it.hasAnnotation<JsonCreator>() }
73-
74-
val anyCompanionMethodIsJsonCreator = member.type.rawClass.kotlin.companionObject?.declaredFunctions
75-
?.filterOutSingleStringCallables(propertyNames)
76-
?.any { it.hasAnnotation<JsonCreator>() && it.hasAnnotation<JvmStatic>() }
77-
?: false
78-
7966
// TODO: should we do this check or not? It could cause failures if we miss another way a property could be set
8067
// val requiredProperties = kClass.declaredMemberProperties.filter {!it.returnType.isMarkedNullable }.map { it.name }.toSet()
8168
// val areAllRequiredParametersInConstructor = kConstructor.parameters.all { requiredProperties.contains(it.name) }
8269

83-
val areAllParametersValid = kConstructor.parameters.all { it.name != null }
84-
85-
val isSingleStringConstructor = kConstructor.isPossibleSingleString(propertyNames)
70+
val propertyNames = kClass.memberProperties.map { it.name }.toSet()
8671

87-
return isPrimaryConstructor
88-
&& !(anyConstructorHasJsonCreator || anyCompanionMethodIsJsonCreator)
89-
&& areAllParametersValid
90-
&& !isSingleStringConstructor
72+
return when {
73+
kConstructor.isPossibleSingleString(propertyNames) -> false
74+
kConstructor.parameters.any { it.name == null } -> false
75+
!kClass.isPrimaryConstructor(kConstructor) -> false
76+
else -> {
77+
val anyConstructorHasJsonCreator = kClass.constructors
78+
.filterOutSingleStringCallables(propertyNames)
79+
.any { it.hasAnnotation<JsonCreator>() }
80+
81+
val anyCompanionMethodIsJsonCreator = member.type.rawClass.kotlin.companionObject?.declaredFunctions
82+
?.filterOutSingleStringCallables(propertyNames)
83+
?.any { it.hasAnnotation<JsonCreator>() && it.hasAnnotation<JvmStatic>() }
84+
?: false
85+
86+
!(anyConstructorHasJsonCreator || anyCompanionMethodIsJsonCreator)
87+
}
88+
}
9189
}
9290

9391
override fun hasCreatorAnnotation(member: Annotated): Boolean =

0 commit comments

Comments
 (0)