From cd271fca431260c8ce81dd75dc6198555bca6e46 Mon Sep 17 00:00:00 2001 From: Chris Beams Date: Mon, 28 Jun 2010 22:57:26 +0000 Subject: [PATCH] attempted to repro SPR-7318 to no avail --- .../FactoryBeanLookupTests-context.xml | 8 +++ .../beans/factory/FactoryBeanLookupTests.java | 72 +++++++++++++++++++ org.springframework.context/.springBeans | 3 +- 3 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 org.springframework.beans/src/test/java/org/springframework/beans/factory/FactoryBeanLookupTests-context.xml create mode 100644 org.springframework.beans/src/test/java/org/springframework/beans/factory/FactoryBeanLookupTests.java diff --git a/org.springframework.beans/src/test/java/org/springframework/beans/factory/FactoryBeanLookupTests-context.xml b/org.springframework.beans/src/test/java/org/springframework/beans/factory/FactoryBeanLookupTests-context.xml new file mode 100644 index 0000000000..d87aaffc63 --- /dev/null +++ b/org.springframework.beans/src/test/java/org/springframework/beans/factory/FactoryBeanLookupTests-context.xml @@ -0,0 +1,8 @@ + + + + + + diff --git a/org.springframework.beans/src/test/java/org/springframework/beans/factory/FactoryBeanLookupTests.java b/org.springframework.beans/src/test/java/org/springframework/beans/factory/FactoryBeanLookupTests.java new file mode 100644 index 0000000000..964d9aa670 --- /dev/null +++ b/org.springframework.beans/src/test/java/org/springframework/beans/factory/FactoryBeanLookupTests.java @@ -0,0 +1,72 @@ +package org.springframework.beans.factory; + +import static org.hamcrest.CoreMatchers.instanceOf; +import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertThat; + +import org.junit.Before; +import org.junit.Test; +import org.springframework.beans.factory.BeanFactory; +import org.springframework.beans.factory.config.AbstractFactoryBean; +import org.springframework.beans.factory.xml.XmlBeanFactory; +import org.springframework.core.io.ClassPathResource; + + +/** + * Written with the intention of reproducing SPR-7318. + * + * @author Chris Beams + */ +public class FactoryBeanLookupTests { + private BeanFactory beanFactory; + + @Before + public void setUp() { + beanFactory = new XmlBeanFactory( + new ClassPathResource("FactoryBeanLookupTests-context.xml", this.getClass())); + } + + @Test + public void factoryBeanLookupByNameDereferencing() { + Object fooFactory = beanFactory.getBean("&fooFactory"); + assertThat(fooFactory, instanceOf(FooFactoryBean.class)); + } + + @Test + public void factoryBeanLookupByType() { + FooFactoryBean fooFactory = beanFactory.getBean(FooFactoryBean.class); + assertNotNull(fooFactory); + } + + @Test + public void factoryBeanLookupByTypeAndNameDereference() { + FooFactoryBean fooFactory = beanFactory.getBean("&fooFactory", FooFactoryBean.class); + assertNotNull(fooFactory); + } + + @Test + public void factoryBeanObjectLookupByName() { + Object fooFactory = beanFactory.getBean("fooFactory"); + assertThat(fooFactory, instanceOf(Foo.class)); + } + + @Test + public void factoryBeanObjectLookupByNameAndType() { + Foo foo = beanFactory.getBean("fooFactory", Foo.class); + assertNotNull(foo); + } +} + +class FooFactoryBean extends AbstractFactoryBean { + @Override + protected Foo createInstance() throws Exception { + return new Foo(); + } + + @Override + public Class getObjectType() { + return Foo.class; + } +} + +class Foo { } diff --git a/org.springframework.context/.springBeans b/org.springframework.context/.springBeans index 264f050b81..f7eccf735e 100644 --- a/org.springframework.context/.springBeans +++ b/org.springframework.context/.springBeans @@ -1,7 +1,7 @@ 1 - + @@ -11,6 +11,7 @@ src/test/java/org/springframework/context/annotation/configuration/SecondLevelSubConfig-context.xml src/test/java/org/springframework/context/annotation/configuration/ImportXmlWithAopNamespace-context.xml src/test/java/org/springframework/context/annotation/Spr6602Tests-context.xml + src/test/java/org/springframework/beans/factory/FactoryBeanLookupTests-context.xml