diff --git a/ChangeLog.md b/ChangeLog.md
index 7073a247745..8f9d94b6ba0 100644
--- a/ChangeLog.md
+++ b/ChangeLog.md
@@ -130,6 +130,7 @@ New features:
- [KT-11406](https://youtrack.jetbrains.com/issue/KT-11406) Support Spring EL injections inside of Kotlin string literals
- [KT-11604](https://youtrack.jetbrains.com/issue/KT-11604) Support "Configure Spring facet" inspection on Kotlin classes
- [KT-11407](https://youtrack.jetbrains.com/issue/KT-11407) Implemented "Generate Spring Dependency..." actions
+- [KT-11408](https://youtrack.jetbrains.com/issue/KT-11408) Implemented "Generate @Autowired Dependency..." action
Issues fixed:
diff --git a/idea/idea-ultimate/src/META-INF/kotlin-spring.xml b/idea/idea-ultimate/src/META-INF/kotlin-spring.xml
index 299bf1b55c0..fe33323ba4b 100644
--- a/idea/idea-ultimate/src/META-INF/kotlin-spring.xml
+++ b/idea/idea-ultimate/src/META-INF/kotlin-spring.xml
@@ -25,15 +25,20 @@
+ class="org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Setter">
+ class="org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor">
+ class="org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$LateinitProperty">
+
+
+
+
diff --git a/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinAutowiredDependencyAction.kt b/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinAutowiredDependencyAction.kt
new file mode 100644
index 00000000000..7cfce21c887
--- /dev/null
+++ b/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinAutowiredDependencyAction.kt
@@ -0,0 +1,41 @@
+/*
+ * Copyright 2010-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.kotlin.idea.spring.generate
+
+import com.intellij.openapi.editor.Editor
+import com.intellij.openapi.module.Module
+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(
+ SpringBundle.message("action.generate.autowired.dependencies.action.text")
+) {
+ override fun checkContext(module: Module) = true
+
+ 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() }
+ }
+}
\ No newline at end of file
diff --git a/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanDependencyAction.kt b/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanDependencyAction.kt
index 992a7836d7d..b280c592f99 100644
--- a/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanDependencyAction.kt
+++ b/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanDependencyAction.kt
@@ -16,39 +16,15 @@
package org.jetbrains.kotlin.idea.spring.generate
-import com.intellij.openapi.editor.Editor
-import com.intellij.openapi.project.Project
-import com.intellij.psi.PsiFile
-import com.intellij.psi.xml.XmlFile
-import com.intellij.spring.SpringBundle
-import com.intellij.spring.SpringManager
+import com.intellij.openapi.module.Module
import com.intellij.spring.model.actions.generate.GenerateSpringBeanDependenciesUtil
-import com.intellij.spring.model.utils.SpringModelUtils
import icons.SpringApiIcons
import org.jetbrains.kotlin.asJava.toLightClass
import org.jetbrains.kotlin.idea.actions.generate.KotlinGenerateActionBase
-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.KtClassOrObject
-abstract class GenerateKotlinSpringBeanDependencyAction(
- text: String,
- private val injectionKind: SpringDependencyInjectionKind
-) : KotlinGenerateActionBase() {
- class Constructor: GenerateKotlinSpringBeanDependencyAction(
- SpringBundle.message("action.Spring.Beans.Generate.Constructor.Dependency.Action.text"),
- SpringDependencyInjectionKind.CONSTRUCTOR
- )
- class Setter: GenerateKotlinSpringBeanDependencyAction(
- SpringBundle.message("action.Spring.Beans.Generate.Setter.Dependency.Action.text"),
- SpringDependencyInjectionKind.SETTER
- )
- class LateinitProperty: GenerateKotlinSpringBeanDependencyAction(
- "Spring 'lateinit' Dependency...",
- SpringDependencyInjectionKind.LATEINIT_PROPERTY
- )
-
+abstract class GenerateKotlinSpringBeanDependencyAction(text: String) : KotlinGenerateActionBase() {
init {
templatePresentation.text = text
templatePresentation.icon = SpringApiIcons.Spring
@@ -58,16 +34,8 @@ abstract class GenerateKotlinSpringBeanDependencyAction(
if (targetClass !is KtClass || targetClass.isInterface() || targetClass.isEnum() || targetClass.fqName == null) return false
val lightClass = targetClass.toLightClass() ?: return false
val module = GenerateSpringBeanDependenciesUtil.getSpringModule(lightClass) ?: return false
- return SpringManager.getInstance(module.project).getCombinedModel(module).configFiles.any { it is XmlFile }
+ return checkContext(module)
}
- override fun invoke(project: Project, editor: Editor, file: PsiFile) {
- 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)
- }
- templates.forEach { it.runTemplates() }
- }
+ abstract fun checkContext(module: Module): Boolean
}
\ No newline at end of file
diff --git a/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanXmlDependencyAction.kt b/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanXmlDependencyAction.kt
new file mode 100644
index 00000000000..ab6692aeca3
--- /dev/null
+++ b/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/GenerateKotlinSpringBeanXmlDependencyAction.kt
@@ -0,0 +1,64 @@
+/*
+ * Copyright 2010-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.kotlin.idea.spring.generate
+
+import com.intellij.openapi.editor.Editor
+import com.intellij.openapi.module.Module
+import com.intellij.openapi.project.Project
+import com.intellij.psi.PsiFile
+import com.intellij.psi.xml.XmlFile
+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(
+ text: String,
+ private val injectionKind: SpringDependencyInjectionKind
+) : GenerateKotlinSpringBeanDependencyAction(text) {
+ class Constructor: GenerateKotlinSpringBeanXmlDependencyAction(
+ SpringBundle.message("action.Spring.Beans.Generate.Constructor.Dependency.Action.text"),
+ SpringDependencyInjectionKind.CONSTRUCTOR
+ )
+
+ class Setter: GenerateKotlinSpringBeanXmlDependencyAction(
+ SpringBundle.message("action.Spring.Beans.Generate.Setter.Dependency.Action.text"),
+ SpringDependencyInjectionKind.SETTER
+ )
+
+ class LateinitProperty: GenerateKotlinSpringBeanXmlDependencyAction(
+ "Spring 'lateinit' Dependency...",
+ SpringDependencyInjectionKind.LATEINIT_PROPERTY
+ )
+
+ override fun checkContext(module: Module): Boolean {
+ return SpringManager.getInstance(module.project).getCombinedModel(module).configFiles.any { it is XmlFile }
+ }
+
+ override fun invoke(project: Project, editor: Editor, file: PsiFile) {
+ 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)
+ }
+ templates.forEach { it.runTemplates() }
+ }
+}
\ No newline at end of file
diff --git a/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt b/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt
new file mode 100644
index 00000000000..8e4cf182e80
--- /dev/null
+++ b/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateAutowiredDependenciesUtils.kt
@@ -0,0 +1,120 @@
+/*
+ * Copyright 2010-2016 JetBrains s.r.o.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.jetbrains.kotlin.idea.spring.generate
+
+import com.intellij.codeInsight.template.TemplateBuilderImpl
+import com.intellij.openapi.application.ApplicationManager
+import com.intellij.openapi.util.text.StringUtil
+import com.intellij.psi.PsiClass
+import com.intellij.spring.CommonSpringModel
+import com.intellij.spring.constants.SpringAnnotationsConstants
+import com.intellij.spring.model.CommonSpringBean
+import com.intellij.spring.model.SpringBeanPointer
+import com.intellij.spring.model.SpringModelSearchParameters
+import com.intellij.spring.model.actions.generate.GenerateSpringBeanDependenciesUtil
+import com.intellij.spring.model.utils.SpringModelSearchers
+import com.intellij.spring.model.utils.SpringModelUtils
+import com.intellij.util.IncorrectOperationException
+import org.jetbrains.kotlin.asJava.KtLightClass
+import org.jetbrains.kotlin.idea.core.KotlinNameSuggester
+import org.jetbrains.kotlin.idea.editor.BatchTemplateRunner
+import org.jetbrains.kotlin.psi.KtProperty
+import org.jetbrains.kotlin.psi.KtPsiFactory
+import org.jetbrains.kotlin.psi.psiUtil.containingClassOrObject
+import org.jetbrains.kotlin.psi.psiUtil.createSmartPointer
+import org.jetbrains.kotlin.utils.ifEmpty
+import org.jetbrains.kotlin.idea.util.ShortenReferences
+
+// TODO: GenerateAutowiredDependenciesUtil.getQualifierName() is not accessible here
+private fun SpringBeanPointer.getQualifierName(): String? {
+ val value = springBean.springQualifier?.qualifierValue
+ return if (value.isNullOrBlank()) name else value
+}
+
+private fun createAutowiredProperty(
+ currentBeanClass: KtLightClass,
+ candidateBean: SpringBeanPointer,
+ candidateBeanClasses: Array,
+ model: CommonSpringModel
+): KtProperty? {
+ try {
+ val ktBeanClass = currentBeanClass.kotlinOrigin ?: return null
+
+ val qualifierName = candidateBean.getQualifierName()
+ val candidateBeanClass = candidateBeanClasses.first()
+ val beanName = candidateBean.name
+ val name = if (beanName != null && KotlinNameSuggester.isIdentifier(beanName)) beanName else candidateBeanClass.name!!
+
+ val psiFactory = KtPsiFactory(currentBeanClass.project)
+ // TODO: Use KtPsiFactory.CallableBuilder
+ val prototype = psiFactory.createProperty("lateinit var ${name.decapitalize()}: ${candidateBeanClass.defaultTypeText}").apply {
+ addAnnotationEntry(psiFactory.createAnnotationEntry("@${SpringAnnotationsConstants.AUTOWIRED}"))
+
+ val searchParameters = SpringModelSearchParameters.byClass(candidateBeanClass).withInheritors().effectiveBeanTypes()
+ if (SpringModelSearchers.findBeans(model, searchParameters).size > 1 && !qualifierName.isNullOrBlank()) {
+ val annotationText = "@${SpringAnnotationsConstants.QUALIFIER}(\"${StringUtil.escapeStringCharacters(qualifierName!!)}\")"
+ addAnnotationEntry(psiFactory.createAnnotationEntry(annotationText))
+ }
+ }
+ return ktBeanClass.addDeclaration(prototype).apply { ShortenReferences.DEFAULT.process(this) }
+ }
+ catch (e: IncorrectOperationException) {
+ throw RuntimeException(e)
+ }
+}
+
+private fun addCreatePropertyTemplate(
+ property: KtProperty,
+ candidateBean: SpringBeanPointer,
+ candidateBeanClasses: Array
+): BatchTemplateRunner {
+ return BatchTemplateRunner(property.project).apply {
+ val propertyPointer = property.createSmartPointer()
+ addTemplateFactory(property) {
+ val currentProperty = propertyPointer.element ?: return@addTemplateFactory null
+ val builder = TemplateBuilderImpl(currentProperty)
+ builder.appendVariableTemplate(currentProperty, candidateBeanClasses) {
+ val existingNames = currentProperty.containingClassOrObject!!.declarations
+ .mapNotNull { if (it != currentProperty) (it as? KtProperty)?.name else null }
+ getSuggestedNames(candidateBean, currentProperty, existingNames) { returnType }
+ }
+ builder.buildInlineTemplate()
+ }
+ }
+}
+
+private fun createAutowiredDependency(
+ klass: KtLightClass,
+ candidateBean: SpringBeanPointer,
+ model: CommonSpringModel
+): BatchTemplateRunner? {
+ val candidateBeanClasses = candidateBean.effectiveBeanType.ifEmpty { return null }
+ if (!GenerateSpringBeanDependenciesUtil.ensureFileWritable(klass)) return null
+ val property = createAutowiredProperty(klass, candidateBean, candidateBeanClasses, model) ?: return null
+ return addCreatePropertyTemplate(property, candidateBean, candidateBeanClasses)
+}
+
+fun generateAutowiredDependenciesFor(klass: KtLightClass): List {
+ val model = SpringModelUtils.getInstance().getPsiClassSpringModel(klass)
+ val candidates = GenerateSpringBeanDependenciesUtil.getAutowiredBeanCandidates(model) { it.containingFile != klass.containingFile }
+ val dependencies = if (ApplicationManager.getApplication().isUnitTestMode) {
+ candidates.map { it.springBean }.filter(klass.project.beanFilter).sortedBy { it.name }
+ } else {
+ GenerateSpringBeanDependenciesUtil.chooseDependentBeans(candidates, klass.project, true)
+ }
+ return dependencies.mapNotNull { createAutowiredDependency(klass, it, model) }
+}
\ No newline at end of file
diff --git a/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt b/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt
index 1b55a04992f..9b95243affc 100644
--- a/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt
+++ b/idea/idea-ultimate/src/org/jetbrains/kotlin/idea/spring/generate/generateDependenciesUtils.kt
@@ -136,7 +136,7 @@ private fun SpringBean.getFactoryFunctionName(factoryBeanClass: KtClass): String
return KotlinNameSuggester.suggestNameByName("create${beanClass!!.name}") { it !in existingNames }
}
-private val PsiClass.defaultTypeText: String
+internal val PsiClass.defaultTypeText: String
get() {
val qName = qualifiedName ?: return "Any"
val typeParameters = typeParameters
@@ -175,29 +175,32 @@ private fun createSettable(
}
}
-private fun getSuggestedNames(
+internal fun getSuggestedNames(
beanPointer: SpringBeanPointer,
declaration: KtCallableDeclaration,
+ existingNames: Collection = emptyList(),
getType: CallableDescriptor.() -> KotlinType?
): Collection {
val names = LinkedHashSet()
- val validator = NewDeclarationNameValidator(declaration.parent, null, NewDeclarationNameValidator.Target.VARIABLES, listOf(declaration))
+ val newDeclarationNameValidator =
+ NewDeclarationNameValidator(declaration.parent, null, NewDeclarationNameValidator.Target.VARIABLES, listOf(declaration))
+ fun validate(name: String) = name !in existingNames && newDeclarationNameValidator(name)
SpringBeanUtils.getInstance()
.findBeanNames(beanPointer.springBean)
.asSequence()
.filter { KotlinNameSuggester.isIdentifier(it) }
- .mapTo(names) { KotlinNameSuggester.suggestNameByName(it, validator) }
+ .mapTo(names) { KotlinNameSuggester.suggestNameByName(it, ::validate) }
(declaration.resolveToDescriptor() as CallableDescriptor).getType()?.let {
- names += KotlinNameSuggester.suggestNamesByType(it, validator)
+ names += KotlinNameSuggester.suggestNamesByType(it, ::validate)
}
return names
}
-private fun TemplateBuilderImpl.appendVariableTemplate(
+internal fun TemplateBuilderImpl.appendVariableTemplate(
variable: KtCallableDeclaration,
candidateBeanClasses: Array,
computeSuggestions: (() -> Collection)?
diff --git a/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/generate/AbstractGenerateSpringDependencyActionTest.kt b/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/generate/AbstractGenerateSpringDependencyActionTest.kt
index acd686afd3e..bce95786229 100644
--- a/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/generate/AbstractGenerateSpringDependencyActionTest.kt
+++ b/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/generate/AbstractGenerateSpringDependencyActionTest.kt
@@ -43,7 +43,7 @@ abstract class AbstractGenerateSpringDependencyActionTest : AbstractCodeInsightA
val springFileSet = TestFixtureExtension
.getFixture()!!
.configureFileSet(myFixture, listOf(configFilePath!!))
- if (configFilePath != mainFilePath) {
+ if (configFilePath != mainFilePath && PathUtil.getFileName(configFilePath!!) != "spring-config.xml") {
configFile = springFileSet.files.single().file!!
}
diff --git a/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/generate/GenerateSpringDependencyActionTestGenerated.java b/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/generate/GenerateSpringDependencyActionTestGenerated.java
index 6772298d562..a2ce2d0c364 100644
--- a/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/generate/GenerateSpringDependencyActionTestGenerated.java
+++ b/idea/idea-ultimate/tests/org/jetbrains/kotlin/idea/spring/tests/generate/GenerateSpringDependencyActionTestGenerated.java
@@ -35,6 +35,54 @@ public class GenerateSpringDependencyActionTestGenerated extends AbstractGenerat
KotlinTestUtils.assertAllTestsPresentInSingleGeneratedClass(this.getClass(), new File("idea/testData/spring/core/generate"), Pattern.compile("^([\\w]+)\\.kt$"));
}
+ @TestMetadata("autowiredDependencies/duplicatingPropertyAnnotationConfig.kt")
+ public void testAutowiredDependencies_DuplicatingPropertyAnnotationConfig() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyAnnotationConfig.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("autowiredDependencies/duplicatingPropertyXmlConfig.kt")
+ public void testAutowiredDependencies_DuplicatingPropertyXmlConfig() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyXmlConfig.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("autowiredDependencies/multiplePropertiesAnnotationConfig.kt")
+ public void testAutowiredDependencies_MultiplePropertiesAnnotationConfig() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesAnnotationConfig.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("autowiredDependencies/multiplePropertiesXmlConfig.kt")
+ public void testAutowiredDependencies_MultiplePropertiesXmlConfig() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesXmlConfig.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("autowiredDependencies/propertyWithQualifierAnnotationConfig.kt")
+ public void testAutowiredDependencies_PropertyWithQualifierAnnotationConfig() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierAnnotationConfig.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("autowiredDependencies/propertyWithQualifierXmlConfig.kt")
+ public void testAutowiredDependencies_PropertyWithQualifierXmlConfig() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierXmlConfig.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("autowiredDependencies/singlePropertyAnnotationConfig.kt")
+ public void testAutowiredDependencies_SinglePropertyAnnotationConfig() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/spring/core/generate/autowiredDependencies/singlePropertyAnnotationConfig.kt");
+ doTest(fileName);
+ }
+
+ @TestMetadata("autowiredDependencies/singlePropertyXmlConfig.kt")
+ public void testAutowiredDependencies_SinglePropertyXmlConfig() throws Exception {
+ String fileName = KotlinTestUtils.navigationMetadata("idea/testData/spring/core/generate/autowiredDependencies/singlePropertyXmlConfig.kt");
+ doTest(fileName);
+ }
+
@TestMetadata("beanDependenciesByXml/firstConstructor.kt")
public void testBeanDependenciesByXml_FirstConstructor() throws Exception {
String fileName = KotlinTestUtils.navigationMetadata("idea/testData/spring/core/generate/beanDependenciesByXml/firstConstructor.kt");
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyAnnotationConfig.kt b/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyAnnotationConfig.kt
new file mode 100644
index 00000000000..290785bfff2
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyAnnotationConfig.kt
@@ -0,0 +1,19 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CHOOSE_BEAN: barBean
+package a
+
+import org.springframework.stereotype.Component
+import org.springframework.context.annotation.Configuration
+import org.springframework.beans.factory.annotation.Autowired
+
+@Component
+open class FooBean {
+ @Autowired lateinit var bean: BarBean
+}
+
+@Component
+open class BarBean
+
+@Configuration
+@ComponentScan
+open class Application
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyAnnotationConfig.kt.after b/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyAnnotationConfig.kt.after
new file mode 100644
index 00000000000..f41f5cc0ecb
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyAnnotationConfig.kt.after
@@ -0,0 +1,20 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CHOOSE_BEAN: barBean
+package a
+
+import org.springframework.stereotype.Component
+import org.springframework.context.annotation.Configuration
+import org.springframework.beans.factory.annotation.Autowired
+
+@Component
+open class FooBean {
+ @Autowired lateinit var bean: BarBean
+ @Autowired lateinit var barBean: BarBean
+}
+
+@Component
+open class BarBean
+
+@Configuration
+@ComponentScan
+open class Application
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyXmlConfig.kt b/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyXmlConfig.kt
new file mode 100644
index 00000000000..32f4afb1c4a
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyXmlConfig.kt
@@ -0,0 +1,12 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CONFIG_FILE: spring-config.xml
+// CHOOSE_BEAN: barBean
+package a
+
+import org.springframework.beans.factory.annotation.Autowired
+
+open class FooBean {
+ @Autowired lateinit var bean: BarBean
+}
+
+open class BarBean
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyXmlConfig.kt.after b/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyXmlConfig.kt.after
new file mode 100644
index 00000000000..6ca4a64a12b
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/duplicatingPropertyXmlConfig.kt.after
@@ -0,0 +1,13 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CONFIG_FILE: spring-config.xml
+// CHOOSE_BEAN: barBean
+package a
+
+import org.springframework.beans.factory.annotation.Autowired
+
+open class FooBean {
+ @Autowired lateinit var bean: BarBean
+ @Autowired lateinit var barBean: BarBean
+}
+
+open class BarBean
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesAnnotationConfig.kt b/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesAnnotationConfig.kt
new file mode 100644
index 00000000000..c7c458253f1
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesAnnotationConfig.kt
@@ -0,0 +1,18 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CHOOSE_BEAN: barBean, application
+package a
+
+import org.springframework.stereotype.Component
+import org.springframework.context.annotation.Configuration
+
+@Component
+open class FooBean {
+
+}
+
+@Component
+open class BarBean
+
+@Configuration
+@ComponentScan
+open class Application
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesAnnotationConfig.kt.after b/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesAnnotationConfig.kt.after
new file mode 100644
index 00000000000..c0eb222be18
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesAnnotationConfig.kt.after
@@ -0,0 +1,21 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CHOOSE_BEAN: barBean, application
+package a
+
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.stereotype.Component
+import org.springframework.context.annotation.Configuration
+
+@Component
+open class FooBean {
+ @Autowired lateinit var application: Application
+ @Autowired lateinit var barBean: BarBean
+
+}
+
+@Component
+open class BarBean
+
+@Configuration
+@ComponentScan
+open class Application
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesXmlConfig.kt b/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesXmlConfig.kt
new file mode 100644
index 00000000000..118d34cb644
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesXmlConfig.kt
@@ -0,0 +1,10 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CONFIG_FILE: spring-config.xml
+// CHOOSE_BEAN: barBean, fooBean
+package a
+
+open class FooBean {
+
+}
+
+open class BarBean
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesXmlConfig.kt.after b/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesXmlConfig.kt.after
new file mode 100644
index 00000000000..67b0c650cdf
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/multiplePropertiesXmlConfig.kt.after
@@ -0,0 +1,14 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CONFIG_FILE: spring-config.xml
+// CHOOSE_BEAN: barBean, fooBean
+package a
+
+import org.springframework.beans.factory.annotation.Autowired
+
+open class FooBean {
+ @Autowired lateinit var barBean: BarBean
+ @Autowired lateinit var fooBean: FooBean
+
+}
+
+open class BarBean
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierAnnotationConfig.kt b/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierAnnotationConfig.kt
new file mode 100644
index 00000000000..348b68abee9
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierAnnotationConfig.kt
@@ -0,0 +1,21 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CHOOSE_BEAN: barBean
+package a
+
+import org.springframework.stereotype.Component
+import org.springframework.context.annotation.Configuration
+
+@Component
+open class FooBean {
+
+}
+
+@Component
+open class BarBean
+
+@Component
+open class BarBeanChild : BarBean()
+
+@Configuration
+@ComponentScan
+open class Application
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierAnnotationConfig.kt.after b/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierAnnotationConfig.kt.after
new file mode 100644
index 00000000000..f64da29b903
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierAnnotationConfig.kt.after
@@ -0,0 +1,24 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CHOOSE_BEAN: barBean
+package a
+
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.beans.factory.annotation.Qualifier
+import org.springframework.stereotype.Component
+import org.springframework.context.annotation.Configuration
+
+@Component
+open class FooBean {
+ @Qualifier("barBean") @Autowired lateinit var barBean: BarBean
+
+}
+
+@Component
+open class BarBean
+
+@Component
+open class BarBeanChild : BarBean()
+
+@Configuration
+@ComponentScan
+open class Application
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierXmlConfig.kt b/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierXmlConfig.kt
new file mode 100644
index 00000000000..e92ff4833b5
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierXmlConfig.kt
@@ -0,0 +1,12 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CONFIG_FILE:
+// CHOOSE_BEAN: barBean
+package a
+
+open class FooBean {
+
+}
+
+open class BarBean
+
+open class BarBeanChild : BarBean()
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierXmlConfig.kt.after b/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierXmlConfig.kt.after
new file mode 100644
index 00000000000..bcde72e9a6d
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/propertyWithQualifierXmlConfig.kt.after
@@ -0,0 +1,16 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CONFIG_FILE:
+// CHOOSE_BEAN: barBean
+package a
+
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.beans.factory.annotation.Qualifier
+
+open class FooBean {
+ @Qualifier("barBean") @Autowired lateinit var barBean: BarBean
+
+}
+
+open class BarBean
+
+open class BarBeanChild : BarBean()
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyAnnotationConfig.kt b/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyAnnotationConfig.kt
new file mode 100644
index 00000000000..b5a95406837
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyAnnotationConfig.kt
@@ -0,0 +1,18 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CHOOSE_BEAN: barBean
+package a
+
+import org.springframework.stereotype.Component
+import org.springframework.context.annotation.Configuration
+
+@Component
+open class FooBean {
+
+}
+
+@Component
+open class BarBean
+
+@Configuration
+@ComponentScan
+open class Application
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyAnnotationConfig.kt.after b/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyAnnotationConfig.kt.after
new file mode 100644
index 00000000000..cb93d4837bb
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyAnnotationConfig.kt.after
@@ -0,0 +1,20 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CHOOSE_BEAN: barBean
+package a
+
+import org.springframework.beans.factory.annotation.Autowired
+import org.springframework.stereotype.Component
+import org.springframework.context.annotation.Configuration
+
+@Component
+open class FooBean {
+ @Autowired lateinit var barBean: BarBean
+
+}
+
+@Component
+open class BarBean
+
+@Configuration
+@ComponentScan
+open class Application
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyXmlConfig.kt b/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyXmlConfig.kt
new file mode 100644
index 00000000000..9c5cffa3409
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyXmlConfig.kt
@@ -0,0 +1,10 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CONFIG_FILE: spring-config.xml
+// CHOOSE_BEAN: barBean
+package a
+
+open class FooBean {
+
+}
+
+open class BarBean
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyXmlConfig.kt.after b/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyXmlConfig.kt.after
new file mode 100644
index 00000000000..2067edd4dd4
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/singlePropertyXmlConfig.kt.after
@@ -0,0 +1,13 @@
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinAutowiredDependencyAction
+// CONFIG_FILE: spring-config.xml
+// CHOOSE_BEAN: barBean
+package a
+
+import org.springframework.beans.factory.annotation.Autowired
+
+open class FooBean {
+ @Autowired lateinit var barBean: BarBean
+
+}
+
+open class BarBean
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/autowiredDependencies/spring-config.xml b/idea/testData/spring/core/generate/autowiredDependencies/spring-config.xml
new file mode 100644
index 00000000000..6db75fdfa41
--- /dev/null
+++ b/idea/testData/spring/core/generate/autowiredDependencies/spring-config.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/factoryBean.kt.after b/idea/testData/spring/core/generate/beanDependenciesByXml/factoryBean.kt.after
index e9ad046b134..6e64bc62e45 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/factoryBean.kt.after
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/factoryBean.kt.after
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: factoryMethod-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/factoryBean.kt_disabled b/idea/testData/spring/core/generate/beanDependenciesByXml/factoryBean.kt_disabled
index dcf374bc3fd..d4de14b8507 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/factoryBean.kt_disabled
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/factoryBean.kt_disabled
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: factoryMethod-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/factoryMethod.kt.after b/idea/testData/spring/core/generate/beanDependenciesByXml/factoryMethod.kt.after
index 51a40fdd467..424ccd0757c 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/factoryMethod.kt.after
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/factoryMethod.kt.after
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: factoryMethod-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/factoryMethod.kt_disabled b/idea/testData/spring/core/generate/beanDependenciesByXml/factoryMethod.kt_disabled
index 16fa45bf3dc..d512fff0724 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/factoryMethod.kt_disabled
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/factoryMethod.kt_disabled
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: factoryMethod-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/firstConstructor.kt b/idea/testData/spring/core/generate/beanDependenciesByXml/firstConstructor.kt
index b213095167f..fa4d9589960 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/firstConstructor.kt
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/firstConstructor.kt
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: firstConstructor-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/firstConstructor.kt.after b/idea/testData/spring/core/generate/beanDependenciesByXml/firstConstructor.kt.after
index 1163a05776c..196006c3d69 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/firstConstructor.kt.after
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/firstConstructor.kt.after
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: firstConstructor-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/primaryConstructorAddParam.kt b/idea/testData/spring/core/generate/beanDependenciesByXml/primaryConstructorAddParam.kt
index 95fa3405af8..9fb12bd6f6d 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/primaryConstructorAddParam.kt
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/primaryConstructorAddParam.kt
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: primaryConstructorAddParam-config.xml
// CHOOSE_BEAN: bazBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/primaryConstructorAddParam.kt.after b/idea/testData/spring/core/generate/beanDependenciesByXml/primaryConstructorAddParam.kt.after
index d88722a7fab..f9aaddf3cf9 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/primaryConstructorAddParam.kt.after
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/primaryConstructorAddParam.kt.after
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: primaryConstructorAddParam-config.xml
// CHOOSE_BEAN: bazBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/property.kt b/idea/testData/spring/core/generate/beanDependenciesByXml/property.kt
index d09a4e26ac0..7e114b10eae 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/property.kt
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/property.kt
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$LateinitProperty
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$LateinitProperty
// CONFIG_FILE: property-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/property.kt.after b/idea/testData/spring/core/generate/beanDependenciesByXml/property.kt.after
index 948f319f03c..8e09487f54a 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/property.kt.after
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/property.kt.after
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$LateinitProperty
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$LateinitProperty
// CONFIG_FILE: property-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructor.kt.after b/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructor.kt.after
index 5be5ad1ab11..6be454dac43 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructor.kt.after
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructor.kt.after
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: secondaryConstructor-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructor.kt_disabled b/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructor.kt_disabled
index f996220b413..a3cffb2bb2f 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructor.kt_disabled
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructor.kt_disabled
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: secondaryConstructor-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructorAddParam.kt b/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructorAddParam.kt
index 577d8b9ed69..a8458799c2e 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructorAddParam.kt
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructorAddParam.kt
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: secondaryConstructorAddParam-config.xml
// CHOOSE_BEAN: bazBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructorAddParam.kt.after b/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructorAddParam.kt.after
index dd41823b604..855d816f3a8 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructorAddParam.kt.after
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/secondaryConstructorAddParam.kt.after
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Constructor
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Constructor
// CONFIG_FILE: secondaryConstructorAddParam-config.xml
// CHOOSE_BEAN: bazBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/setter.kt b/idea/testData/spring/core/generate/beanDependenciesByXml/setter.kt
index 08f5fa2dbd7..0ad550ed207 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/setter.kt
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/setter.kt
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Setter
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Setter
// CONFIG_FILE: setter-config.xml
// CHOOSE_BEAN: barBean
package a
diff --git a/idea/testData/spring/core/generate/beanDependenciesByXml/setter.kt.after b/idea/testData/spring/core/generate/beanDependenciesByXml/setter.kt.after
index 1aec3e2e81e..f7b706e6f24 100644
--- a/idea/testData/spring/core/generate/beanDependenciesByXml/setter.kt.after
+++ b/idea/testData/spring/core/generate/beanDependenciesByXml/setter.kt.after
@@ -1,4 +1,4 @@
-// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanDependencyAction$Setter
+// ACTION_CLASS: org.jetbrains.kotlin.idea.spring.generate.GenerateKotlinSpringBeanXmlDependencyAction$Setter
// CONFIG_FILE: setter-config.xml
// CHOOSE_BEAN: barBean
package a