Introduce GenericTypeResolver#resolveReturnTypeArgument

Issue: SPR-8514

git-svn-id: https://src.springframework.org/svn/spring-framework/trunk@4680 50f2f4bb-b051-0410-bef5-90022cba6387
This commit is contained in:
Chris Beams
2011-07-06 09:15:32 +00:00
parent 075dfc3cb4
commit de5781acea
2 changed files with 48 additions and 0 deletions
@@ -20,6 +20,7 @@ import java.util.Collection;
import static org.junit.Assert.*;
import org.junit.Test;
import org.springframework.util.ReflectionUtils;
/**
* @author Juergen Hoeller
@@ -46,6 +47,14 @@ public class GenericTypeResolverTests {
assertEquals(Collection.class, GenericTypeResolver.resolveTypeArgument(MyCollectionSuperclassType.class, MySuperclassType.class));
}
@Test
public void testMethodReturnType() {
assertEquals(Integer.class, GenericTypeResolver.resolveReturnTypeArgument(ReflectionUtils.findMethod(MyTypeWithMethods.class, "integer"), MyInterfaceType.class));
assertEquals(String.class, GenericTypeResolver.resolveReturnTypeArgument(ReflectionUtils.findMethod(MyTypeWithMethods.class, "string"), MyInterfaceType.class));
assertEquals(null, GenericTypeResolver.resolveReturnTypeArgument(ReflectionUtils.findMethod(MyTypeWithMethods.class, "raw"), MyInterfaceType.class));
assertEquals(null, GenericTypeResolver.resolveReturnTypeArgument(ReflectionUtils.findMethod(MyTypeWithMethods.class, "object"), MyInterfaceType.class));
}
public interface MyInterfaceType<T> {
}
@@ -66,4 +75,12 @@ public class GenericTypeResolverTests {
public class MyCollectionSuperclassType extends MySuperclassType<Collection<String>> {
}
public class MyTypeWithMethods {
public MyInterfaceType<Integer> integer() { return null; }
public MySimpleInterfaceType string() { return null; }
public Object object() { return null; }
@SuppressWarnings("rawtypes")
public MyInterfaceType raw() { return null; }
}
}