fun getDataLoader()

in graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/DgsDataFetchingEnvironment.kt [44:63]


    fun <K, V> getDataLoader(loaderClass: Class<*>): DataLoader<K, V> {
        val annotation = loaderClass.getAnnotation(DgsDataLoader::class.java)
        val loaderName =
            if (annotation != null) {
                DataLoaderNameUtil.getDataLoaderName(loaderClass, annotation)
            } else {
                val loaders = loaderClass.fields.filter { it.isAnnotationPresent(DgsDataLoader::class.java) }
                if (loaders.isEmpty()) {
                    // annotation is not on the class, but potentially on the Bean definition
                    tryGetDataLoaderFromBeanDefinition(loaderClass)
                } else {
                    if (loaders.size > 1) throw MultipleDataLoadersDefinedException(loaderClass)
                    val loaderField = loaders.firstOrNull() ?: throw NoDataLoaderFoundException(loaderClass)
                    val theAnnotation = loaderField.getAnnotation(DgsDataLoader::class.java)
                    theAnnotation.name
                }
            }

        return getDataLoader(loaderName) ?: throw NoDataLoaderFoundException("DataLoader with name $loaderName not found")
    }