Fix enclosing class in TypeReference for inner type arrays
See gh-28664
This commit is contained in:
parent
4cb9e65353
commit
c34de54d8a
|
@ -28,10 +28,18 @@ final class ReflectionTypeReference extends AbstractTypeReference {
|
||||||
private final Class<?> type;
|
private final Class<?> type;
|
||||||
|
|
||||||
private ReflectionTypeReference(Class<?> type) {
|
private ReflectionTypeReference(Class<?> type) {
|
||||||
super(type.getPackageName(), type.getSimpleName(), safeCreate(type.getEnclosingClass()));
|
super(type.getPackageName(), type.getSimpleName(), safeCreate(getEnclosingClass(type)));
|
||||||
this.type = type;
|
this.type = type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Nullable
|
||||||
|
private static Class<?> getEnclosingClass(Class<?> type) {
|
||||||
|
if (type.isArray()) {
|
||||||
|
return type.getComponentType().getEnclosingClass();
|
||||||
|
}
|
||||||
|
return type.getEnclosingClass();
|
||||||
|
}
|
||||||
|
|
||||||
@Nullable
|
@Nullable
|
||||||
private static ReflectionTypeReference safeCreate(@Nullable Class<?> type) {
|
private static ReflectionTypeReference safeCreate(@Nullable Class<?> type) {
|
||||||
return (type != null ? new ReflectionTypeReference(type) : null);
|
return (type != null ? new ReflectionTypeReference(type) : null);
|
||||||
|
|
|
@ -28,6 +28,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
* Tests for {@link ReflectionTypeReference}.
|
* Tests for {@link ReflectionTypeReference}.
|
||||||
*
|
*
|
||||||
* @author Stephane Nicoll
|
* @author Stephane Nicoll
|
||||||
|
* @author Moritz Halbritter
|
||||||
*/
|
*/
|
||||||
class ReflectionTypeReferenceTests {
|
class ReflectionTypeReferenceTests {
|
||||||
|
|
||||||
|
@ -38,10 +39,22 @@ class ReflectionTypeReferenceTests {
|
||||||
}
|
}
|
||||||
|
|
||||||
static Stream<Arguments> reflectionTargetNames() {
|
static Stream<Arguments> reflectionTargetNames() {
|
||||||
return Stream.of(Arguments.of(ReflectionTypeReference.of(int.class), "int"),
|
return Stream.of(
|
||||||
|
Arguments.of(ReflectionTypeReference.of(int.class), "int"),
|
||||||
Arguments.of(ReflectionTypeReference.of(int[].class), "int[]"),
|
Arguments.of(ReflectionTypeReference.of(int[].class), "int[]"),
|
||||||
Arguments.of(ReflectionTypeReference.of(Integer[].class), "java.lang.Integer[]"),
|
Arguments.of(ReflectionTypeReference.of(Integer[].class), "java.lang.Integer[]"),
|
||||||
Arguments.of(ReflectionTypeReference.of(Object[].class), "java.lang.Object[]"));
|
Arguments.of(ReflectionTypeReference.of(Object[].class), "java.lang.Object[]"),
|
||||||
|
Arguments.of(ReflectionTypeReference.of(StaticInner.class), "org.springframework.aot.hint.ReflectionTypeReferenceTests$StaticInner"),
|
||||||
|
Arguments.of(ReflectionTypeReference.of(StaticInner[].class), "org.springframework.aot.hint.ReflectionTypeReferenceTests$StaticInner[]"),
|
||||||
|
Arguments.of(ReflectionTypeReference.of(Inner.class), "org.springframework.aot.hint.ReflectionTypeReferenceTests$Inner"),
|
||||||
|
Arguments.of(ReflectionTypeReference.of(Inner[].class), "org.springframework.aot.hint.ReflectionTypeReferenceTests$Inner[]")
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
static class StaticInner {
|
||||||
|
}
|
||||||
|
|
||||||
|
class Inner {
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue