From 3c6d8fb1f23af3a007bbc9890cfff85318db9abb Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Fri, 16 Jun 2023 10:55:40 +0100 Subject: [PATCH] Allow ~Connection return type from mutations Closes gh-722 --- .../graphql/data/pagination/ConnectionFieldTypeVisitor.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/spring-graphql/src/main/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitor.java b/spring-graphql/src/main/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitor.java index 5318777e..d5dffd11 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitor.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/data/pagination/ConnectionFieldTypeVisitor.java @@ -47,6 +47,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import reactor.core.publisher.Mono; +import org.springframework.graphql.execution.TypeVisitorHelper; import org.springframework.lang.Nullable; import org.springframework.util.Assert; @@ -79,11 +80,13 @@ public final class ConnectionFieldTypeVisitor extends GraphQLTypeVisitorStub { public TraversalControl visitGraphQLFieldDefinition( GraphQLFieldDefinition fieldDefinition, TraverserContext context) { + TypeVisitorHelper visitorHelper = context.getVarFromParents(TypeVisitorHelper.class); GraphQLCodeRegistry.Builder codeRegistry = context.getVarFromParents(GraphQLCodeRegistry.Builder.class); + GraphQLFieldsContainer parent = (GraphQLFieldsContainer) context.getParentNode(); DataFetcher dataFetcher = codeRegistry.getDataFetcher(parent, fieldDefinition); - if (parent.getName().equalsIgnoreCase("mutation") || parent.getName().equalsIgnoreCase("subscription")) { + if (visitorHelper != null && visitorHelper.isSubscriptionType(parent)) { return TraversalControl.ABORT; }