Spring dependency-generations actions: runWriteAction moved to the proper place (KT-18385)
This commit is contained in:
committed by
Nikolay Krasko
parent
ca19ea8205
commit
532560ef43
+1
-5
@@ -22,8 +22,6 @@ import com.intellij.openapi.project.Project
|
||||
import com.intellij.psi.PsiFile
|
||||
import com.intellij.spring.SpringBundle
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.idea.editor.BatchTemplateRunner
|
||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
|
||||
class GenerateKotlinAutowiredDependencyAction : GenerateKotlinSpringBeanDependencyAction(
|
||||
@@ -34,8 +32,6 @@ class GenerateKotlinAutowiredDependencyAction : GenerateKotlinSpringBeanDependen
|
||||
override fun invoke(project: Project, editor: Editor, file: PsiFile) {
|
||||
val klass = getTargetClass(editor, file) as? KtClass ?: return
|
||||
val lightClass = klass.toLightClass() ?: return
|
||||
project
|
||||
.executeWriteCommand<List<BatchTemplateRunner>>("") { generateAutowiredDependenciesFor(lightClass) }
|
||||
.forEach { it.runTemplates() }
|
||||
generateAutowiredDependenciesFor(lightClass).forEach { it.runTemplates() }
|
||||
}
|
||||
}
|
||||
+1
-5
@@ -25,8 +25,6 @@ import com.intellij.spring.SpringBundle
|
||||
import com.intellij.spring.SpringManager
|
||||
import com.intellij.spring.model.utils.SpringModelUtils
|
||||
import org.jetbrains.kotlin.asJava.toLightClass
|
||||
import org.jetbrains.kotlin.idea.editor.BatchTemplateRunner
|
||||
import org.jetbrains.kotlin.idea.util.application.executeWriteCommand
|
||||
import org.jetbrains.kotlin.psi.KtClass
|
||||
|
||||
abstract class GenerateKotlinSpringBeanXmlDependencyAction(
|
||||
@@ -56,9 +54,7 @@ abstract class GenerateKotlinSpringBeanXmlDependencyAction(
|
||||
val klass = getTargetClass(editor, file) as? KtClass ?: return
|
||||
val lightClass = klass.toLightClass() ?: return
|
||||
val springModel = SpringModelUtils.getInstance().getPsiClassSpringModel(lightClass)
|
||||
val templates = project.executeWriteCommand<List<BatchTemplateRunner>>("") {
|
||||
generateDependenciesFor(springModel, lightClass, injectionKind)
|
||||
}
|
||||
val templates = generateDependenciesFor(springModel, lightClass, injectionKind)
|
||||
templates.forEach { it.runTemplates() }
|
||||
}
|
||||
}
|
||||
+8
-3
@@ -18,6 +18,7 @@ package org.jetbrains.kotlin.idea.spring.generate
|
||||
|
||||
import com.intellij.codeInsight.template.TemplateBuilderImpl
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.runWriteAction
|
||||
import com.intellij.openapi.util.text.StringUtil
|
||||
import com.intellij.psi.PsiClass
|
||||
import com.intellij.spring.CommonSpringModel
|
||||
@@ -105,8 +106,11 @@ private fun createAutowiredDependency(
|
||||
): BatchTemplateRunner? {
|
||||
val candidateBeanClasses = candidateBean.effectiveBeanClasses().ifEmpty { return null }
|
||||
if (!GenerateSpringBeanDependenciesUtil.ensureFileWritable(klass)) return null
|
||||
val property = createAutowiredProperty(klass, candidateBean, candidateBeanClasses, model) ?: return null
|
||||
return addCreatePropertyTemplate(property, candidateBean, candidateBeanClasses)
|
||||
return runWriteAction {
|
||||
createAutowiredProperty(klass, candidateBean, candidateBeanClasses, model)?.let { property ->
|
||||
addCreatePropertyTemplate(property, candidateBean, candidateBeanClasses)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun generateAutowiredDependenciesFor(klass: KtLightClass): List<BatchTemplateRunner> {
|
||||
@@ -114,7 +118,8 @@ fun generateAutowiredDependenciesFor(klass: KtLightClass): List<BatchTemplateRun
|
||||
val candidates = GenerateSpringBeanDependenciesUtil.getAutowiredBeanCandidates(model) { true }
|
||||
val dependencies = if (ApplicationManager.getApplication().isUnitTestMode) {
|
||||
candidates.map { it.springBean }.filter(klass.project.beanFilter).sortedBy { it.name }
|
||||
} else {
|
||||
}
|
||||
else {
|
||||
GenerateSpringBeanDependenciesUtil.chooseDependentBeans(candidates, klass.project, true)
|
||||
}
|
||||
return dependencies.mapNotNull { createAutowiredDependency(klass, it, model) }
|
||||
|
||||
@@ -24,6 +24,7 @@ import com.intellij.codeInsight.template.TemplateBuilderImpl
|
||||
import com.intellij.codeInsight.template.TextResult
|
||||
import com.intellij.codeInspection.SmartHashMap
|
||||
import com.intellij.openapi.application.ApplicationManager
|
||||
import com.intellij.openapi.application.runWriteAction
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.Key
|
||||
import com.intellij.psi.*
|
||||
@@ -439,11 +440,13 @@ private fun generateDependency(
|
||||
dependency: SpringBeanPointer<CommonSpringBean>,
|
||||
injectionKind: SpringDependencyInjectionKind
|
||||
): BatchTemplateRunner? {
|
||||
return if (injectionKind.isSetter) {
|
||||
createSetterDependency(springBean, dependency, injectionKind)
|
||||
}
|
||||
else {
|
||||
createConstructorDependency(springBean, dependency)
|
||||
return runWriteAction {
|
||||
if (injectionKind.isSetter) {
|
||||
createSetterDependency(springBean, dependency, injectionKind)
|
||||
}
|
||||
else {
|
||||
createConstructorDependency(springBean, dependency)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user