diff --git a/.github/tag-release.sh b/.github/tag-release.sh
index 0c567951..d80c1699 100755
--- a/.github/tag-release.sh
+++ b/.github/tag-release.sh
@@ -51,4 +51,4 @@ echo "Deploying release to Maven Central"
removeSnapshots
commitRelease
bumpVersion
-git push --follow-tags
+git push --follow-tags
\ No newline at end of file
diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 5be6997d..3882c278 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -17,7 +17,7 @@ jobs:
fail-fast: false
matrix:
os: [ ubuntu-latest, macos-latest, windows-latest ]
- java: [ 8, 11, 15 ]
+ java: [ 11 ]
needs: validation
runs-on: ${{ matrix.os }}
steps:
diff --git a/README.md b/README.md
index 8cd4efe3..1967bd18 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-# GraphQL Java Servlet
+# GraphQL Java Servlet 14
[](https://maven-badges.herokuapp.com/maven-central/com.graphql-java-kickstart/graphql-java-servlet)
[](https://github.com/graphql-java-kickstart/graphql-java-servlet/actions?query=workflow%3A%22Publish+snapshot%22)
[](https://sonarcloud.io/dashboard?id=graphql-java-kickstart_graphql-java-servlet)
@@ -19,10 +19,17 @@ This project wraps the Java implementation of GraphQL provided by [GraphQL Java]
See [GraphQL Java documentation](https://www.graphql-java.com/documentation/latest/) for more in depth details
regarding GraphQL Java itself.
-We try to stay up to date with GraphQL Java as much as possible. The current version supports
- **GraphQL Java 17.3**.
-
-This project requires at least Java 8.
+We try to stay up to date with GraphQL Java as much as possible maintaining the retro-compatibility
+with Springframework 5.
+
+The `14.*` version must be used if your project is based on Spring version <= `5`,
+or it is using javax-servlet-api dependency and cannot be upgraded to jakarta.
+
+It also supports legacy projects that can compile with older JDK versions: the oldest supported one
+is the `11`.
+
+
+See [gradle.properties](gradle.properties) to see currently supported versions.
## Installation and getting started
diff --git a/build.gradle b/build.gradle
index 0bd99646..ca0f6f45 100644
--- a/build.gradle
+++ b/build.gradle
@@ -27,10 +27,10 @@ buildscript {
}
plugins {
- id "biz.aQute.bnd.builder" version "6.3.1" apply false
- id "org.sonarqube" version "3.4.0.2513"
+ id "biz.aQute.bnd.builder" version "6.4.0" apply false
+ id "org.sonarqube" version "4.0.0.2929"
id "jacoco"
- id "io.github.gradle-nexus.publish-plugin" version '1.1.0'
+ id "io.github.gradle-nexus.publish-plugin" version '1.3.0'
}
sonarqube {
diff --git a/examples/osgi/apache-karaf-feature/pom.xml b/examples/osgi/apache-karaf-feature/pom.xml
index 66e9eec4..9b52910b 100644
--- a/examples/osgi/apache-karaf-feature/pom.xml
+++ b/examples/osgi/apache-karaf-feature/pom.xml
@@ -112,7 +112,7 @@
- 2.12.6.1
+ 2.13.4.2
diff --git a/examples/osgi/pom.xml b/examples/osgi/pom.xml
index c51bd1e0..a0daab35 100644
--- a/examples/osgi/pom.xml
+++ b/examples/osgi/pom.xml
@@ -17,8 +17,8 @@
11.0.0-SNAPSHOT16.14.2.10
- 1.8
- 1.8
+u 11
+ 1110.1.0
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
index 249e5832..c1962a79 100644
Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
index 8fad3f5a..8707e8b5 100644
--- a/gradle/wrapper/gradle-wrapper.properties
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -1,5 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
-distributionUrl=https\://services.gradle.org/distributions/gradle-7.5.1-all.zip
+distributionUrl=https\://services.gradle.org/distributions/gradle-8.1.1-all.zip
+networkTimeout=10000
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
diff --git a/gradlew b/gradlew
index a69d9cb6..aeb74cbb 100755
--- a/gradlew
+++ b/gradlew
@@ -55,7 +55,7 @@
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
-# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
+# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
@@ -80,13 +80,10 @@ do
esac
done
-APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
-
-APP_NAME="Gradle"
+# This is normally unused
+# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
-
-# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
-DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
@@ -143,12 +140,16 @@ fi
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
+ # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
+ # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
+ # shellcheck disable=SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
@@ -193,6 +194,10 @@ if "$cygwin" || "$msys" ; then
done
fi
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
+
# Collect all arguments for the java command;
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
# shell script including quotes and variable substitutions, so put them in
diff --git a/gradlew.bat b/gradlew.bat
index 53a6b238..6689b85b 100644
--- a/gradlew.bat
+++ b/gradlew.bat
@@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
+@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
diff --git a/graphql-java-kickstart/build.gradle b/graphql-java-kickstart/build.gradle
index b336ca2f..b6639991 100644
--- a/graphql-java-kickstart/build.gradle
+++ b/graphql-java-kickstart/build.gradle
@@ -14,6 +14,6 @@ dependencies {
// JSON
api "com.fasterxml.jackson.core:jackson-core:$LIB_JACKSON_VER"
api "com.fasterxml.jackson.core:jackson-annotations:$LIB_JACKSON_VER"
- api "com.fasterxml.jackson.core:jackson-databind:2.13.3"
+ api "com.fasterxml.jackson.core:jackson-databind:2.15.0"
api "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$LIB_JACKSON_VER"
}
diff --git a/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/GraphQLQueryInvoker.java b/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/GraphQLQueryInvoker.java
index 19370561..a8749488 100644
--- a/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/GraphQLQueryInvoker.java
+++ b/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/GraphQLQueryInvoker.java
@@ -50,7 +50,8 @@ public static class Builder {
private Supplier getExecutionStrategyProvider =
DefaultExecutionStrategyProvider::new;
- private Supplier getInstrumentation = () -> SimplePerformantInstrumentation.INSTANCE;
+ private Supplier getInstrumentation =
+ () -> SimplePerformantInstrumentation.INSTANCE;
private Supplier getPreparsedDocumentProvider =
() -> NoOpPreparsedDocumentProvider.INSTANCE;
private Supplier
diff --git a/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/config/GraphQLBuilder.java b/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/config/GraphQLBuilder.java
index 7f5c1dcd..aa43deaa 100644
--- a/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/config/GraphQLBuilder.java
+++ b/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/config/GraphQLBuilder.java
@@ -20,7 +20,8 @@ public class GraphQLBuilder {
() -> NoOpPreparsedDocumentProvider.INSTANCE;
@Getter
- private Supplier instrumentationSupplier = () -> SimplePerformantInstrumentation.INSTANCE;
+ private Supplier instrumentationSupplier =
+ () -> SimplePerformantInstrumentation.INSTANCE;
private Supplier graphQLBuilderConfigurerSupplier = () -> builder -> {};
diff --git a/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/instrumentation/ConfigurableDispatchInstrumentation.java b/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/instrumentation/ConfigurableDispatchInstrumentation.java
index 23565b2e..76c891af 100644
--- a/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/instrumentation/ConfigurableDispatchInstrumentation.java
+++ b/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/instrumentation/ConfigurableDispatchInstrumentation.java
@@ -65,10 +65,12 @@ public InstrumentationState createState(InstrumentationCreateStateParameters par
}
@Override
- public DataFetcher> instrumentDataFetcher(DataFetcher> dataFetcher,
- InstrumentationFieldFetchParameters parameters, InstrumentationState instrumentationState) {
- DataLoaderDispatcherInstrumentationState state = InstrumentationState.ofState(
- instrumentationState);
+ public DataFetcher> instrumentDataFetcher(
+ DataFetcher> dataFetcher,
+ InstrumentationFieldFetchParameters parameters,
+ InstrumentationState instrumentationState) {
+ DataLoaderDispatcherInstrumentationState state =
+ InstrumentationState.ofState(instrumentationState);
if (state.isAggressivelyBatching()) {
return dataFetcher;
}
@@ -92,8 +94,8 @@ public InstrumentationContext beginExecuteOperation(
InstrumentationExecuteOperationParameters parameters,
InstrumentationState instrumentationState) {
if (!isDataLoaderCompatible(parameters.getExecutionContext())) {
- DataLoaderDispatcherInstrumentationState state = InstrumentationState.ofState(
- instrumentationState);
+ DataLoaderDispatcherInstrumentationState state =
+ InstrumentationState.ofState(instrumentationState);
state.setAggressivelyBatching(false);
}
return SimpleInstrumentationContext.noOp();
@@ -117,8 +119,8 @@ private boolean isDataLoaderCompatible(ExecutionContext executionContext) {
public ExecutionStrategyInstrumentationContext beginExecutionStrategy(
InstrumentationExecutionStrategyParameters parameters,
InstrumentationState instrumentationState) {
- DataLoaderDispatcherInstrumentationState state = InstrumentationState.ofState(
- instrumentationState);
+ DataLoaderDispatcherInstrumentationState state =
+ InstrumentationState.ofState(instrumentationState);
//
// if there are no data loaders, there is nothing to do
//
@@ -141,8 +143,8 @@ public void onCompleted(ExecutionResult result, Throwable t) {
@Override
public InstrumentationContext