From cd9e80523b168d75c0a6a68ed76a366d9dda054d Mon Sep 17 00:00:00 2001 From: Joe Barnett Date: Wed, 27 Jul 2022 16:44:27 -0700 Subject: [PATCH] Update to graphql-java 19.0 FlowSubscriptionExecutionStrategy needs to be updated to pass instrumentationState to instrumentations per https://github.com/graphql-java/graphql-java/pull/2769 ValidationError string changed slightly so adjust assertions. --- .../execution/FlowSubscriptionExecutionStrategy.kt | 12 +++++++++--- gradle.properties | 2 +- .../server/spring/execution/IntrospectionIT.kt | 4 +++- 3 files changed, 13 insertions(+), 5 deletions(-) diff --git a/generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/execution/FlowSubscriptionExecutionStrategy.kt b/generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/execution/FlowSubscriptionExecutionStrategy.kt index 01f82ecb5..a92cf0a04 100644 --- a/generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/execution/FlowSubscriptionExecutionStrategy.kt +++ b/generator/graphql-kotlin-schema-generator/src/main/kotlin/com/expediagroup/graphql/generator/execution/FlowSubscriptionExecutionStrategy.kt @@ -25,6 +25,8 @@ import graphql.execution.ExecutionStrategy import graphql.execution.ExecutionStrategyParameters import graphql.execution.SimpleDataFetcherExceptionHandler import graphql.execution.SubscriptionExecutionStrategy +import graphql.execution.instrumentation.ExecutionStrategyInstrumentationContext +import graphql.execution.instrumentation.SimpleInstrumentationContext import graphql.execution.instrumentation.parameters.InstrumentationExecutionParameters import graphql.execution.instrumentation.parameters.InstrumentationExecutionStrategyParameters import graphql.execution.instrumentation.parameters.InstrumentationFieldParameters @@ -55,7 +57,9 @@ class FlowSubscriptionExecutionStrategy(dfe: DataFetcherExceptionHandler) : Exec val instrumentation = executionContext.instrumentation val instrumentationParameters = InstrumentationExecutionStrategyParameters(executionContext, parameters) - val executionStrategyCtx = instrumentation.beginExecutionStrategy(instrumentationParameters) + val executionStrategyCtx = ExecutionStrategyInstrumentationContext.nonNullCtx( + instrumentation.beginExecutionStrategy(instrumentationParameters, executionContext.instrumentationState) + ) val sourceEventStream = createSourceEventStream(executionContext, parameters) @@ -142,7 +146,9 @@ class FlowSubscriptionExecutionStrategy(dfe: DataFetcherExceptionHandler) : Exec val subscribedFieldStepInfo = createSubscribedFieldStepInfo(executionContext, newParameters) val i13nFieldParameters = InstrumentationFieldParameters(executionContext) { subscribedFieldStepInfo } - val subscribedFieldCtx = instrumentation.beginSubscribedFieldEvent(i13nFieldParameters) + val subscribedFieldCtx = SimpleInstrumentationContext.nonNullCtx( + instrumentation.beginSubscribedFieldEvent(i13nFieldParameters, executionContext.instrumentationState) + ) val fetchedValue = unboxPossibleDataFetcherResult(newExecutionContext, parameters, eventPayload) @@ -161,7 +167,7 @@ class FlowSubscriptionExecutionStrategy(dfe: DataFetcherExceptionHandler) : Exec ) return overallResult.thenCompose { executionResult -> - instrumentation.instrumentExecutionResult(executionResult, i13ExecutionParameters) + instrumentation.instrumentExecutionResult(executionResult, i13ExecutionParameters, executionContext.instrumentationState) } } diff --git a/gradle.properties b/gradle.properties index 314ccfb8c..138246fb4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -22,7 +22,7 @@ kotlinxSerializationVersion = 1.3.2 androidPluginVersion = 7.1.2 classGraphVersion = 4.8.143 federationGraphQLVersion = 0.9.0 -graphQLJavaVersion = 18.0 +graphQLJavaVersion = 19.0 graphQLJavaDataLoaderVersion = 3.1.3 jacksonVersion = 2.13.2 kotlinPoetVersion = 1.11.0 diff --git a/servers/graphql-kotlin-spring-server/src/test/kotlin/com/expediagroup/graphql/server/spring/execution/IntrospectionIT.kt b/servers/graphql-kotlin-spring-server/src/test/kotlin/com/expediagroup/graphql/server/spring/execution/IntrospectionIT.kt index c62288be2..cfe3a3da0 100644 --- a/servers/graphql-kotlin-spring-server/src/test/kotlin/com/expediagroup/graphql/server/spring/execution/IntrospectionIT.kt +++ b/servers/graphql-kotlin-spring-server/src/test/kotlin/com/expediagroup/graphql/server/spring/execution/IntrospectionIT.kt @@ -18,6 +18,7 @@ package com.expediagroup.graphql.server.spring.execution import com.expediagroup.graphql.server.operations.Query import com.expediagroup.graphql.server.types.GraphQLRequest import graphql.introspection.IntrospectionQuery +import org.hamcrest.core.StringContains import org.junit.jupiter.api.Test import org.springframework.beans.factory.annotation.Autowired import org.springframework.boot.autoconfigure.EnableAutoConfiguration @@ -50,7 +51,8 @@ class IntrospectionIT(@Autowired private val testClient: WebTestClient) { .expectBody() .jsonPath("$.data").doesNotExist() .jsonPath("$.errors").isArray - .jsonPath("$.errors[0].message").isEqualTo("Validation error of type FieldUndefined: Field 'queryType' in type '__Schema' is undefined @ '__schema/queryType'") + .jsonPath("$.errors[0].message").value(StringContains.containsString("Validation error")) + .jsonPath("$.errors[0].message").value(StringContains.containsString("Field 'queryType' in type '__Schema' is undefined")) } @Configuration