ResolvableType.java.forRawClass(Class) supports isAssignableFrom(ResolvableType) as well

Issue: SPR-14648
This commit is contained in:
Juergen Hoeller
2016-08-31 14:45:22 +02:00
parent e08b1b75b6
commit 1a30252fc9
2 changed files with 25 additions and 9 deletions

View File

@@ -37,6 +37,7 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.SortedSet;
import java.util.TreeSet;
import java.util.concurrent.Callable;
@@ -1084,7 +1085,6 @@ public class ResolvableTypeTests {
@Test
public void isAssignableFromForWildcards() throws Exception {
ResolvableType object = ResolvableType.forClass(Object.class);
ResolvableType charSequence = ResolvableType.forClass(CharSequence.class);
ResolvableType string = ResolvableType.forClass(String.class);
@@ -1287,6 +1287,15 @@ public class ResolvableTypeTests {
assertThat(((ParameterizedType) type).getActualTypeArguments()[0], is(equalTo(String.class)));
}
@Test
public void testSpr14648() throws Exception {
ResolvableType collectionClass = ResolvableType.forRawClass(Collection.class);
ResolvableType setClass = ResolvableType.forRawClass(Set.class);
ResolvableType fromReturnType = ResolvableType.forMethodReturnType(Methods.class.getMethod("wildcardSet"));
assertTrue(collectionClass.isAssignableFrom(fromReturnType));
assertTrue(setClass.isAssignableFrom(fromReturnType));
}
private ResolvableType testSerialization(ResolvableType type) throws Exception {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
@@ -1385,7 +1394,7 @@ public class ResolvableTypeTests {
}
static interface Methods<T> {
interface Methods<T> {
List<CharSequence> charSequenceReturn();
@@ -1398,6 +1407,8 @@ public class ResolvableTypeTests {
void typedParameter(T p);
T typedReturn();
Set<?> wildcardSet();
}
@@ -1453,7 +1464,7 @@ public class ResolvableTypeTests {
}
static interface TypedMethods extends Methods<String> {
interface TypedMethods extends Methods<String> {
}
@@ -1526,19 +1537,19 @@ public class ResolvableTypeTests {
}
static interface Wildcard<T extends Number> extends List<T> {
interface Wildcard<T extends Number> extends List<T> {
}
static interface RawExtendsWildcard extends Wildcard {
interface RawExtendsWildcard extends Wildcard {
}
static interface VariableNameSwitch<V, K> extends MultiValueMap<K, V> {
interface VariableNameSwitch<V, K> extends MultiValueMap<K, V> {
}
static interface ListOfGenericArray extends List<List<String>[]> {
interface ListOfGenericArray extends List<List<String>[]> {
}