in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/method/AbstractInputArgumentResolver.kt [47:79]
override fun resolveArgument(
parameter: MethodParameter,
dfe: DataFetchingEnvironment,
): Any? {
val argumentName = getArgumentName(parameter)
val value = dfe.getArgument<Any?>(argumentName)
val kfunc = parameter.method?.kotlinFunction
if (kfunc != null) {
val parameterIdx =
if (kfunc.parameters.first().kind == KParameter.Kind.INSTANCE) {
parameter.parameterIndex + 1
} else {
parameter.parameterIndex
}
val param = kfunc.parameters[parameterIdx]
if (param.type.arguments.isEmpty() && param.type.jvmErasure.isInstance(value)) {
return value
}
}
val typeDescriptor = TypeDescriptor(parameter)
val convertedValue = convertValue(value, typeDescriptor)
if (convertedValue == null && dfe.fieldDefinition.arguments.none { it.name == argumentName }) {
logger.warn(
"Unknown argument '{}'",
argumentName,
)
}
return convertedValue
}