@@ -63,31 +63,29 @@ internal class KotlinNamesAnnotationIntrospector(val module: KotlinModule, val c
63
63
.apply { if (this in ignoredClassesForImplyingJsonCreator) return false }
64
64
val kConstructor = cache.kotlinFromJava(member.annotated as Constructor <Any >) ? : return false
65
65
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
-
79
66
// TODO: should we do this check or not? It could cause failures if we miss another way a property could be set
80
67
// val requiredProperties = kClass.declaredMemberProperties.filter {!it.returnType.isMarkedNullable }.map { it.name }.toSet()
81
68
// val areAllRequiredParametersInConstructor = kConstructor.parameters.all { requiredProperties.contains(it.name) }
82
69
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()
86
71
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
+ }
91
89
}
92
90
93
91
override fun hasCreatorAnnotation (member : Annotated ): Boolean =
0 commit comments