From 578fee6daf38f6853f858745f87403c7f068938f Mon Sep 17 00:00:00 2001 From: Samuel Vazquez Date: Wed, 23 Apr 2025 14:40:34 -0600 Subject: [PATCH] feat: if getter exists do not attempt to compute it again (#2096) Co-authored-by: Samuel Vazquez --- .../execution/SingletonPropertyDataFetcher.kt | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/execution/SingletonPropertyDataFetcher.kt b/generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/execution/SingletonPropertyDataFetcher.kt index d3f1481489..8498142178 100644 --- a/generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/execution/SingletonPropertyDataFetcher.kt +++ b/generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/execution/SingletonPropertyDataFetcher.kt @@ -33,14 +33,18 @@ internal object SingletonPropertyDataFetcher : LightDataFetcher { environmentSupplier: Supplier ): Any? = sourceObject?.let { - getters["${sourceObject.javaClass.name}.${fieldDefinition.name}"]?.call(sourceObject) ?: run { - sourceObject::class.memberProperties - .find { it.name == fieldDefinition.name } - ?.let { kProperty -> - kProperty.getter.call(sourceObject).also { - register(sourceObject::class, kProperty) + val getter = getters["${sourceObject.javaClass.name}.${fieldDefinition.name}"] + when { + getter != null -> getter.call(sourceObject) + else -> { + sourceObject::class.memberProperties + .find { it.name == fieldDefinition.name } + ?.let { kProperty -> + kProperty.getter.call(sourceObject).also { + register(sourceObject::class, kProperty) + } } - } + } } ?: run { logger.error("getter method not found: ${sourceObject.javaClass.name}.${fieldDefinition.name}") }