override fun collectNavigationMarkers()

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)
                }
            }

        }

    }