Browse Source

Test variant for SPR-11521 (currently @Ignored)

Issue: SPR-11521
pull/578/merge
Juergen Hoeller 12 years ago
parent
commit
87cbade8be
  1. 35
      spring-beans/src/test/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessorTests.java

35
spring-beans/src/test/java/org/springframework/beans/factory/annotation/AutowiredAnnotationBeanPostProcessorTests.java

@ -27,6 +27,7 @@ import java.lang.reflect.Proxy;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import org.junit.Ignore;
import org.junit.Test; import org.junit.Test;
import org.mockito.Mockito; import org.mockito.Mockito;
@ -1731,6 +1732,26 @@ public class AutowiredAnnotationBeanPostProcessorTests {
assertSame(bean2, bean1.gi2); assertSame(bean2, bean1.gi2);
} }
@Test
@Ignore // SPR-11521
public void testGenericsBasedInjectionIntoTypeVariableSelectingBestMatchAgainstFactoryMethodSignature() {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
bf.setAutowireCandidateResolver(new QualifierAnnotationAutowireCandidateResolver());
AutowiredAnnotationBeanPostProcessor bpp = new AutowiredAnnotationBeanPostProcessor();
bpp.setBeanFactory(bf);
bf.addBeanPostProcessor(bpp);
RootBeanDefinition bd = new RootBeanDefinition(GenericInterface1Impl.class);
bd.setFactoryMethodName("createErased");
bf.registerBeanDefinition("bean1", bd);
bf.registerBeanDefinition("bean2", new RootBeanDefinition(GenericInterface2Impl.class));
bf.registerBeanDefinition("bean2a", new RootBeanDefinition(ReallyGenericInterface2Impl.class));
bf.registerBeanDefinition("bean2b", new RootBeanDefinition(PlainGenericInterface2Impl.class));
GenericInterface1Impl bean1 = (GenericInterface1Impl) bf.getBean("bean1");
GenericInterface2Impl bean2 = (GenericInterface2Impl) bf.getBean("bean2");
assertSame(bean2, bean1.gi2);
}
@Test @Test
public void testCircularTypeReference() { public void testCircularTypeReference() {
DefaultListableBeanFactory bf = new DefaultListableBeanFactory(); DefaultListableBeanFactory bf = new DefaultListableBeanFactory();
@ -2624,7 +2645,7 @@ public class AutowiredAnnotationBeanPostProcessorTests {
@SuppressWarnings("unchecked") @SuppressWarnings("unchecked")
public <T> T createMock(Class<T> toMock) { public <T> T createMock(Class<T> toMock) {
return (T) Proxy.newProxyInstance(AutowiredAnnotationBeanPostProcessorTests.class.getClassLoader(), new Class<?>[]{toMock}, return (T) Proxy.newProxyInstance(AutowiredAnnotationBeanPostProcessorTests.class.getClassLoader(), new Class<?>[] {toMock},
new InvocationHandler() { new InvocationHandler() {
@Override @Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
@ -2651,11 +2672,15 @@ public class AutowiredAnnotationBeanPostProcessorTests {
return gi2.doSomethingMoreGeneric(o) + "_somethingGeneric_" + o; return gi2.doSomethingMoreGeneric(o) + "_somethingGeneric_" + o;
} }
public static GenericInterface1<String> create(){ public static GenericInterface1<String> create() {
return new StringGenericInterface1Impl(); return new StringGenericInterface1Impl();
} }
public static GenericInterface1 createPlain(){ public static GenericInterface1<String> createErased() {
return new GenericInterface1Impl<String>();
}
public static GenericInterface1 createPlain() {
return new GenericInterface1Impl(); return new GenericInterface1Impl();
} }
} }
@ -2671,7 +2696,7 @@ public class AutowiredAnnotationBeanPostProcessorTests {
} }
public static class GenericInterface2Impl implements GenericInterface2<String>{ public static class GenericInterface2Impl implements GenericInterface2<String> {
@Override @Override
public String doSomethingMoreGeneric(String o) { public String doSomethingMoreGeneric(String o) {
@ -2689,7 +2714,7 @@ public class AutowiredAnnotationBeanPostProcessorTests {
} }
public static class PlainGenericInterface2Impl implements GenericInterface2{ public static class PlainGenericInterface2Impl implements GenericInterface2 {
@Override @Override
public String doSomethingMoreGeneric(Object o) { public String doSomethingMoreGeneric(Object o) {

Loading…
Cancel
Save