diff --git a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinAutowiredDependencyAction.kt b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinAutowiredDependencyAction.kt index 7cfce21c887..ab5f022172b 100644 --- a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinAutowiredDependencyAction.kt +++ b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinAutowiredDependencyAction.kt @@ -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>("") { generateAutowiredDependenciesFor(lightClass) } - .forEach { it.runTemplates() } + generateAutowiredDependenciesFor(lightClass).forEach { it.runTemplates() } } } \ No newline at end of file diff --git a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanXmlDependencyAction.kt b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanXmlDependencyAction.kt index ab6692aeca3..6c7ae3c8139 100644 --- a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanXmlDependencyAction.kt +++ b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanXmlDependencyAction.kt @@ -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>("") { - generateDependenciesFor(springModel, lightClass, injectionKind) - } + val templates = generateDependenciesFor(springModel, lightClass, injectionKind) templates.forEach { it.runTemplates() } } } \ No newline at end of file diff --git a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt index dda0e19202c..77137ecca34 100644 --- a/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt +++ b/ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt @@ -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 { @@ -114,7 +118,8 @@ fun generateAutowiredDependenciesFor(klass: KtLightClass): List, 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) + } } }