Generic matching for ObjectProvider stream and empty vararg resolution

Issue: SPR-11419
Issue: SPR-15338
This commit is contained in:
Juergen Hoeller
2018-07-24 13:03:54 +02:00
parent 6372c0f47c
commit a9c9ba6601
5 changed files with 143 additions and 725 deletions

View File

@@ -801,6 +801,23 @@ public class ConfigurationClassPostProcessorTests {
assertSame(ctx.getBean(BarImpl.class), ctx.getBean(FooImpl.class).bar);
}
@Test
public void testVarargOnBeanMethod() {
ApplicationContext ctx = new AnnotationConfigApplicationContext(VarargConfiguration.class, TestBean.class);
VarargConfiguration bean = ctx.getBean(VarargConfiguration.class);
assertNotNull(bean.testBeans);
assertEquals(1, bean.testBeans.length);
assertSame(ctx.getBean(TestBean.class), bean.testBeans[0]);
}
@Test
public void testEmptyVarargOnBeanMethod() {
ApplicationContext ctx = new AnnotationConfigApplicationContext(VarargConfiguration.class);
VarargConfiguration bean = ctx.getBean(VarargConfiguration.class);
assertNotNull(bean.testBeans);
assertEquals(0, bean.testBeans.length);
}
@Test
public void testCollectionArgumentOnBeanMethod() {
ApplicationContext ctx = new AnnotationConfigApplicationContext(CollectionArgumentConfiguration.class, TestBean.class);
@@ -1606,6 +1623,18 @@ public class ConfigurationClassPostProcessorTests {
}
}
@Configuration
static class VarargConfiguration {
TestBean[] testBeans;
@Bean(autowireCandidate = false)
public TestBean thing(TestBean... testBeans) {
this.testBeans = testBeans;
return new TestBean();
}
}
@Configuration
static class CollectionArgumentConfiguration {