Forward compatibility with GraphQL Java 21

Closes gh-974
This commit is contained in:
rstoyanchev
2024-05-20 16:55:23 +01:00
parent 33bdea9556
commit 6d9a8a2b74
3 changed files with 9 additions and 5 deletions

View File

@@ -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"
}

View File

@@ -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);
}
}

View File

@@ -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<Object> {
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;