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