From 6d9a8a2b741fe933b7d0099d8589ff0e4f0ad4cb Mon Sep 17 00:00:00 2001 From: rstoyanchev Date: Mon, 20 May 2024 16:55:23 +0100 Subject: [PATCH] Forward compatibility with GraphQL Java 21 Closes gh-974 --- build.gradle | 2 +- .../graphql/data/pagination/ConnectionFieldTypeVisitor.java | 6 ++++-- .../graphql/execution/ContextDataFetcherDecorator.java | 6 ++++-- 3 files changed, 9 insertions(+), 5 deletions(-) diff --git a/build.gradle b/build.gradle index c183d9f9..daa28a91 100644 --- a/build.gradle +++ b/build.gradle @@ -3,7 +3,7 @@ description = "Spring for GraphQL" ext { moduleProjects = [project(":spring-graphql"), project(":spring-graphql-test")] springFrameworkVersion = "6.0.18" - graphQlJavaVersion = "20.9" + graphQlJavaVersion = "21.5" springBootVersion = "3.1.5" } 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 7455e605..857e42f4 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 @@ -32,6 +32,7 @@ import graphql.relay.DefaultPageInfo; import graphql.relay.Edge; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; +import graphql.schema.FieldCoordinates; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLFieldsContainer; @@ -85,7 +86,8 @@ public final class ConnectionFieldTypeVisitor extends GraphQLTypeVisitorStub { GraphQLCodeRegistry.Builder codeRegistry = context.getVarFromParents(GraphQLCodeRegistry.Builder.class); GraphQLFieldsContainer parent = (GraphQLFieldsContainer) context.getParentNode(); - DataFetcher dataFetcher = codeRegistry.getDataFetcher(parent, fieldDefinition); + FieldCoordinates fieldCoordinates = FieldCoordinates.coordinates(parent, fieldDefinition); + DataFetcher dataFetcher = codeRegistry.getDataFetcher(fieldCoordinates, fieldDefinition); if (visitorHelper != null && isUnderSubscriptionOperation(visitorHelper, context)) { return TraversalControl.CONTINUE; @@ -101,7 +103,7 @@ public final class ConnectionFieldTypeVisitor extends GraphQLTypeVisitorStub { } else { dataFetcher = new ConnectionDataFetcher(dataFetcher, this.adapter); - codeRegistry.dataFetcher(parent, fieldDefinition, dataFetcher); + codeRegistry.dataFetcher(fieldCoordinates, dataFetcher); } } diff --git a/spring-graphql/src/main/java/org/springframework/graphql/execution/ContextDataFetcherDecorator.java b/spring-graphql/src/main/java/org/springframework/graphql/execution/ContextDataFetcherDecorator.java index feb8e346..04ad377a 100644 --- a/spring-graphql/src/main/java/org/springframework/graphql/execution/ContextDataFetcherDecorator.java +++ b/spring-graphql/src/main/java/org/springframework/graphql/execution/ContextDataFetcherDecorator.java @@ -22,6 +22,7 @@ import graphql.ExecutionInput; import graphql.GraphQLContext; import graphql.schema.DataFetcher; import graphql.schema.DataFetchingEnvironment; +import graphql.schema.FieldCoordinates; import graphql.schema.GraphQLCodeRegistry; import graphql.schema.GraphQLFieldDefinition; import graphql.schema.GraphQLFieldsContainer; @@ -139,12 +140,13 @@ final class ContextDataFetcherDecorator implements DataFetcher { GraphQLCodeRegistry.Builder codeRegistry = context.getVarFromParents(GraphQLCodeRegistry.Builder.class); GraphQLFieldsContainer parent = (GraphQLFieldsContainer) context.getParentNode(); - DataFetcher dataFetcher = codeRegistry.getDataFetcher(parent, fieldDefinition); + FieldCoordinates fieldCoordinates = FieldCoordinates.coordinates(parent, fieldDefinition); + DataFetcher dataFetcher = codeRegistry.getDataFetcher(fieldCoordinates, fieldDefinition); if (applyDecorator(dataFetcher)) { boolean handlesSubscription = visitorHelper.isSubscriptionType(parent); dataFetcher = new ContextDataFetcherDecorator(dataFetcher, handlesSubscription, this.exceptionResolver); - codeRegistry.dataFetcher(parent, fieldDefinition, dataFetcher); + codeRegistry.dataFetcher(fieldCoordinates, dataFetcher); } return TraversalControl.CONTINUE;