Browse Source

Fix BindingReflectionHintsRegistrar anonymous classes support

This commit ensures that giving an anonymous class for reflection hints
registration does not result in a NullPointerException, since the
canonical name of anonymous classes is null.

Fixes gh-29657
pull/29659/head
Brian Clozel 3 years ago
parent
commit
d601f3196a
  1. 2
      spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java
  2. 6
      spring-core/src/test/java/org/springframework/aot/hint/BindingReflectionHintsRegistrarTests.java

2
spring-core/src/main/java/org/springframework/aot/hint/BindingReflectionHintsRegistrar.java

@ -71,7 +71,7 @@ public class BindingReflectionHintsRegistrar { @@ -71,7 +71,7 @@ public class BindingReflectionHintsRegistrar {
}
private boolean shouldSkipMembers(Class<?> type) {
return type.getCanonicalName().startsWith("java.") || type.isArray();
return (type.getCanonicalName() != null && type.getCanonicalName().startsWith("java.")) || type.isArray();
}
private void registerReflectionHints(ReflectionHints hints, Set<Type> seen, Type type) {

6
spring-core/src/test/java/org/springframework/aot/hint/BindingReflectionHintsRegistrarTests.java

@ -221,6 +221,12 @@ public class BindingReflectionHintsRegistrarTests { @@ -221,6 +221,12 @@ public class BindingReflectionHintsRegistrarTests {
});
}
@Test
void registerTypeForSerializationWithAnonymousClass() {
Runnable anonymousRunnable = () -> { };
bindingRegistrar.registerReflectionHints(this.hints.reflection(), anonymousRunnable.getClass());
}
@Test
void registerTypeForJacksonAnnotations() {
bindingRegistrar.registerReflectionHints(this.hints.reflection(), SampleClassWithJsonProperty.class);

Loading…
Cancel
Save