From 845b7608fe1ba665166514f728b3230ed07f499d Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sun, 6 Apr 2025 09:52:38 +1000 Subject: [PATCH 1/2] upgrade to groovy 4 --- build.gradle | 23 ++++++++++++------- gradle.properties | 2 +- .../analysis/values/ValueTraverserTest.groovy | 7 +++--- .../IncrementalCallStateDeferTest.groovy | 3 +-- .../InstrumentationTest.groovy | 2 -- ...FieldFetchingInstrumentationContext.groovy | 2 +- .../DataLoaderDispatcherTest.groovy | 2 -- .../values/InputInterceptorTest.groovy | 4 +--- .../extensions/ExtensionsBuilderTest.groovy | 4 +--- .../IntrospectionResultToSchemaTest.groovy | 4 ++-- .../groovy/graphql/schema/CoercingTest.groovy | 3 +-- ...legatingDataFetchingEnvironmentTest.groovy | 2 -- ...PropertyDataFetcherClassLoadingTest.groovy | 8 +++---- 13 files changed, 30 insertions(+), 36 deletions(-) diff --git a/build.gradle b/build.gradle index 619767230..13062d84f 100644 --- a/build.gradle +++ b/build.gradle @@ -97,7 +97,12 @@ jar { attributes('Automatic-Module-Name': 'com.graphqljava') } } - +tasks.withType(GroovyCompile) { + // Options when compiling Java using the Groovy plugin. + // (Groovy itself defaults to UTF-8 for Groovy code) + options.encoding = 'UTF-8' + groovyOptions.forkOptions.memoryMaximumSize = "4g" +} dependencies { implementation 'org.antlr:antlr4-runtime:' + antlrVersion api 'com.graphql-java:java-dataloader:3.4.0' @@ -106,13 +111,15 @@ dependencies { antlr 'org.antlr:antlr4:' + antlrVersion implementation 'com.google.guava:guava:' + guavaVersion testImplementation group: 'junit', name: 'junit', version: '4.13.2' - testImplementation 'org.spockframework:spock-core:2.0-groovy-3.0' - testImplementation 'org.codehaus.groovy:groovy:3.0.24' - testImplementation 'org.codehaus.groovy:groovy-json:3.0.24' + testImplementation 'org.spockframework:spock-core:2.3-groovy-4.0' + testImplementation 'net.bytebuddy:byte-buddy:1.17.5' + testImplementation 'org.objenesis:objenesis:3.4' + testImplementation 'org.apache.groovy:groovy:4.0.26"' + testImplementation 'org.apache.groovy:groovy-json:4.0.26' testImplementation 'com.google.code.gson:gson:2.12.1' testImplementation 'org.eclipse.jetty:jetty-server:11.0.25' testImplementation 'com.fasterxml.jackson.core:jackson-databind:2.18.3' - testImplementation 'org.awaitility:awaitility-groovy:4.2.0' + testImplementation 'org.awaitility:awaitility-groovy:4.3.0' testImplementation 'com.github.javafaker:javafaker:1.0.2' testImplementation 'org.reactivestreams:reactive-streams-tck:' + reactiveStreamsVersion @@ -220,9 +227,9 @@ generateGrammarSource { outputDirectory = file("${project.buildDir}/generated-src/antlr/main/graphql/parser/antlr") } generateGrammarSource.inputs - .dir('src/main/antlr') - .withPropertyName('sourceDir') - .withPathSensitivity(PathSensitivity.RELATIVE) + .dir('src/main/antlr') + .withPropertyName('sourceDir') + .withPathSensitivity(PathSensitivity.RELATIVE) task sourcesJar(type: Jar) { diff --git a/gradle.properties b/gradle.properties index 50b231834..4c377884b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ org.gradle.caching=true org.gradle.daemon=true org.gradle.parallel=true -org.gradle.jvmargs=-Dfile.encoding=UTF-8 +org.gradle.jvmargs=-Dfile.encoding=UTF-8 diff --git a/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy b/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy index 8d524f8bc..1a60b3585 100644 --- a/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy +++ b/src/test/groovy/graphql/analysis/values/ValueTraverserTest.groovy @@ -21,7 +21,6 @@ import graphql.schema.GraphQLObjectType import graphql.schema.GraphQLScalarType import graphql.schema.idl.SchemaDirectiveWiring import graphql.schema.idl.SchemaDirectiveWiringEnvironment -import org.jetbrains.annotations.Nullable import spock.lang.Specification import static graphql.schema.idl.RuntimeWiring.newRuntimeWiring @@ -323,7 +322,7 @@ class ValueTraverserTest extends Specification { ] def visitor = new ValueVisitor() { @Override - Object visitArgumentValue(@Nullable Object coercedValue, GraphQLArgument graphQLArgument, ValueVisitor.InputElements inputElements) { + Object visitArgumentValue(Object coercedValue, GraphQLArgument graphQLArgument, ValueVisitor.InputElements inputElements) { if (graphQLArgument.name == "arg2") { return [name: "Harry Potter", age: 54] } @@ -402,7 +401,7 @@ class ValueTraverserTest extends Specification { def visitor = new ValueVisitor() { @Override - Object visitScalarValue(@Nullable Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { + Object visitScalarValue(Object coercedValue, GraphQLScalarType inputType, ValueVisitor.InputElements inputElements) { if (coercedValue == "Tom Riddle") { return "Happy Potter" } @@ -410,7 +409,7 @@ class ValueTraverserTest extends Specification { } @Override - Object visitAppliedDirectiveArgumentValue(@Nullable Object coercedValue, GraphQLAppliedDirectiveArgument graphQLAppliedDirectiveArgument, ValueVisitor.InputElements inputElements) { + Object visitAppliedDirectiveArgumentValue(Object coercedValue, GraphQLAppliedDirectiveArgument graphQLAppliedDirectiveArgument, ValueVisitor.InputElements inputElements) { if (graphQLAppliedDirectiveArgument.name == "arg2") { return [name: "Harry Potter", age: 54] } diff --git a/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy b/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy index 94740a9e6..d99b49fae 100644 --- a/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy +++ b/src/test/groovy/graphql/execution/incremental/IncrementalCallStateDeferTest.groovy @@ -6,7 +6,6 @@ import graphql.execution.ResultPath import graphql.execution.pubsub.CapturingSubscriber import graphql.incremental.DelayedIncrementalPartialResult import org.awaitility.Awaitility -import org.jetbrains.annotations.NotNull import org.reactivestreams.Publisher import spock.lang.Specification @@ -242,7 +241,7 @@ class IncrementalCallStateDeferTest extends Specification { def threadFactory = new ThreadFactory() { @Override - Thread newThread(@NotNull Runnable r) { + Thread newThread(Runnable r) { return new Thread(r, "SubscriberThread") } } diff --git a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy index 6695038a6..6580d5990 100644 --- a/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/InstrumentationTest.groovy @@ -16,7 +16,6 @@ import graphql.schema.DataFetchingEnvironment import graphql.schema.SingletonPropertyDataFetcher import graphql.schema.StaticDataFetcher import org.awaitility.Awaitility -import org.jetbrains.annotations.NotNull import spock.lang.Specification import java.util.concurrent.CompletableFuture @@ -183,7 +182,6 @@ class InstrumentationTest extends Specification { } } - @NotNull @Override DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters, InstrumentationState state) { System.out.println(String.format("t%s instrument DF for %s", Thread.currentThread().getId(), parameters.environment.getExecutionStepInfo().getPath())) diff --git a/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy b/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy index 02cbf9d92..50fcaccd2 100644 --- a/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/TestingFieldFetchingInstrumentationContext.groovy @@ -1,6 +1,6 @@ package graphql.execution.instrumentation -class TestingFieldFetchingInstrumentationContext extends TestingInstrumentContext> implements FieldFetchingInstrumentationContext { +class TestingFieldFetchingInstrumentationContext extends TestingInstrumentContext implements FieldFetchingInstrumentationContext { TestingFieldFetchingInstrumentationContext(Object op, Object executionList, Object throwableList, Boolean useOnDispatch) { super(op, executionList, throwableList, useOnDispatch) diff --git a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy index 5ed01769f..2996305f5 100644 --- a/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy +++ b/src/test/groovy/graphql/execution/instrumentation/dataloader/DataLoaderDispatcherTest.groovy @@ -16,7 +16,6 @@ import org.awaitility.Awaitility import org.dataloader.BatchLoader import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry -import org.jetbrains.annotations.NotNull import org.reactivestreams.Publisher import reactor.core.publisher.Mono import spock.lang.Specification @@ -96,7 +95,6 @@ class DataLoaderDispatcherTest extends Specification { def enhancingInstrumentation = new SimplePerformantInstrumentation() { - @NotNull @Override ExecutionInput instrumentExecutionInput(ExecutionInput executionInput, InstrumentationExecutionParameters parameters, InstrumentationState state) { assert executionInput.getDataLoaderRegistry() == startingDataLoaderRegistry diff --git a/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy b/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy index 46b15a3d9..f259714b8 100644 --- a/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy +++ b/src/test/groovy/graphql/execution/values/InputInterceptorTest.groovy @@ -10,8 +10,6 @@ import graphql.execution.ValuesResolver import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.GraphQLInputType -import org.jetbrains.annotations.NotNull -import org.jetbrains.annotations.Nullable import spock.lang.Specification import static graphql.language.TypeName.newTypeName @@ -35,7 +33,7 @@ class InputInterceptorTest extends Specification { InputInterceptor interceptor = new InputInterceptor() { @Override - Object intercept(@Nullable Object value, @NotNull GraphQLInputType graphQLType, @NotNull GraphQLContext graphqlContext, @NotNull Locale locale) { + Object intercept(Object value, GraphQLInputType graphQLType, GraphQLContext graphqlContext, Locale locale) { if (graphQLType == Scalars.GraphQLBoolean) { return "truthy" == value ? false : value } diff --git a/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy b/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy index 12be824cf..e08a09b77 100644 --- a/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy +++ b/src/test/groovy/graphql/extensions/ExtensionsBuilderTest.groovy @@ -6,7 +6,6 @@ import graphql.execution.DataFetcherResult import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import graphql.schema.GraphQLTypeUtil -import org.jetbrains.annotations.NotNull import spock.lang.Specification import static graphql.ExecutionInput.newExecutionInput @@ -106,8 +105,7 @@ class ExtensionsBuilderTest extends Specification { def "can use a custom merger"() { ExtensionsMerger merger = new ExtensionsMerger() { @Override - @NotNull - Map merge(@NotNull Map leftMap, @NotNull Map rightMap) { + Map merge(Map leftMap, Map rightMap) { return rightMap } } diff --git a/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy b/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy index 9f2346df4..f322d2700 100644 --- a/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy +++ b/src/test/groovy/graphql/introspection/IntrospectionResultToSchemaTest.groovy @@ -377,7 +377,7 @@ input CharacterInput { "subscriptionType": {"name":"SubscriptionType"}, "types": [ ] - }""" + }}""" def parsed = slurp(input) when: @@ -826,7 +826,7 @@ directiveArg: String = "default Value") on FIELD | FRAGMENT_SPREAD | INLINE_FRAG "isRepeatable":true } ] - }""" + }}""" def parsed = slurp(input) when: diff --git a/src/test/groovy/graphql/schema/CoercingTest.groovy b/src/test/groovy/graphql/schema/CoercingTest.groovy index 5e96baece..9504243c4 100644 --- a/src/test/groovy/graphql/schema/CoercingTest.groovy +++ b/src/test/groovy/graphql/schema/CoercingTest.groovy @@ -14,7 +14,6 @@ import graphql.language.StringValue import graphql.language.VariableReference import graphql.schema.idl.RuntimeWiring import graphql.schema.idl.TypeRuntimeWiring -import org.jetbrains.annotations.NotNull import spock.lang.Specification import java.time.ZonedDateTime @@ -248,7 +247,7 @@ class CoercingTest extends Specification { } @Override - StringValue valueToLiteral(@NotNull Object input, @NotNull GraphQLContext graphQLContext, @NotNull Locale locale) { + StringValue valueToLiteral(Object input, GraphQLContext graphQLContext, Locale locale) { return new StringValue(input.toString()) } }) diff --git a/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy b/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy index 29133b21b..687a0f62a 100644 --- a/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy +++ b/src/test/groovy/graphql/schema/DelegatingDataFetchingEnvironmentTest.groovy @@ -1,7 +1,6 @@ package graphql.schema import graphql.GraphQLContext -import org.jetbrains.annotations.NotNull import spock.lang.Specification class DelegatingDataFetchingEnvironmentTest extends Specification { @@ -23,7 +22,6 @@ class DelegatingDataFetchingEnvironmentTest extends Specification { when: def delegatingDFE = new DelegatingDataFetchingEnvironment(dfe) { - @NotNull @Override GraphQLContext getGraphQlContext() { return GraphQLContext.of(["key": "overriddenContext"]) diff --git a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy index 6ee7623dd..ad7038701 100644 --- a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy +++ b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy @@ -35,10 +35,10 @@ class PropertyDataFetcherClassLoadingTest extends Specification { def target = new TargetClass() - when: - def value = okDF.get(fld("okThings"), target, { -> null }) - then: - value == "ok" +// when: +// def value = okDF.get(fld("okThings"), target, { -> null }) +// then: +// value == "ok" when: brokenDF.get(fld("brokenThings"), target, { -> null }) From 4e106657ba30e4e328e06c7843fa72314ccab772 Mon Sep 17 00:00:00 2001 From: Andreas Marek Date: Sun, 6 Apr 2025 13:18:41 +1000 Subject: [PATCH 2/2] fix test --- .../schema/PropertyDataFetcherClassLoadingTest.groovy | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy index ad7038701..62b814db0 100644 --- a/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy +++ b/src/test/groovy/graphql/schema/PropertyDataFetcherClassLoadingTest.groovy @@ -25,7 +25,7 @@ class PropertyDataFetcherClassLoadingTest extends Specification { } BrokenClass getBrokenThings() { - return BrokenClass.cast(null) + return new BrokenClass() } } @@ -35,10 +35,10 @@ class PropertyDataFetcherClassLoadingTest extends Specification { def target = new TargetClass() -// when: -// def value = okDF.get(fld("okThings"), target, { -> null }) -// then: -// value == "ok" + when: + def value = okDF.get(fld("okThings"), target, { -> null }) + then: + value == "ok" when: brokenDF.get(fld("brokenThings"), target, { -> null })