From 01bc66acb16f4ce82fa1227b8b68d24240c10386 Mon Sep 17 00:00:00 2001 From: Brian Clozel Date: Tue, 25 Apr 2023 17:00:13 +0200 Subject: [PATCH] Add support for GraphQlExceptionHandler in AOT mode This commit adds the relevant reflection metadata for supporting `@GraphQlExceptionHandler` annotated methods in controllers and `@ControllerAdvice` beans. Closes gh-677 --- ...BeanFactoryInitializationAotProcessor.java | 54 +++++-- .../spring-graphql/reflect-config.json | 7 + ...actoryInitializationAotProcessorTests.java | 136 ++++++++++++++---- 3 files changed, 160 insertions(+), 37 deletions(-) diff --git a/spring-graphql/src/main/java/org/springframework/graphql/data/method/annotation/support/SchemaMappingBeanFactoryInitializationAotProcessor.java b/spring-graphql/src/main/java/org/springframework/graphql/data/method/annotation/support/SchemaMappingBeanFactoryInitializationAotProcessor.java index 68e330c6..bc4676b9 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/data/method/annotation/support/SchemaMappingBeanFactoryInitializationAotProcessor.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/data/method/annotation/support/SchemaMappingBeanFactoryInitializationAotProcessor.java @@ -20,7 +20,9 @@ import java.lang.reflect.AnnotatedElement; import java.lang.reflect.Method; import java.lang.reflect.Parameter; import java.lang.reflect.Type; +import java.util.ArrayList; import java.util.Arrays; +import java.util.List; import org.springframework.aop.SpringProxy; import org.springframework.aot.generate.GenerationContext; @@ -45,10 +47,12 @@ import org.springframework.graphql.data.ArgumentValue; import org.springframework.graphql.data.method.HandlerMethodArgumentResolver; import org.springframework.graphql.data.method.HandlerMethodArgumentResolverComposite; import org.springframework.graphql.data.method.annotation.BatchMapping; +import org.springframework.graphql.data.method.annotation.GraphQlExceptionHandler; import org.springframework.graphql.data.method.annotation.SchemaMapping; import org.springframework.stereotype.Controller; import org.springframework.util.ClassUtils; import org.springframework.util.ReflectionUtils; +import org.springframework.web.bind.annotation.ControllerAdvice; import static org.springframework.core.annotation.MergedAnnotations.SearchStrategy.TYPE_HIERARCHY; @@ -58,6 +62,8 @@ import static org.springframework.core.annotation.MergedAnnotations.SearchStrate *