|
|
|
@ -42,7 +42,6 @@ import java.util.SortedSet; |
|
|
|
import java.util.TreeSet; |
|
|
|
import java.util.TreeSet; |
|
|
|
import java.util.concurrent.Callable; |
|
|
|
import java.util.concurrent.Callable; |
|
|
|
|
|
|
|
|
|
|
|
import org.hamcrest.Matchers; |
|
|
|
|
|
|
|
import org.junit.Rule; |
|
|
|
import org.junit.Rule; |
|
|
|
import org.junit.Test; |
|
|
|
import org.junit.Test; |
|
|
|
import org.junit.rules.ExpectedException; |
|
|
|
import org.junit.rules.ExpectedException; |
|
|
|
@ -944,16 +943,6 @@ public class ResolvableTypeTests { |
|
|
|
assertThat(ResolvableType.forClass(classType).getSuperType().getSource(), equalTo((Object) classType.getGenericSuperclass())); |
|
|
|
assertThat(ResolvableType.forClass(classType).getSuperType().getSource(), equalTo((Object) classType.getGenericSuperclass())); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private void assertFieldToStringValue(String field, String expected) throws Exception { |
|
|
|
|
|
|
|
ResolvableType type = ResolvableType.forField(Fields.class.getField(field)); |
|
|
|
|
|
|
|
assertThat("field " + field + " toString", type.toString(), equalTo(expected)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private void assertTypedFieldToStringValue(String field, String expected) throws Exception { |
|
|
|
|
|
|
|
ResolvableType type = ResolvableType.forField(Fields.class.getField(field), TypedFields.class); |
|
|
|
|
|
|
|
assertThat("field " + field + " toString", type.toString(), equalTo(expected)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void resolveFromOuterClass() throws Exception { |
|
|
|
public void resolveFromOuterClass() throws Exception { |
|
|
|
Field field = EnclosedInParameterizedType.InnerTyped.class.getField("field"); |
|
|
|
Field field = EnclosedInParameterizedType.InnerTyped.class.getField("field"); |
|
|
|
@ -971,7 +960,6 @@ public class ResolvableTypeTests { |
|
|
|
assertThat(type.asCollection().getGeneric().getGeneric().resolve(), equalTo((Type) String.class)); |
|
|
|
assertThat(type.asCollection().getGeneric().getGeneric().resolve(), equalTo((Type) String.class)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void isAssignableFromMustNotBeNull() throws Exception { |
|
|
|
public void isAssignableFromMustNotBeNull() throws Exception { |
|
|
|
this.thrown.expect(IllegalArgumentException.class); |
|
|
|
this.thrown.expect(IllegalArgumentException.class); |
|
|
|
@ -1206,18 +1194,18 @@ public class ResolvableTypeTests { |
|
|
|
assertThat(forFieldDirect, not(equalTo(forFieldWithImplementation))); |
|
|
|
assertThat(forFieldDirect, not(equalTo(forFieldWithImplementation))); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("unused") |
|
|
|
|
|
|
|
private HashMap<Integer, List<String>> myMap; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void javaDocSample() throws Exception { |
|
|
|
public void javaDocSample() throws Exception { |
|
|
|
ResolvableType t = ResolvableType.forField(getClass().getDeclaredField("myMap")); |
|
|
|
ResolvableType t = ResolvableType.forField(getClass().getDeclaredField("myMap")); |
|
|
|
|
|
|
|
assertThat(t.toString(), equalTo("java.util.HashMap<java.lang.Integer, java.util.List<java.lang.String>>")); |
|
|
|
|
|
|
|
assertThat(t.getType().getTypeName(), equalTo("java.util.HashMap<java.lang.Integer, java.util.List<java.lang.String>>")); |
|
|
|
|
|
|
|
assertThat(t.getType().toString(), equalTo("java.util.HashMap<java.lang.Integer, java.util.List<java.lang.String>>")); |
|
|
|
assertThat(t.getSuperType().toString(), equalTo("java.util.AbstractMap<java.lang.Integer, java.util.List<java.lang.String>>")); |
|
|
|
assertThat(t.getSuperType().toString(), equalTo("java.util.AbstractMap<java.lang.Integer, java.util.List<java.lang.String>>")); |
|
|
|
assertThat(t.asMap().toString(), equalTo("java.util.Map<java.lang.Integer, java.util.List<java.lang.String>>")); |
|
|
|
assertThat(t.asMap().toString(), equalTo("java.util.Map<java.lang.Integer, java.util.List<java.lang.String>>")); |
|
|
|
assertThat(t.getGeneric(0).resolve(), equalTo((Class)Integer.class)); |
|
|
|
assertThat(t.getGeneric(0).resolve(), equalTo(Integer.class)); |
|
|
|
assertThat(t.getGeneric(1).resolve(), equalTo((Class)List.class)); |
|
|
|
assertThat(t.getGeneric(1).resolve(), equalTo(List.class)); |
|
|
|
assertThat(t.getGeneric(1).toString(), equalTo("java.util.List<java.lang.String>")); |
|
|
|
assertThat(t.getGeneric(1).toString(), equalTo("java.util.List<java.lang.String>")); |
|
|
|
assertThat(t.resolveGeneric(1, 0), equalTo((Class) String.class)); |
|
|
|
assertThat(t.resolveGeneric(1, 0), equalTo(String.class)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
@ -1225,6 +1213,8 @@ public class ResolvableTypeTests { |
|
|
|
ResolvableType elementType = ResolvableType.forClassWithGenerics(Map.class, Integer.class, String.class); |
|
|
|
ResolvableType elementType = ResolvableType.forClassWithGenerics(Map.class, Integer.class, String.class); |
|
|
|
ResolvableType listType = ResolvableType.forClassWithGenerics(List.class, elementType); |
|
|
|
ResolvableType listType = ResolvableType.forClassWithGenerics(List.class, elementType); |
|
|
|
assertThat(listType.toString(), equalTo("java.util.List<java.util.Map<java.lang.Integer, java.lang.String>>")); |
|
|
|
assertThat(listType.toString(), equalTo("java.util.List<java.util.Map<java.lang.Integer, java.lang.String>>")); |
|
|
|
|
|
|
|
assertThat(listType.getType().getTypeName(), equalTo("java.util.List<java.util.Map<java.lang.Integer, java.lang.String>>")); |
|
|
|
|
|
|
|
assertThat(listType.getType().toString(), equalTo("java.util.List<java.util.Map<java.lang.Integer, java.lang.String>>")); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
@ -1245,7 +1235,7 @@ public class ResolvableTypeTests { |
|
|
|
ResolvableType elementType = ResolvableType.forField(Fields.class.getField("stringList")); |
|
|
|
ResolvableType elementType = ResolvableType.forField(Fields.class.getField("stringList")); |
|
|
|
ResolvableType type = ResolvableType.forArrayComponent(elementType); |
|
|
|
ResolvableType type = ResolvableType.forArrayComponent(elementType); |
|
|
|
assertThat(type.toString(), equalTo("java.util.List<java.lang.String>[]")); |
|
|
|
assertThat(type.toString(), equalTo("java.util.List<java.lang.String>[]")); |
|
|
|
assertThat(type.resolve(), equalTo((Class) List[].class)); |
|
|
|
assertThat(type.resolve(), equalTo(List[].class)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
@ -1265,14 +1255,14 @@ public class ResolvableTypeTests { |
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void canResolveVoid() throws Exception { |
|
|
|
public void canResolveVoid() throws Exception { |
|
|
|
ResolvableType type = ResolvableType.forClass(void.class); |
|
|
|
ResolvableType type = ResolvableType.forClass(void.class); |
|
|
|
assertThat(type.resolve(), equalTo((Class) void.class)); |
|
|
|
assertThat(type.resolve(), equalTo(void.class)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
public void narrow() throws Exception { |
|
|
|
public void narrow() throws Exception { |
|
|
|
ResolvableType type = ResolvableType.forField(Fields.class.getField("stringList")); |
|
|
|
ResolvableType type = ResolvableType.forField(Fields.class.getField("stringList")); |
|
|
|
ResolvableType narrow = ResolvableType.forType(ArrayList.class, type); |
|
|
|
ResolvableType narrow = ResolvableType.forType(ArrayList.class, type); |
|
|
|
assertThat(narrow.getGeneric().resolve(), equalTo((Class) String.class)); |
|
|
|
assertThat(narrow.getGeneric().resolve(), equalTo(String.class)); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Test |
|
|
|
@Test |
|
|
|
@ -1355,23 +1345,30 @@ public class ResolvableTypeTests { |
|
|
|
ResolvableType read = (ResolvableType) ois.readObject(); |
|
|
|
ResolvableType read = (ResolvableType) ois.readObject(); |
|
|
|
assertThat(read, equalTo(type)); |
|
|
|
assertThat(read, equalTo(type)); |
|
|
|
assertThat(read.getType(), equalTo(type.getType())); |
|
|
|
assertThat(read.getType(), equalTo(type.getType())); |
|
|
|
assertThat(read.resolve(), equalTo((Class) type.resolve())); |
|
|
|
assertThat(read.resolve(), equalTo(type.resolve())); |
|
|
|
return read; |
|
|
|
return read; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static AssertAssignbleMatcher assertAssignable(final ResolvableType type, final ResolvableType... fromTypes) { |
|
|
|
private void assertFieldToStringValue(String field, String expected) throws Exception { |
|
|
|
return new AssertAssignbleMatcher() { |
|
|
|
ResolvableType type = ResolvableType.forField(Fields.class.getField(field)); |
|
|
|
@Override |
|
|
|
assertThat("field " + field + " toString", type.toString(), equalTo(expected)); |
|
|
|
public void equalTo(boolean... values) { |
|
|
|
} |
|
|
|
for (int i = 0; i < fromTypes.length; i++) { |
|
|
|
|
|
|
|
assertThat(stringDesc(type) + " isAssignableFrom " + stringDesc(fromTypes[i]), |
|
|
|
private void assertTypedFieldToStringValue(String field, String expected) throws Exception { |
|
|
|
type.isAssignableFrom(fromTypes[i]), Matchers.equalTo(values[i])); |
|
|
|
ResolvableType type = ResolvableType.forField(Fields.class.getField(field), TypedFields.class); |
|
|
|
} |
|
|
|
assertThat("field " + field + " toString", type.toString(), equalTo(expected)); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private AssertAssignbleMatcher assertAssignable(final ResolvableType type, final ResolvableType... fromTypes) { |
|
|
|
|
|
|
|
return values -> { |
|
|
|
|
|
|
|
for (int i = 0; i < fromTypes.length; i++) { |
|
|
|
|
|
|
|
assertThat(stringDesc(type) + " isAssignableFrom " + stringDesc(fromTypes[i]), |
|
|
|
|
|
|
|
type.isAssignableFrom(fromTypes[i]), equalTo(values[i])); |
|
|
|
} |
|
|
|
} |
|
|
|
}; |
|
|
|
}; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
private static String stringDesc(ResolvableType type) { |
|
|
|
private String stringDesc(ResolvableType type) { |
|
|
|
if (type == ResolvableType.NONE) { |
|
|
|
if (type == ResolvableType.NONE) { |
|
|
|
return "NONE"; |
|
|
|
return "NONE"; |
|
|
|
} |
|
|
|
} |
|
|
|
@ -1382,7 +1379,11 @@ public class ResolvableTypeTests { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private static interface AssertAssignbleMatcher { |
|
|
|
@SuppressWarnings("unused") |
|
|
|
|
|
|
|
private HashMap<Integer, List<String>> myMap; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private interface AssertAssignbleMatcher { |
|
|
|
|
|
|
|
|
|
|
|
void equalTo(boolean... values); |
|
|
|
void equalTo(boolean... values); |
|
|
|
} |
|
|
|
} |
|
|
|
|