From 50771237cc87e1a3f8c7404c7be7a55584723c1f Mon Sep 17 00:00:00 2001 From: danthonywalker Date: Tue, 15 Mar 2022 16:59:40 +0100 Subject: [PATCH] Fix ListableBeanFactory#findAnnotationOnBean extension return type Closes gh-26908 --- .../beans/factory/ListableBeanFactoryExtensions.kt | 2 +- .../beans/factory/ListableBeanFactoryExtensionsTests.kt | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/spring-beans/src/main/kotlin/org/springframework/beans/factory/ListableBeanFactoryExtensions.kt b/spring-beans/src/main/kotlin/org/springframework/beans/factory/ListableBeanFactoryExtensions.kt index 174507edfa8..bc0edd4948b 100644 --- a/spring-beans/src/main/kotlin/org/springframework/beans/factory/ListableBeanFactoryExtensions.kt +++ b/spring-beans/src/main/kotlin/org/springframework/beans/factory/ListableBeanFactoryExtensions.kt @@ -64,6 +64,6 @@ inline fun ListableBeanFactory.getBeansWithAnnotation() * @author Sebastien Deleuze * @since 5.0 */ -inline fun ListableBeanFactory.findAnnotationOnBean(beanName:String): Annotation? = +inline fun ListableBeanFactory.findAnnotationOnBean(beanName:String): T? = findAnnotationOnBean(beanName, T::class.java) diff --git a/spring-beans/src/test/kotlin/org/springframework/beans/factory/ListableBeanFactoryExtensionsTests.kt b/spring-beans/src/test/kotlin/org/springframework/beans/factory/ListableBeanFactoryExtensionsTests.kt index a86a60aec9b..f089cc6aef3 100644 --- a/spring-beans/src/test/kotlin/org/springframework/beans/factory/ListableBeanFactoryExtensionsTests.kt +++ b/spring-beans/src/test/kotlin/org/springframework/beans/factory/ListableBeanFactoryExtensionsTests.kt @@ -16,9 +16,11 @@ package org.springframework.beans.factory +import io.mockk.every import io.mockk.mockk import io.mockk.verify import org.junit.jupiter.api.Test +import kotlin.reflect.full.createInstance /** * Mock object based tests for ListableBeanFactory Kotlin extensions @@ -77,10 +79,12 @@ class ListableBeanFactoryExtensionsTests { verify { lbf.getBeansWithAnnotation(Bar::class.java) } } + @Suppress("UNUSED_VARIABLE") @Test fun `findAnnotationOnBean with String and reified type parameters`() { val name = "bar" - lbf.findAnnotationOnBean(name) + every { lbf.findAnnotationOnBean(name, Bar::class.java) } returns Bar::class.createInstance() + val annotation: Bar? = lbf.findAnnotationOnBean(name) verify { lbf.findAnnotationOnBean(name, Bar::class.java) } }