in src/main/kotlin/com/netflix/dgs/plugin/navigation/DataFetcherToSchemaMarkerProvider.kt [32:66]
override fun collectNavigationMarkers(
element: PsiElement,
result: MutableCollection<in RelatedItemLineMarkerInfo<*>>
) {
val dgsService = element.project.getService(DgsService::class.java)
if(!dgsService.isDgsProject(element.project)) {
return
}
val uElement = element.toUElement()
if (uElement is UAnnotation) {
if (DgsDataFetcher.isDataFetcherAnnotation(uElement) || DgsEntityFetcher.isEntityFetcherAnnotation(uElement)) {
val dgsDataFetcher = dgsService.dgsComponentIndex.dataFetchers.find { it.psiAnnotation == element }
val dgsEntityFetcher = dgsService.dgsComponentIndex.entityFetchers.find { it.psiAnnotation == element }
if (dgsDataFetcher?.schemaPsi != null || dgsEntityFetcher?.schemaPsi != null) {
val psiLeaf = PsiTreeUtil.getDeepestFirst(element)
val target = dgsDataFetcher?.schemaPsi?: dgsEntityFetcher!!.schemaPsi
val builder =
NavigationGutterIconBuilder.create(DgsConstants.dgsIcon)
.setTargets(target)
.setTooltipText("Navigate to GraphQL schema type")
.createLineMarkerInfo(psiLeaf)
result.add(builder)
}
}
}
}