override fun applyFix()

in src/main/kotlin/com/netflix/dgs/plugin/hints/DgsComponentInspector.kt [77:99]


        override fun applyFix(project: Project, descriptor: ProblemDescriptor) {
            val clazz: UClass = descriptor.psiElement.getUastParentOfType(UClass::class.java)!!

            val sourcePsi = clazz.sourcePsi
            if(sourcePsi is PsiClass) {
                val factory: PsiElementFactory = JavaPsiFacade.getInstance(project).elementFactory
                val annotationFromText: PsiAnnotation = factory.createAnnotationFromText("@DgsComponent", null)
                val firstModifier = sourcePsi.modifierList?.firstChild
                if(firstModifier != null) {
                    sourcePsi.modifierList?.addBefore(annotationFromText, firstModifier)
                } else {
                    sourcePsi.addBefore(annotationFromText, sourcePsi)
                }

                val importStatement = factory.createImportStatement(factory.createTypeByFQClassName("com.netflix.graphql.dgs.DgsComponent").resolve()!!)
                val psiJavaFile = sourcePsi.containingFile as PsiJavaFile
                psiJavaFile.importList?.add(importStatement)
            } else if(sourcePsi is KtClass) {
                val fqName = ClassId.fromString("com/netflix/graphql/dgs/DgsComponent")
                sourcePsi.addAnnotation(fqName)
            }
            project.getService(DgsService::class.java).clearCache()
        }