Refine BindingReflectionHintsRegistrar

This commit refines BindingReflectionHintsRegistrar to skip
registration of hints for Object.class, primitive types and
skip members for array types.

Closes gh-28683
This commit is contained in:
Sébastien Deleuze
2022-06-23 15:42:09 +02:00
parent 61e9aa9f42
commit b121eed753
2 changed files with 56 additions and 1 deletions

View File

@@ -76,11 +76,14 @@ public class BindingReflectionHintsRegistrar {
* @return {@code true} if the members of the type should be registered transitively
*/
protected boolean shouldRegisterMembers(Class<?> type) {
return !type.getCanonicalName().startsWith("java.");
return !type.getCanonicalName().startsWith("java.") && !type.isArray();
}
private void registerReflectionHints(ReflectionHints hints, Set<Type> seen, Type type) {
if (type instanceof Class<?> clazz) {
if (clazz.isPrimitive() || clazz == Object.class) {
return;
}
hints.registerType(clazz, builder -> {
if (seen.contains(type)) {
return;