From: Juergen H. <jho...@us...> - 2008-02-08 00:04:09
|
Update of /cvsroot/springframework/spring/tiger/test/org/springframework/beans/factory/annotation In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv24368/tiger/test/org/springframework/beans/factory/annotation Modified Files: AutowiredAnnotationBeanPostProcessorTests.java Log Message: fixed AutowiredAnnotationBeanPostProcessor to correctly cache a collection with a single autowired bean as element Index: AutowiredAnnotationBeanPostProcessorTests.java =================================================================== RCS file: /cvsroot/springframework/spring/tiger/test/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessorTests.java,v retrieving revision 1.13 retrieving revision 1.14 diff -C2 -d -r1.13 -r1.14 *** AutowiredAnnotationBeanPostProcessorTests.java 28 Jan 2008 23:08:12 -0000 1.13 --- AutowiredAnnotationBeanPostProcessorTests.java 8 Feb 2008 00:04:06 -0000 1.14 *************** *** 155,160 **** bpp.setBeanFactory(bf); bf.addBeanPostProcessor(bpp); ! bf.registerBeanDefinition("annotatedBean", ! new RootBeanDefinition(OptionalCollectionResourceInjectionBean.class)); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); --- 155,161 ---- bpp.setBeanFactory(bf); bf.addBeanPostProcessor(bpp); ! RootBeanDefinition rbd = new RootBeanDefinition(OptionalCollectionResourceInjectionBean.class); ! rbd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); ! bf.registerBeanDefinition("annotatedBean", rbd); TestBean tb = new TestBean(); bf.registerSingleton("testBean", tb); *************** *** 166,170 **** --- 167,173 ---- bf.registerSingleton("nestedTestBean2", ntb2); + // Two calls to verify that caching doesn't break re-creation. OptionalCollectionResourceInjectionBean bean = (OptionalCollectionResourceInjectionBean) bf.getBean("annotatedBean"); + bean = (OptionalCollectionResourceInjectionBean) bf.getBean("annotatedBean"); assertSame(tb, bean.getTestBean()); assertSame(tb, bean.getTestBean2()); *************** *** 175,178 **** --- 178,184 ---- assertSame(ntb1, bean.getNestedTestBeans().get(0)); assertSame(ntb2, bean.getNestedTestBeans().get(1)); + assertEquals(2, bean.nestedTestBeansSetter.size()); + assertSame(ntb1, bean.nestedTestBeansSetter.get(0)); + assertSame(ntb2, bean.nestedTestBeansSetter.get(1)); assertEquals(2, bean.nestedTestBeansField.size()); assertSame(ntb1, bean.nestedTestBeansField.get(0)); *************** *** 181,184 **** --- 187,222 ---- } + public void testOptionalCollectionResourceInjectionWithSingleElement() { + DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); + AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor(); + bpp.setBeanFactory(bf); + bf.addBeanPostProcessor(bpp); + RootBeanDefinition rbd = new RootBeanDefinition(OptionalCollectionResourceInjectionBean.class); + rbd.setScope(RootBeanDefinition.SCOPE_PROTOTYPE); + bf.registerBeanDefinition("annotatedBean", rbd); + TestBean tb = new TestBean(); + bf.registerSingleton("testBean", tb); + IndexedTestBean itb = new IndexedTestBean(); + bf.registerSingleton("indexedTestBean", itb); + NestedTestBean ntb1 = new NestedTestBean(); + bf.registerSingleton("nestedTestBean1", ntb1); + + // Two calls to verify that caching doesn't break re-creation. + OptionalCollectionResourceInjectionBean bean = (OptionalCollectionResourceInjectionBean) bf.getBean("annotatedBean"); + bean = (OptionalCollectionResourceInjectionBean) bf.getBean("annotatedBean"); + assertSame(tb, bean.getTestBean()); + assertSame(tb, bean.getTestBean2()); + assertSame(tb, bean.getTestBean3()); + assertSame(tb, bean.getTestBean4()); + assertSame(itb, bean.getIndexedTestBean()); + assertEquals(1, bean.getNestedTestBeans().size()); + assertSame(ntb1, bean.getNestedTestBeans().get(0)); + assertEquals(1, bean.nestedTestBeansSetter.size()); + assertSame(ntb1, bean.nestedTestBeansSetter.get(0)); + assertEquals(1, bean.nestedTestBeansField.size()); + assertSame(ntb1, bean.nestedTestBeansField.get(0)); + bf.destroySingletons(); + } + public void testOptionalResourceInjectionWithIncompleteDependencies() { DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); *************** *** 864,867 **** --- 902,907 ---- private List<NestedTestBean> nestedTestBeans; + public List<NestedTestBean> nestedTestBeansSetter; + @Autowired(required = false) public List<NestedTestBean> nestedTestBeansField; *************** *** 881,884 **** --- 921,929 ---- } + @Autowired(required = false) + public void setNestedTestBeans(List<NestedTestBean> nestedTestBeans) { + this.nestedTestBeansSetter = nestedTestBeans; + } + public ITestBean getTestBean3() { return this.testBean3; |