diff --git a/modules/spring-core/src/main/kotlin/com/explyt/spring/core/service/SpringSearchService.kt b/modules/spring-core/src/main/kotlin/com/explyt/spring/core/service/SpringSearchService.kt index 4beff058..6a47dbfa 100644 --- a/modules/spring-core/src/main/kotlin/com/explyt/spring/core/service/SpringSearchService.kt +++ b/modules/spring-core/src/main/kotlin/com/explyt/spring/core/service/SpringSearchService.kt @@ -506,9 +506,10 @@ class SpringSearchService(private val project: Project) { byTypeBeanMethods = psiMethods + psiMethodsRegistrar } + val beanQualifiedName = beanPsiClass?.qualifiedName val byTypeComponents = getStaticBeans(module) .filter { bean -> - bean.psiClass.qualifiedName?.let { InheritanceUtil.isInheritor(beanPsiClass, it) } == true + beanQualifiedName != null && InheritanceUtil.isInheritor(bean.psiClass, beanQualifiedName) } .map { it.psiClass } + getPsiClassesByComponents(module, sourcePsiType, beanPsiType, byTypeBeanMethods.isEmpty()).toSet() diff --git a/modules/spring-core/src/main/kotlin/com/explyt/spring/core/service/beans/discoverer/SpringCoreAdditionalBeansDiscoverer.kt b/modules/spring-core/src/main/kotlin/com/explyt/spring/core/service/beans/discoverer/SpringCoreAdditionalBeansDiscoverer.kt index 37f90644..a5847391 100644 --- a/modules/spring-core/src/main/kotlin/com/explyt/spring/core/service/beans/discoverer/SpringCoreAdditionalBeansDiscoverer.kt +++ b/modules/spring-core/src/main/kotlin/com/explyt/spring/core/service/beans/discoverer/SpringCoreAdditionalBeansDiscoverer.kt @@ -29,6 +29,7 @@ class SpringCoreAdditionalBeansDiscoverer : AdditionalBeansDiscoverer() { getStaticBean(module, SpringCoreClasses.PROPERTY_RESOLVER, "propertyResolver"), getStaticBean(module, SpringCoreClasses.CONVERSION_SERVICE, "conversionService"), getStaticBean(module, SpringCoreClasses.APPLICATION_CONTEXT, "applicationContext"), + getStaticBean(module, SpringCoreClasses.RESOURCE_LOADER, "resourceLoader"), ) } diff --git a/modules/spring-core/src/test/kotlin/com/explyt/spring/core/inspections/java/SpringBeanIncorrectAutowiringInspectionTest.kt b/modules/spring-core/src/test/kotlin/com/explyt/spring/core/inspections/java/SpringBeanIncorrectAutowiringInspectionTest.kt index 24f7e7db..140b130c 100644 --- a/modules/spring-core/src/test/kotlin/com/explyt/spring/core/inspections/java/SpringBeanIncorrectAutowiringInspectionTest.kt +++ b/modules/spring-core/src/test/kotlin/com/explyt/spring/core/inspections/java/SpringBeanIncorrectAutowiringInspectionTest.kt @@ -17,8 +17,11 @@ package com.explyt.spring.core.inspections.java +import com.explyt.spring.core.SpringCoreClasses +import com.explyt.spring.core.inspections.SpringBeanIncorrectAutowiringInspection import com.explyt.spring.test.ExplytInspectionJavaTestCase import com.explyt.spring.test.TestLibrary +import org.intellij.lang.annotations.Language import org.jetbrains.kotlin.test.TestMetadata class SpringBeanIncorrectAutowiringInspectionTest : ExplytInspectionJavaTestCase() { @@ -29,6 +32,30 @@ class SpringBeanIncorrectAutowiringInspectionTest : ExplytInspectionJavaTestCase TestLibrary.springBootTestAutoConfigure_3_1_1 ) + override fun setUp() { + super.setUp() + myFixture.enableInspections(SpringBeanIncorrectAutowiringInspection::class.java) + } + @TestMetadata("autowired") - fun testAutowired() = doTest(com.explyt.spring.core.inspections.SpringBeanIncorrectAutowiringInspection()) + fun testAutowired() = doTest(SpringBeanIncorrectAutowiringInspection()) + + fun testResourceLoader() { + @Language("java") val code = """ + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.core.io.ResourceLoader; + +@${SpringCoreClasses.COMPONENT} +public class DemoApplication { + @Autowired + ResourceLoader resourceLoader; + @Autowired + ApplicationContext context; +} + """ + myFixture.configureByText("DemoApplication.java", code.trimIndent()) + myFixture.testHighlighting("DemoApplication.java") + } } \ No newline at end of file diff --git a/modules/spring-core/src/test/kotlin/com/explyt/spring/core/inspections/kotlin/SpringBeanIncorrectAutowiringInspectionTest.kt b/modules/spring-core/src/test/kotlin/com/explyt/spring/core/inspections/kotlin/SpringBeanIncorrectAutowiringInspectionTest.kt index db494f62..0febee0e 100644 --- a/modules/spring-core/src/test/kotlin/com/explyt/spring/core/inspections/kotlin/SpringBeanIncorrectAutowiringInspectionTest.kt +++ b/modules/spring-core/src/test/kotlin/com/explyt/spring/core/inspections/kotlin/SpringBeanIncorrectAutowiringInspectionTest.kt @@ -17,9 +17,11 @@ package com.explyt.spring.core.inspections.kotlin +import com.explyt.spring.core.SpringCoreClasses import com.explyt.spring.core.inspections.SpringBeanIncorrectAutowiringInspection import com.explyt.spring.test.ExplytInspectionKotlinTestCase import com.explyt.spring.test.TestLibrary +import org.intellij.lang.annotations.Language import org.jetbrains.kotlin.test.TestMetadata class SpringBeanIncorrectAutowiringInspectionTest : ExplytInspectionKotlinTestCase() { @@ -30,6 +32,30 @@ class SpringBeanIncorrectAutowiringInspectionTest : ExplytInspectionKotlinTestCa TestLibrary.springBootTestAutoConfigure_3_1_1 ) + override fun setUp() { + super.setUp() + myFixture.enableInspections(SpringBeanIncorrectAutowiringInspection::class.java) + } + @TestMetadata("autowired") fun testAutowired() = doTest(SpringBeanIncorrectAutowiringInspection()) + + fun testResourceLoader() { + @Language("kotlin") val code = """ + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.ApplicationContext; +import org.springframework.core.io.ResourceLoader; + +@${SpringCoreClasses.COMPONENT} +class DemoApplication { + @Autowired + var resourceLoader: ResourceLoader? = null + @Autowired + var context: ApplicationContext? = null +} + """ + myFixture.configureByText("DemoApplication.kt", code.trimIndent()) + myFixture.testHighlighting("DemoApplication.kt") + } } \ No newline at end of file