in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/DataFetcherInvoker.kt [71:105]
override fun get(environment: DataFetchingEnvironment): Any? {
if (methodParameters.isEmpty()) {
if (completableFutureWrapper.shouldWrapInCompletableFuture(bridgedMethod)) {
return completableFutureWrapper.wrapInCompletableFuture { ReflectionUtils.invokeMethod(bridgedMethod, dgsComponent) }
}
return try {
bridgedMethod.invoke(dgsComponent)
} catch (exc: Exception) {
handleReflectionException(exc)
}
}
if (kotlinFunction != null) {
return invokeKotlinMethod(kotlinFunction, environment)
}
val args = arrayOfNulls<Any?>(methodParameters.size)
for ((idx, parameter) in methodParameters.withIndex()) {
if (!resolvers.supportsParameter(parameter)) {
throw IllegalStateException(formatArgumentError(parameter, "No suitable resolver"))
}
args[idx] = resolvers.resolveArgument(parameter, environment)
}
return if (completableFutureWrapper.shouldWrapInCompletableFuture(bridgedMethod)) {
completableFutureWrapper.wrapInCompletableFuture { ReflectionUtils.invokeMethod(bridgedMethod, dgsComponent, *args) }
} else {
try {
bridgedMethod.invoke(dgsComponent, *args)
} catch (exc: Exception) {
handleReflectionException(exc)
}
}
}