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