Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -58,8 +58,9 @@ inline fun <reified T : Any> BeanFactory.getBean(vararg args:Any): T =
*
* @see BeanFactory.getBeanProvider(ResolvableType)
* @author Sebastien Deleuze
* @author Yanming Zhou
* @since 5.1
*/
inline fun <reified T : Any> BeanFactory.getBeanProvider(): ObjectProvider<T> =
getBeanProvider(ResolvableType.forType((object : ParameterizedTypeReference<T>() {}).type))
getBeanProvider(object : ParameterizedTypeReference<T>() {})

Original file line number Diff line number Diff line change
Expand Up @@ -37,17 +37,17 @@ class BeanFactoryExtensionsTests {
@Test
fun `getBean with reified type parameters`() {
val foo = Foo()
every { bf.getBeanProvider<Foo>(ofType<ResolvableType>()).getObject() } returns foo
every { bf.getBeanProvider(object : ParameterizedTypeReference<Foo>() {}).getObject() } returns foo
assertThat(bf.getBean<Foo>()).isSameAs(foo)
verify { bf.getBeanProvider<ObjectProvider<Foo>>(ofType<ResolvableType>()).getObject() }
verify { bf.getBeanProvider(object : ParameterizedTypeReference<Foo>() {}).getObject() }
}

@Test
fun `getBean with reified generic type parameters`() {
val foo = listOf(Foo())
every { bf.getBeanProvider<List<Foo>>(ofType<ResolvableType>()).getObject() } returns foo
every { bf.getBeanProvider(object : ParameterizedTypeReference<List<Foo>>() {}).getObject() } returns foo
assertThat(bf.getBean<List<Foo>>()).isSameAs(foo)
verify { bf.getBeanProvider<ObjectProvider<List<Foo>>>(ofType<ResolvableType>()).getObject() }
verify { bf.getBeanProvider(object : ParameterizedTypeReference<List<Foo>>() {}).getObject() }
}

@Test
Expand All @@ -71,15 +71,15 @@ class BeanFactoryExtensionsTests {
val arg1 = "arg1"
val arg2 = "arg2"
val bar = Bar(arg1, arg2)
every { bf.getBeanProvider<Bar>(ofType<ResolvableType>()).getObject(arg1, arg2) } returns bar
every { bf.getBeanProvider(object : ParameterizedTypeReference<Bar>() {}).getObject(arg1, arg2) } returns bar
assertThat(bf.getBean<Bar>(arg1, arg2)).isSameAs(bar)
verify { bf.getBeanProvider<Bar>(ofType<ResolvableType>()).getObject(arg1, arg2) }
verify { bf.getBeanProvider(object : ParameterizedTypeReference<Bar>() {}).getObject(arg1, arg2) }
}

@Test
fun `getBeanProvider with reified type parameters`() {
bf.getBeanProvider<Foo>()
verify { bf.getBeanProvider<ObjectProvider<Foo>>(ofType<ResolvableType>()) }
verify { bf.getBeanProvider(object : ParameterizedTypeReference<Foo>() {}) }
}

class Foo
Expand Down