Added further tests for raw matching of generic types
Issue: SPR-11034 Issue: SPR-11004
This commit is contained in:
@@ -1268,9 +1268,9 @@ public class AutowiredAnnotationBeanPostProcessorTests {
|
||||
rbd.getConstructorArgumentValues().addGenericArgumentValue(Repository.class);
|
||||
bf.registerBeanDefinition("integerRepo", rbd);
|
||||
|
||||
RepositoryFieldInjectionBeanWithQualifiers bean = (RepositoryFieldInjectionBeanWithQualifiers) bf.getBean("annotatedBean");
|
||||
Repository sr = bf.getBean("stringRepo", Repository.class);
|
||||
Repository ir = bf.getBean("integerRepo", Repository.class);
|
||||
RepositoryFieldInjectionBeanWithQualifiers bean = (RepositoryFieldInjectionBeanWithQualifiers) bf.getBean("annotatedBean");
|
||||
assertSame(sr, bean.stringRepository);
|
||||
assertSame(ir, bean.integerRepository);
|
||||
assertSame(1, bean.stringRepositoryArray.length);
|
||||
@@ -1287,6 +1287,74 @@ public class AutowiredAnnotationBeanPostProcessorTests {
|
||||
assertSame(ir, bean.integerRepositoryMap.get("integerRepo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGenericsBasedFieldInjectionWithSimpleMatch() {
|
||||
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
|
||||
bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());
|
||||
AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor();
|
||||
bpp.setBeanFactory(bf);
|
||||
bf.addBeanPostProcessor(bpp);
|
||||
RootBeanDefinition bd = new RootBeanDefinition(RepositoryFieldInjectionBeanWithSimpleMatch.class);
|
||||
bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE);
|
||||
bf.registerBeanDefinition("annotatedBean", bd);
|
||||
|
||||
bf.registerSingleton("repo", new StringRepository());
|
||||
|
||||
RepositoryFieldInjectionBeanWithSimpleMatch bean = (RepositoryFieldInjectionBeanWithSimpleMatch) bf.getBean("annotatedBean");
|
||||
Repository repo = bf.getBean("repo", Repository.class);
|
||||
assertSame(repo, bean.repository);
|
||||
assertSame(repo, bean.stringRepository);
|
||||
assertSame(1, bean.repositoryArray.length);
|
||||
assertSame(1, bean.stringRepositoryArray.length);
|
||||
assertSame(repo, bean.repositoryArray[0]);
|
||||
assertSame(repo, bean.stringRepositoryArray[0]);
|
||||
assertSame(1, bean.repositoryList.size());
|
||||
assertSame(1, bean.stringRepositoryList.size());
|
||||
assertSame(repo, bean.repositoryList.get(0));
|
||||
assertSame(repo, bean.stringRepositoryList.get(0));
|
||||
assertSame(1, bean.repositoryMap.size());
|
||||
assertSame(1, bean.stringRepositoryMap.size());
|
||||
assertSame(repo, bean.repositoryMap.get("repo"));
|
||||
assertSame(repo, bean.stringRepositoryMap.get("repo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGenericsBasedFieldInjectionWithSimpleMatchAndMock() {
|
||||
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
|
||||
bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());
|
||||
AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor();
|
||||
bpp.setBeanFactory(bf);
|
||||
bf.addBeanPostProcessor(bpp);
|
||||
RootBeanDefinition bd = new RootBeanDefinition(RepositoryFieldInjectionBeanWithSimpleMatch.class);
|
||||
bd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE);
|
||||
bf.registerBeanDefinition("annotatedBean", bd);
|
||||
|
||||
RootBeanDefinition rbd = new RootBeanDefinition(MocksControl.class);
|
||||
bf.registerBeanDefinition("mocksControl", rbd);
|
||||
rbd = new RootBeanDefinition();
|
||||
rbd.setFactoryBeanName("mocksControl");
|
||||
rbd.setFactoryMethodName("createMock");
|
||||
rbd.getConstructorArgumentValues().addGenericArgumentValue(Repository.class);
|
||||
bf.registerBeanDefinition("repo", rbd);
|
||||
|
||||
RepositoryFieldInjectionBeanWithSimpleMatch bean = (RepositoryFieldInjectionBeanWithSimpleMatch) bf.getBean("annotatedBean");
|
||||
Repository repo = bf.getBean("repo", Repository.class);
|
||||
assertSame(repo, bean.repository);
|
||||
assertSame(repo, bean.stringRepository);
|
||||
assertSame(1, bean.repositoryArray.length);
|
||||
assertSame(1, bean.stringRepositoryArray.length);
|
||||
assertSame(repo, bean.repositoryArray[0]);
|
||||
assertSame(repo, bean.stringRepositoryArray[0]);
|
||||
assertSame(1, bean.repositoryList.size());
|
||||
assertSame(1, bean.stringRepositoryList.size());
|
||||
assertSame(repo, bean.repositoryList.get(0));
|
||||
assertSame(repo, bean.stringRepositoryList.get(0));
|
||||
assertSame(1, bean.repositoryMap.size());
|
||||
assertSame(1, bean.stringRepositoryMap.size());
|
||||
assertSame(repo, bean.repositoryMap.get("repo"));
|
||||
assertSame(repo, bean.stringRepositoryMap.get("repo"));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testGenericsBasedMethodInjection() {
|
||||
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
|
||||
@@ -2163,6 +2231,34 @@ public class AutowiredAnnotationBeanPostProcessorTests {
|
||||
}
|
||||
|
||||
|
||||
public static class RepositoryFieldInjectionBeanWithSimpleMatch {
|
||||
|
||||
@Autowired
|
||||
public Repository<?> repository;
|
||||
|
||||
@Autowired
|
||||
public Repository<String> stringRepository;
|
||||
|
||||
@Autowired
|
||||
public Repository[] repositoryArray;
|
||||
|
||||
@Autowired
|
||||
public Repository<String>[] stringRepositoryArray;
|
||||
|
||||
@Autowired
|
||||
public List<Repository> repositoryList;
|
||||
|
||||
@Autowired
|
||||
public List<Repository<String>> stringRepositoryList;
|
||||
|
||||
@Autowired
|
||||
public Map<String, Repository<?>> repositoryMap;
|
||||
|
||||
@Autowired
|
||||
public Map<String, Repository<String>> stringRepositoryMap;
|
||||
}
|
||||
|
||||
|
||||
public static class RepositoryMethodInjectionBean {
|
||||
|
||||
public Repository<String> stringRepository;
|
||||
|
||||
Reference in New Issue
Block a user