override fun resolveArgument()

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
    }