From e73fe9daf6eb110b7913d0cb45a17cb96e0c631d Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Wed, 17 Aug 2022 17:49:48 +0000 Subject: [PATCH 01/62] Update version for release --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 106472a6..9e956244 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=14.0.0 +version=14.0.1-SNAPSHOT group=com.graphql-java-kickstart PROJECT_NAME=graphql-java-servlet PROJECT_DESC=GraphQL Java Kickstart From b4ef1920bf6a4c0ce27c1b2449edc0362a555b42 Mon Sep 17 00:00:00 2001 From: oliemansm Date: Wed, 17 Aug 2022 20:15:39 +0200 Subject: [PATCH 02/62] chore: update supported graphql-java version in readme --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8cd4efe3..c9b18c11 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,7 @@ See [GraphQL Java documentation](https://www.graphql-java.com/documentation/late 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**. + **GraphQL Java 19.1**. This project requires at least Java 8. From 1945f5af6eb48cfd9c7b73c83690edea603e9c54 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 20 Aug 2022 21:25:31 +0000 Subject: [PATCH 03/62] fix(deps): update lib_slf4j_ver to v2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9e956244..c286c5f8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans LIB_GRAPHQL_JAVA_VER=19.1 LIB_JACKSON_VER=2.13.3 -LIB_SLF4J_VER=1.7.36 +LIB_SLF4J_VER=2.0.0 LIB_LOMBOK_VER=1.18.24 SOURCE_COMPATIBILITY=1.8 TARGET_COMPATIBILITY=1.8 From 4c429a7f1ebcd03733b09acfc944443f00beb6ce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 3 Sep 2022 23:44:01 +0000 Subject: [PATCH 04/62] fix(deps): update dependency com.fasterxml.jackson.core:jackson-databind to v2.13.4 --- graphql-java-kickstart/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphql-java-kickstart/build.gradle b/graphql-java-kickstart/build.gradle index b336ca2f..97f26597 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.13.4" api "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$LIB_JACKSON_VER" } From 12301ae5bfcd67147d4ecbd8cd5908f8e39a72a0 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 4 Sep 2022 03:22:02 +0000 Subject: [PATCH 05/62] fix(deps): update lib_jackson_ver to v2.13.4 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index c286c5f8..00408476 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ PROJECT_LICENSE_URL=https://github.com/graphql-java-kickstart/spring-java-servle PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans LIB_GRAPHQL_JAVA_VER=19.1 -LIB_JACKSON_VER=2.13.3 +LIB_JACKSON_VER=2.13.4 LIB_SLF4J_VER=2.0.0 LIB_LOMBOK_VER=1.18.24 SOURCE_COMPATIBILITY=1.8 From 3e3a7960ef293b1ae68ee25fad326097afb166a3 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 7 Sep 2022 07:45:42 +0000 Subject: [PATCH 06/62] fix(deps): update dependency com.graphql-java:graphql-java to v19.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 00408476..d7e1c93b 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ PROJECT_LICENSE=MIT PROJECT_LICENSE_URL=https://github.com/graphql-java-kickstart/spring-java-servlet/blob/master/LICENSE.md PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans -LIB_GRAPHQL_JAVA_VER=19.1 +LIB_GRAPHQL_JAVA_VER=19.2 LIB_JACKSON_VER=2.13.4 LIB_SLF4J_VER=2.0.0 LIB_LOMBOK_VER=1.18.24 From 7784179044c1c30072a190066d30b2b43811c9bd Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 15 Sep 2022 13:05:07 +0000 Subject: [PATCH 07/62] fix(deps): update spring core to v5.3.23 --- graphql-java-servlet/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 0852ef86..85b8c9ff 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -36,7 +36,7 @@ dependencies { testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" - testImplementation 'org.springframework:spring-test:5.3.22' - testRuntimeOnly 'org.springframework:spring-web:5.3.22' + testImplementation 'org.springframework:spring-test:5.3.23' + testRuntimeOnly 'org.springframework:spring-web:5.3.23' testImplementation 'com.google.guava:guava:31.1-jre' } From 81363dbdff56419d245e16256e8992e811125d9e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 15 Sep 2022 15:47:55 +0000 Subject: [PATCH 08/62] fix(deps): update lib_slf4j_ver to v2.0.1 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 00408476..6d280e6c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans LIB_GRAPHQL_JAVA_VER=19.1 LIB_JACKSON_VER=2.13.4 -LIB_SLF4J_VER=2.0.0 +LIB_SLF4J_VER=2.0.1 LIB_LOMBOK_VER=1.18.24 SOURCE_COMPATIBILITY=1.8 TARGET_COMPATIBILITY=1.8 From 2575e448817404c2f5d679dc1a8d602ace77fe1d Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 18 Sep 2022 09:57:08 +0000 Subject: [PATCH 09/62] fix(deps): update dependency org.codehaus.groovy:groovy-all to v3.0.13 --- graphql-java-servlet/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 85b8c9ff..610419bc 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -31,7 +31,7 @@ dependencies { testImplementation 'io.github.graphql-java:graphql-java-annotations:8.3' // Unit testing - testImplementation "org.codehaus.groovy:groovy-all:3.0.12" + testImplementation "org.codehaus.groovy:groovy-all:3.0.13" testImplementation "org.spockframework:spock-core:2.1-groovy-3.0" testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" From 51a10cf2855354312fa9d2836346b2452dc401bb Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Sep 2022 22:03:54 +0000 Subject: [PATCH 10/62] fix(deps): update lib_slf4j_ver to v2.0.2 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 8207ff69..f28bfeb2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans LIB_GRAPHQL_JAVA_VER=19.2 LIB_JACKSON_VER=2.13.4 -LIB_SLF4J_VER=2.0.1 +LIB_SLF4J_VER=2.0.2 LIB_LOMBOK_VER=1.18.24 SOURCE_COMPATIBILITY=1.8 TARGET_COMPATIBILITY=1.8 From 9664d02a99b060d3871d49677a2388918f2dfd18 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Wed, 19 Oct 2022 05:38:17 +0000 Subject: [PATCH 11/62] chore(deps): bump jackson-databind Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.12.6.1 to 2.13.4.1. - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- examples/osgi/apache-karaf-feature/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/osgi/apache-karaf-feature/pom.xml b/examples/osgi/apache-karaf-feature/pom.xml index 66e9eec4..d2c59de7 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.1 From e76fa677cea1710e177ecc2332f13220707064ec Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Tue, 15 Nov 2022 21:00:54 +0100 Subject: [PATCH 12/62] javax.servlet -> jakarta.servlet:6.0 --- graphql-java-servlet/build.gradle | 7 ++++--- .../servlet/AbstractGraphQLHttpServlet.java | 8 ++++---- .../kickstart/servlet/AsyncTimeoutListener.java | 4 ++-- .../servlet/BatchedQueryResponseWriter.java | 4 ++-- .../servlet/ErrorQueryResponseWriter.java | 4 ++-- .../servlet/ExecutionResultSubscriber.java | 2 +- .../servlet/GraphQLGetInvocationInputParser.java | 4 ++-- .../servlet/GraphQLInvocationInputParser.java | 6 +++--- .../GraphQLMultipartInvocationInputParser.java | 8 ++++---- .../GraphQLPostInvocationInputParser.java | 4 ++-- .../servlet/GraphQLWebsocketServlet.java | 16 ++++++++-------- .../kickstart/servlet/HttpRequestHandler.java | 4 ++-- .../servlet/HttpRequestHandlerImpl.java | 4 ++-- .../kickstart/servlet/HttpRequestInvoker.java | 4 ++-- .../servlet/HttpRequestInvokerImpl.java | 6 +++--- .../kickstart/servlet/ListenerHandler.java | 4 ++-- .../servlet/OsgiGraphQLHttpServlet.java | 2 +- .../kickstart/servlet/QueryResponseWriter.java | 4 ++-- .../SingleAsynchronousQueryResponseWriter.java | 6 +++--- .../servlet/SingleQueryResponseWriter.java | 4 ++-- .../servlet/SubscriptionAsyncListener.java | 4 ++-- .../kickstart/servlet/apollo/ApolloScalars.java | 2 +- ...olloWebSocketSubscriptionProtocolFactory.java | 2 +- .../ApolloWebSocketSubscriptionSession.java | 2 +- .../cache/BufferedHttpServletResponse.java | 8 ++++---- .../kickstart/servlet/cache/CacheReader.java | 4 ++-- .../servlet/cache/CachingHttpRequestInvoker.java | 4 ++-- .../cache/CachingQueryResponseWriter.java | 4 ++-- .../cache/GraphQLResponseCacheManager.java | 2 +- .../DefaultGraphQLSchemaServletProvider.java | 4 ++-- .../config/GraphQLSchemaServletProvider.java | 4 ++-- .../context/DefaultGraphQLServletContext.java | 6 +++--- .../DefaultGraphQLServletContextBuilder.java | 8 ++++---- .../context/DefaultGraphQLWebSocketContext.java | 4 ++-- .../servlet/context/GraphQLServletContext.java | 6 +++--- .../context/GraphQLServletContextBuilder.java | 8 ++++---- .../servlet/context/GraphQLWebSocketContext.java | 4 ++-- .../core/DefaultGraphQLRootObjectBuilder.java | 4 ++-- .../servlet/core/GraphQLServletListener.java | 4 ++-- .../core/GraphQLServletRootObjectBuilder.java | 4 ++-- .../servlet/core/internal/VariableMapper.java | 2 +- .../servlet/input/BatchInputPreProcessor.java | 4 ++-- .../input/GraphQLInvocationInputFactory.java | 8 ++++---- .../input/NoOpBatchInputPreProcessor.java | 4 ++-- .../FallbackSubscriptionProtocolFactory.java | 2 +- .../subscriptions/WebSocketSendSubscriber.java | 2 +- .../WebSocketSubscriptionProtocolFactory.java | 2 +- .../WebSocketSubscriptionSession.java | 2 +- .../BatchedQueryResponseWriterTest.groovy | 6 +++--- .../servlet/DataLoaderDispatchingSpec.groovy | 8 ++++---- ...gleAsynchronousQueryResponseWriterTest.groovy | 4 ++-- .../servlet/SingleQueryResponseWriterTest.groovy | 6 +++--- .../servlet/TestBatchInputPreProcessor.java | 4 ++-- .../kickstart/servlet/TestMultipartPart.groovy | 2 +- .../servlet/cache/CacheReaderTest.groovy | 6 +++--- .../cache/CachingHttpRequestInvokerTest.groovy | 6 +++--- 56 files changed, 131 insertions(+), 130 deletions(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 610419bc..0afaea08 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -16,8 +16,9 @@ dependencies { api(project(':graphql-java-kickstart')) // Servlet - api 'javax.servlet:javax.servlet-api:4.0.1' - api 'javax.websocket:javax.websocket-api:1.1' + api 'jakarta.servlet:jakarta.servlet-api:6.0.0' + api 'jakarta.websocket:jakarta.websocket-api:2.1.0' + api 'jakarta.websocket:jakarta.websocket-client-api:2.1.0' implementation "org.slf4j:slf4j-api:$LIB_SLF4J_VER" // OSGi @@ -31,7 +32,7 @@ dependencies { testImplementation 'io.github.graphql-java:graphql-java-annotations:8.3' // Unit testing - testImplementation "org.codehaus.groovy:groovy-all:3.0.13" + testImplementation "org.apache.groovy:groovy-all:4.0.6" testImplementation "org.spockframework:spock-core:2.1-groovy-3.0" testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java index f9fdae46..303a6506 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java @@ -8,10 +8,10 @@ import graphql.kickstart.servlet.core.GraphQLMBean; import graphql.kickstart.servlet.core.GraphQLServletListener; import graphql.schema.GraphQLFieldDefinition; -import javax.servlet.Servlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.Servlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; /** @author Andrew Potter */ diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java index 7d39ad89..3963db5a 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import javax.servlet.AsyncEvent; -import javax.servlet.AsyncListener; +import jakarta.servlet.AsyncEvent; +import jakarta.servlet.AsyncListener; interface AsyncTimeoutListener extends AsyncListener { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java index c3a767e5..6bd8fcd3 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java @@ -6,8 +6,8 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java index 48c2d3de..55239fb2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java index ccfe9a99..cc22022c 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java @@ -6,7 +6,7 @@ import java.io.Writer; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicReference; -import javax.servlet.AsyncContext; +import jakarta.servlet.AsyncContext; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java index 6c8c7464..51e4e606 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java @@ -11,8 +11,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java index 7944de8a..42f26246 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java @@ -5,9 +5,9 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import graphql.kickstart.servlet.input.GraphQLInvocationInputFactory; import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; interface GraphQLInvocationInputParser { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java index ae43df26..a7f06a0c 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java @@ -18,10 +18,10 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.Part; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java index 2aa78dcb..22dc8bd2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java @@ -10,8 +10,8 @@ import graphql.kickstart.servlet.input.GraphQLInvocationInputFactory; import java.io.IOException; import java.util.List; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; class GraphQLPostInvocationInputParser extends AbstractGraphQLInvocationInputParser { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java index 7ff86408..cd22aede 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java @@ -29,14 +29,14 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import java.util.stream.Stream; -import javax.websocket.CloseReason; -import javax.websocket.Endpoint; -import javax.websocket.EndpointConfig; -import javax.websocket.HandshakeResponse; -import javax.websocket.MessageHandler; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; -import javax.websocket.server.ServerEndpointConfig; +import jakarta.websocket.CloseReason; +import jakarta.websocket.Endpoint; +import jakarta.websocket.EndpointConfig; +import jakarta.websocket.HandshakeResponse; +import jakarta.websocket.MessageHandler; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; +import jakarta.websocket.server.ServerEndpointConfig; import lombok.extern.slf4j.Slf4j; /** diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java index d0e4783b..4be54ee2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public interface HttpRequestHandler { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java index e99a4058..697a120e 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java @@ -4,8 +4,8 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import java.io.IOException; import java.nio.charset.StandardCharsets; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java index 0fbdf7f6..33281b02 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import graphql.kickstart.execution.input.GraphQLInvocationInput; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public interface HttpRequestInvoker { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java index 8f24c3ca..e6c0e462 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java @@ -22,9 +22,9 @@ import java.util.concurrent.CompletionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; -import javax.servlet.AsyncContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java index 6fe9df83..6ffab4ff 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java @@ -9,8 +9,8 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java index 435075ed..85f2e252 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java @@ -31,7 +31,7 @@ import org.osgi.service.metatype.annotations.Designate; @Component( - service = {javax.servlet.http.HttpServlet.class, javax.servlet.Servlet.class}, + service = {jakarta.servlet.http.HttpServlet.class, jakarta.servlet.Servlet.class}, property = {"service.description=GraphQL HTTP Servlet"}) @Designate(ocd = OsgiGraphQLHttpServletConfiguration.class, factory = true) public class OsgiGraphQLHttpServlet extends AbstractGraphQLHttpServlet { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java index f72425d7..7c657e44 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public interface QueryResponseWriter { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java index a6ac588a..bf0dffdd 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java @@ -6,9 +6,9 @@ import java.util.List; import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; -import javax.servlet.AsyncContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.Getter; import lombok.RequiredArgsConstructor; import org.reactivestreams.Publisher; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java index 86568d29..dad94705 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java @@ -4,8 +4,8 @@ import graphql.kickstart.execution.GraphQLObjectMapper; import java.io.IOException; import java.nio.charset.StandardCharsets; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java index 963154af..62a2d0c9 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.util.concurrent.atomic.AtomicReference; -import javax.servlet.AsyncEvent; -import javax.servlet.AsyncListener; +import jakarta.servlet.AsyncEvent; +import jakarta.servlet.AsyncListener; import lombok.RequiredArgsConstructor; import org.reactivestreams.Subscription; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java index 42e98c6b..71751f56 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java @@ -5,7 +5,7 @@ import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; import graphql.schema.GraphQLScalarType; -import javax.servlet.http.Part; +import jakarta.servlet.http.Part; import lombok.AccessLevel; import lombok.NoArgsConstructor; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java index 874d9bf8..c5d4396f 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java @@ -10,7 +10,7 @@ import graphql.kickstart.servlet.subscriptions.WebSocketSubscriptionProtocolFactory; import java.time.Duration; import java.util.Collection; -import javax.websocket.Session; +import jakarta.websocket.Session; public class ApolloWebSocketSubscriptionProtocolFactory extends ApolloSubscriptionProtocolFactory implements WebSocketSubscriptionProtocolFactory { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java index b083457f..85f08211 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java @@ -4,7 +4,7 @@ import graphql.kickstart.execution.subscriptions.apollo.ApolloSubscriptionSession; import graphql.kickstart.servlet.subscriptions.WebSocketSubscriptionSession; import java.util.Map; -import javax.websocket.Session; +import jakarta.websocket.Session; public class ApolloWebSocketSubscriptionSession extends ApolloSubscriptionSession { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java index 8f9c868f..9d633186 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java @@ -5,10 +5,10 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletResponseWrapper; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.WriteListener; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponseWrapper; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java index 714a8069..4c3fa2f2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java @@ -4,8 +4,8 @@ import graphql.kickstart.servlet.HttpRequestHandler; import java.io.IOException; import java.nio.charset.StandardCharsets; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java index ba0d8bda..a5f5d98c 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java @@ -8,8 +8,8 @@ import graphql.kickstart.servlet.HttpRequestInvokerImpl; import graphql.kickstart.servlet.ListenerHandler; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java index e3bc813b..b73e8442 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java @@ -3,8 +3,8 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import graphql.kickstart.servlet.QueryResponseWriter; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java index ffb47579..c7c258c6 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java @@ -2,7 +2,7 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import java.util.Optional; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; public interface GraphQLResponseCacheManager { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java index c38af79a..4e633783 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java @@ -2,8 +2,8 @@ import graphql.kickstart.execution.config.DefaultGraphQLSchemaProvider; import graphql.schema.GraphQLSchema; -import javax.servlet.http.HttpServletRequest; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.websocket.server.HandshakeRequest; /** @author Andrew Potter */ public class DefaultGraphQLSchemaServletProvider extends DefaultGraphQLSchemaProvider diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java index 3d80afc2..9700dcd2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java @@ -2,8 +2,8 @@ import graphql.kickstart.execution.config.GraphQLSchemaProvider; import graphql.schema.GraphQLSchema; -import javax.servlet.http.HttpServletRequest; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.websocket.server.HandshakeRequest; public interface GraphQLSchemaServletProvider extends GraphQLSchemaProvider { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java index 9c366dd1..834c23d1 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java @@ -4,9 +4,9 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.Part; import lombok.SneakyThrows; import org.dataloader.DataLoaderRegistry; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java index c7a1dad4..cbb88975 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java @@ -4,10 +4,10 @@ import graphql.kickstart.execution.context.GraphQLKickstartContext; import java.util.HashMap; import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; /** Returns an empty context. */ public class DefaultGraphQLServletContextBuilder extends DefaultGraphQLContextBuilder diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java index 32beb4c2..1b115d4d 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.context; import graphql.kickstart.execution.context.DefaultGraphQLContext; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; import org.dataloader.DataLoaderRegistry; /** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */ diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java index 9fc42d0c..fd6cd978 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java @@ -3,9 +3,9 @@ import graphql.kickstart.execution.context.GraphQLKickstartContext; import java.util.List; import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.Part; /** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */ public interface GraphQLServletContext extends GraphQLKickstartContext { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java index 6c0ee4b2..55184124 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java @@ -2,10 +2,10 @@ import graphql.kickstart.execution.context.GraphQLKickstartContext; import graphql.kickstart.execution.context.GraphQLContextBuilder; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; public interface GraphQLServletContextBuilder extends GraphQLContextBuilder { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java index d244eb8d..f74cd81e 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.context; import graphql.kickstart.execution.context.GraphQLKickstartContext; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; /** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */ public interface GraphQLWebSocketContext extends GraphQLKickstartContext { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java index 284dfa2e..024bb398 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.core; import graphql.kickstart.execution.StaticGraphQLRootObjectBuilder; -import javax.servlet.http.HttpServletRequest; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.websocket.server.HandshakeRequest; public class DefaultGraphQLRootObjectBuilder extends StaticGraphQLRootObjectBuilder implements GraphQLServletRootObjectBuilder { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java index 7c9a7f79..5e99a506 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java @@ -1,7 +1,7 @@ package graphql.kickstart.servlet.core; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** @author Andrew Potter */ public interface GraphQLServletListener { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java index 32de074b..dd379ec6 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.core; import graphql.kickstart.execution.GraphQLRootObjectBuilder; -import javax.servlet.http.HttpServletRequest; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.websocket.server.HandshakeRequest; public interface GraphQLServletRootObjectBuilder extends GraphQLRootObjectBuilder { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java index 1a4bc5a6..707e6ab2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java @@ -3,7 +3,7 @@ import java.util.List; import java.util.Map; import java.util.regex.Pattern; -import javax.servlet.http.Part; +import jakarta.servlet.http.Part; public class VariableMapper { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java index d3730636..8cde1cf2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.input; import graphql.kickstart.execution.input.GraphQLBatchedInvocationInput; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public interface BatchInputPreProcessor { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java index 82b57710..eb72fac4 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java @@ -16,10 +16,10 @@ import graphql.schema.GraphQLSchema; import java.util.List; import java.util.function.Supplier; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; /** @author Andrew Potter */ public class GraphQLInvocationInputFactory implements GraphQLSubscriptionInvocationInputFactory { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java index 0d117027..f871a8c0 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.input; import graphql.kickstart.execution.input.GraphQLBatchedInvocationInput; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** A default BatchInputPreProcessor that returns the input. */ public class NoOpBatchInputPreProcessor implements BatchInputPreProcessor { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java index 43cacd0f..b58469af 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java @@ -6,7 +6,7 @@ import graphql.kickstart.execution.subscriptions.SubscriptionProtocolFactory; import graphql.kickstart.execution.subscriptions.SubscriptionSession; import java.util.function.Consumer; -import javax.websocket.Session; +import jakarta.websocket.Session; /** @author Andrew Potter */ public class FallbackSubscriptionProtocolFactory extends SubscriptionProtocolFactory diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java index d65fd357..95cab618 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java @@ -2,7 +2,7 @@ import java.io.IOException; import java.util.concurrent.atomic.AtomicReference; -import javax.websocket.Session; +import jakarta.websocket.Session; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.reactivestreams.Subscriber; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java index c9b5f086..55b42b05 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java @@ -2,7 +2,7 @@ import graphql.kickstart.execution.subscriptions.SubscriptionSession; import java.util.function.Consumer; -import javax.websocket.Session; +import jakarta.websocket.Session; public interface WebSocketSubscriptionProtocolFactory { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java index f41c0dc3..5da0071a 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java @@ -3,7 +3,7 @@ import graphql.kickstart.execution.subscriptions.DefaultSubscriptionSession; import graphql.kickstart.execution.subscriptions.GraphQLSubscriptionMapper; import java.util.Map; -import javax.websocket.Session; +import jakarta.websocket.Session; public class WebSocketSubscriptionSession extends DefaultSubscriptionSession { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy index f9a9b369..2e2eebde 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy @@ -6,9 +6,9 @@ import graphql.kickstart.execution.GraphQLObjectMapper import spock.lang.Specification import spock.lang.Unroll -import javax.servlet.ServletOutputStream -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import jakarta.servlet.ServletOutputStream +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse import java.nio.charset.StandardCharsets class BatchedQueryResponseWriterTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy index 6ab5f38c..58003651 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy @@ -21,10 +21,10 @@ import org.springframework.mock.web.MockHttpServletResponse import spock.lang.Shared import spock.lang.Specification -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse -import javax.websocket.Session -import javax.websocket.server.HandshakeRequest +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse +import jakarta.websocket.Session +import jakarta.websocket.server.HandshakeRequest import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage import java.util.concurrent.atomic.AtomicInteger diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy index 7a452b18..392146b5 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy @@ -5,8 +5,8 @@ import graphql.kickstart.execution.GraphQLObjectMapper import org.springframework.mock.web.MockAsyncContext import spock.lang.Specification -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse class SingleAsynchronousQueryResponseWriterTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy index 0bffe1bb..9640fa5c 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy @@ -6,9 +6,9 @@ import graphql.kickstart.execution.GraphQLObjectMapper import spock.lang.Specification import spock.lang.Unroll -import javax.servlet.ServletOutputStream -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import jakarta.servlet.ServletOutputStream +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse import java.nio.charset.StandardCharsets class SingleQueryResponseWriterTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java index b0ec39f8..d0f1894a 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java @@ -3,8 +3,8 @@ import graphql.kickstart.execution.input.GraphQLBatchedInvocationInput; import graphql.kickstart.servlet.input.BatchInputPreProcessResult; import graphql.kickstart.servlet.input.BatchInputPreProcessor; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public class TestBatchInputPreProcessor implements BatchInputPreProcessor { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy index 96cc4062..2a48134f 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy @@ -1,6 +1,6 @@ package graphql.kickstart.servlet -import javax.servlet.http.Part +import jakarta.servlet.http.Part /** * @author Andrew Potter diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy index 3d8f5601..947e747d 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy @@ -3,9 +3,9 @@ package graphql.kickstart.servlet.cache import graphql.kickstart.execution.input.GraphQLInvocationInput import spock.lang.Specification -import javax.servlet.ServletOutputStream -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import jakarta.servlet.ServletOutputStream +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse class CacheReaderTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy index 9a486036..bd065bc9 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy @@ -11,9 +11,9 @@ import graphql.kickstart.servlet.HttpRequestInvoker import graphql.kickstart.servlet.ListenerHandler import spock.lang.Specification -import javax.servlet.ServletOutputStream -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import jakarta.servlet.ServletOutputStream +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse import java.util.concurrent.CompletableFuture class CachingHttpRequestInvokerTest extends Specification { From 2e8b8128e02978776dea08e32e70074fd26a6c2f Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Thu, 17 Nov 2022 10:25:14 +0100 Subject: [PATCH 13/62] jdk 8 -> jdk 11 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index f28bfeb2..7f99bbbb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,5 +11,5 @@ LIB_GRAPHQL_JAVA_VER=19.2 LIB_JACKSON_VER=2.13.4 LIB_SLF4J_VER=2.0.2 LIB_LOMBOK_VER=1.18.24 -SOURCE_COMPATIBILITY=1.8 -TARGET_COMPATIBILITY=1.8 +SOURCE_COMPATIBILITY=11 +TARGET_COMPATIBILITY=11 From 4a6ff2490aaaef1229703f27a3a09f202a54de99 Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Fri, 18 Nov 2022 16:41:51 +0100 Subject: [PATCH 14/62] jdk 8 => jdk 11 --- examples/osgi/pom.xml | 4 ++-- graphql-java-servlet/build.gradle | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) 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-SNAPSHOT 16.1 4.2.10 - 1.8 - 1.8 +u 11 + 11 10.1.0 diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 0afaea08..e628682e 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -33,7 +33,7 @@ dependencies { // Unit testing testImplementation "org.apache.groovy:groovy-all:4.0.6" - testImplementation "org.spockframework:spock-core:2.1-groovy-3.0" + testImplementation "org.spockframework:spock-core:2.3-groovy-4.0" testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" From b87e5c14b667c8e1b561a6614fbf884f90df4851 Mon Sep 17 00:00:00 2001 From: oliemansm Date: Fri, 2 Dec 2022 19:27:10 +0100 Subject: [PATCH 15/62] chore: update java to v17 --- .github/workflows/pull-request.yml | 2 +- .github/workflows/release.yml | 8 ++++---- .github/workflows/snapshot.yml | 12 ++++++------ gradle.properties | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 5be6997d..8878518d 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: [ 17 ] needs: validation runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7e8dcbf4..714b21c1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,11 +20,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 8 + java-version: 17 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 8 + java-version: 17 with: path: | ~/.gradle/caches @@ -48,11 +48,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 8 + java-version: 17 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 8 + java-version: 17 with: path: | ~/.gradle/caches diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index 5fc43bba..8993506c 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -23,11 +23,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 8 + java-version: 17 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 8 + java-version: 17 with: path: | ~/.gradle/caches @@ -51,11 +51,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 8 + java-version: 17 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 8 + java-version: 17 with: path: | ~/.gradle/caches @@ -80,11 +80,11 @@ jobs: - uses: actions/checkout@v3 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 11 + java-version: 17 - name: Cache SonarCloud packages uses: actions/cache@v3 with: diff --git a/gradle.properties b/gradle.properties index 9e956244..2ad9f474 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=14.0.1-SNAPSHOT +version=15.0.0-SNAPSHOT group=com.graphql-java-kickstart PROJECT_NAME=graphql-java-servlet PROJECT_DESC=GraphQL Java Kickstart From 6c312cc41c96412d96593e833582d58cdcbc6de7 Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Fri, 2 Dec 2022 19:58:28 +0100 Subject: [PATCH 16/62] jdk17 --- gradle.properties | 4 ++-- graphql-java-servlet/build.gradle | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7f99bbbb..dc0b44b4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,5 +11,5 @@ LIB_GRAPHQL_JAVA_VER=19.2 LIB_JACKSON_VER=2.13.4 LIB_SLF4J_VER=2.0.2 LIB_LOMBOK_VER=1.18.24 -SOURCE_COMPATIBILITY=11 -TARGET_COMPATIBILITY=11 +SOURCE_COMPATIBILITY=17 +TARGET_COMPATIBILITY=17 diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index e628682e..d41a9c04 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -37,7 +37,7 @@ dependencies { testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" - testImplementation 'org.springframework:spring-test:5.3.23' - testRuntimeOnly 'org.springframework:spring-web:5.3.23' + testImplementation 'org.springframework:spring-test:6.0.2' + testRuntimeOnly 'org.springframework:spring-web:6.0.2' testImplementation 'com.google.guava:guava:31.1-jre' } From 12055b03bb4049395ba05e317533e0874a005b51 Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Fri, 2 Dec 2022 22:54:42 +0100 Subject: [PATCH 17/62] fix tests, just call init() without arg instead of init(null) --- .../kickstart/servlet/AbstractGraphQLHttpServletSpec.groovy | 2 +- .../test/groovy/graphql/kickstart/servlet/TestUtils.groovy | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/AbstractGraphQLHttpServletSpec.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/AbstractGraphQLHttpServletSpec.groovy index a7f9e5da..dde7cb46 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/AbstractGraphQLHttpServletSpec.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/AbstractGraphQLHttpServletSpec.groovy @@ -1120,7 +1120,7 @@ b throw new TestException() }.build()).build() servlet = GraphQLHttpServlet.with(configuration) - servlet.init(null) + servlet.init() request.setPathInfo('/schema.json') diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestUtils.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestUtils.groovy index 797f5048..684b2cc2 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestUtils.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestUtils.groovy @@ -62,7 +62,7 @@ class TestUtils { .with(contextBuilder) .with(executor()) .build()) - servlet.init(null) + servlet.init() return servlet } @@ -86,7 +86,7 @@ class TestUtils { listeners ) ) - servlet.init(null) + servlet.init() return servlet } From d293821b32d12399d6faaa399edad8f3cc061540 Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Tue, 15 Nov 2022 21:00:54 +0100 Subject: [PATCH 18/62] chore: javax.servlet -> jakarta.servlet:6.0 --- graphql-java-servlet/build.gradle | 7 ++++--- .../servlet/AbstractGraphQLHttpServlet.java | 8 ++++---- .../kickstart/servlet/AsyncTimeoutListener.java | 4 ++-- .../servlet/BatchedQueryResponseWriter.java | 4 ++-- .../servlet/ErrorQueryResponseWriter.java | 4 ++-- .../servlet/ExecutionResultSubscriber.java | 2 +- .../servlet/GraphQLGetInvocationInputParser.java | 4 ++-- .../servlet/GraphQLInvocationInputParser.java | 6 +++--- .../GraphQLMultipartInvocationInputParser.java | 8 ++++---- .../GraphQLPostInvocationInputParser.java | 4 ++-- .../servlet/GraphQLWebsocketServlet.java | 16 ++++++++-------- .../kickstart/servlet/HttpRequestHandler.java | 4 ++-- .../servlet/HttpRequestHandlerImpl.java | 4 ++-- .../kickstart/servlet/HttpRequestInvoker.java | 4 ++-- .../servlet/HttpRequestInvokerImpl.java | 6 +++--- .../kickstart/servlet/ListenerHandler.java | 4 ++-- .../servlet/OsgiGraphQLHttpServlet.java | 2 +- .../kickstart/servlet/QueryResponseWriter.java | 4 ++-- .../SingleAsynchronousQueryResponseWriter.java | 6 +++--- .../servlet/SingleQueryResponseWriter.java | 4 ++-- .../servlet/SubscriptionAsyncListener.java | 4 ++-- .../kickstart/servlet/apollo/ApolloScalars.java | 2 +- ...olloWebSocketSubscriptionProtocolFactory.java | 2 +- .../ApolloWebSocketSubscriptionSession.java | 2 +- .../cache/BufferedHttpServletResponse.java | 8 ++++---- .../kickstart/servlet/cache/CacheReader.java | 4 ++-- .../servlet/cache/CachingHttpRequestInvoker.java | 4 ++-- .../cache/CachingQueryResponseWriter.java | 4 ++-- .../cache/GraphQLResponseCacheManager.java | 2 +- .../DefaultGraphQLSchemaServletProvider.java | 4 ++-- .../config/GraphQLSchemaServletProvider.java | 4 ++-- .../context/DefaultGraphQLServletContext.java | 6 +++--- .../DefaultGraphQLServletContextBuilder.java | 8 ++++---- .../context/DefaultGraphQLWebSocketContext.java | 4 ++-- .../servlet/context/GraphQLServletContext.java | 6 +++--- .../context/GraphQLServletContextBuilder.java | 8 ++++---- .../servlet/context/GraphQLWebSocketContext.java | 4 ++-- .../core/DefaultGraphQLRootObjectBuilder.java | 4 ++-- .../servlet/core/GraphQLServletListener.java | 4 ++-- .../core/GraphQLServletRootObjectBuilder.java | 4 ++-- .../servlet/core/internal/VariableMapper.java | 2 +- .../servlet/input/BatchInputPreProcessor.java | 4 ++-- .../input/GraphQLInvocationInputFactory.java | 8 ++++---- .../input/NoOpBatchInputPreProcessor.java | 4 ++-- .../FallbackSubscriptionProtocolFactory.java | 2 +- .../subscriptions/WebSocketSendSubscriber.java | 2 +- .../WebSocketSubscriptionProtocolFactory.java | 2 +- .../WebSocketSubscriptionSession.java | 2 +- .../BatchedQueryResponseWriterTest.groovy | 6 +++--- .../servlet/DataLoaderDispatchingSpec.groovy | 8 ++++---- ...gleAsynchronousQueryResponseWriterTest.groovy | 4 ++-- .../servlet/SingleQueryResponseWriterTest.groovy | 6 +++--- .../servlet/TestBatchInputPreProcessor.java | 4 ++-- .../kickstart/servlet/TestMultipartPart.groovy | 2 +- .../servlet/cache/CacheReaderTest.groovy | 6 +++--- .../cache/CachingHttpRequestInvokerTest.groovy | 6 +++--- 56 files changed, 131 insertions(+), 130 deletions(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 610419bc..0afaea08 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -16,8 +16,9 @@ dependencies { api(project(':graphql-java-kickstart')) // Servlet - api 'javax.servlet:javax.servlet-api:4.0.1' - api 'javax.websocket:javax.websocket-api:1.1' + api 'jakarta.servlet:jakarta.servlet-api:6.0.0' + api 'jakarta.websocket:jakarta.websocket-api:2.1.0' + api 'jakarta.websocket:jakarta.websocket-client-api:2.1.0' implementation "org.slf4j:slf4j-api:$LIB_SLF4J_VER" // OSGi @@ -31,7 +32,7 @@ dependencies { testImplementation 'io.github.graphql-java:graphql-java-annotations:8.3' // Unit testing - testImplementation "org.codehaus.groovy:groovy-all:3.0.13" + testImplementation "org.apache.groovy:groovy-all:4.0.6" testImplementation "org.spockframework:spock-core:2.1-groovy-3.0" testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java index f9fdae46..303a6506 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java @@ -8,10 +8,10 @@ import graphql.kickstart.servlet.core.GraphQLMBean; import graphql.kickstart.servlet.core.GraphQLServletListener; import graphql.schema.GraphQLFieldDefinition; -import javax.servlet.Servlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.Servlet; +import jakarta.servlet.http.HttpServlet; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; /** @author Andrew Potter */ diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java index 7d39ad89..3963db5a 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import javax.servlet.AsyncEvent; -import javax.servlet.AsyncListener; +import jakarta.servlet.AsyncEvent; +import jakarta.servlet.AsyncListener; interface AsyncTimeoutListener extends AsyncListener { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java index c3a767e5..6bd8fcd3 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java @@ -6,8 +6,8 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java index 48c2d3de..55239fb2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java index ccfe9a99..cc22022c 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java @@ -6,7 +6,7 @@ import java.io.Writer; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicReference; -import javax.servlet.AsyncContext; +import jakarta.servlet.AsyncContext; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java index 6c8c7464..51e4e606 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java @@ -11,8 +11,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java index 7944de8a..42f26246 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java @@ -5,9 +5,9 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import graphql.kickstart.servlet.input.GraphQLInvocationInputFactory; import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; interface GraphQLInvocationInputParser { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java index ae43df26..a7f06a0c 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java @@ -18,10 +18,10 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; +import jakarta.servlet.ServletException; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.Part; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java index 2aa78dcb..22dc8bd2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java @@ -10,8 +10,8 @@ import graphql.kickstart.servlet.input.GraphQLInvocationInputFactory; import java.io.IOException; import java.util.List; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; class GraphQLPostInvocationInputParser extends AbstractGraphQLInvocationInputParser { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java index 7ff86408..cd22aede 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java @@ -29,14 +29,14 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import java.util.stream.Stream; -import javax.websocket.CloseReason; -import javax.websocket.Endpoint; -import javax.websocket.EndpointConfig; -import javax.websocket.HandshakeResponse; -import javax.websocket.MessageHandler; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; -import javax.websocket.server.ServerEndpointConfig; +import jakarta.websocket.CloseReason; +import jakarta.websocket.Endpoint; +import jakarta.websocket.EndpointConfig; +import jakarta.websocket.HandshakeResponse; +import jakarta.websocket.MessageHandler; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; +import jakarta.websocket.server.ServerEndpointConfig; import lombok.extern.slf4j.Slf4j; /** diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java index d0e4783b..4be54ee2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public interface HttpRequestHandler { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java index e99a4058..697a120e 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java @@ -4,8 +4,8 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import java.io.IOException; import java.nio.charset.StandardCharsets; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java index 0fbdf7f6..33281b02 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import graphql.kickstart.execution.input.GraphQLInvocationInput; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public interface HttpRequestInvoker { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java index 8f24c3ca..e6c0e462 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java @@ -22,9 +22,9 @@ import java.util.concurrent.CompletionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; -import javax.servlet.AsyncContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java index 6fe9df83..6ffab4ff 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java @@ -9,8 +9,8 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java index 435075ed..85f2e252 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java @@ -31,7 +31,7 @@ import org.osgi.service.metatype.annotations.Designate; @Component( - service = {javax.servlet.http.HttpServlet.class, javax.servlet.Servlet.class}, + service = {jakarta.servlet.http.HttpServlet.class, jakarta.servlet.Servlet.class}, property = {"service.description=GraphQL HTTP Servlet"}) @Designate(ocd = OsgiGraphQLHttpServletConfiguration.class, factory = true) public class OsgiGraphQLHttpServlet extends AbstractGraphQLHttpServlet { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java index f72425d7..7c657e44 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public interface QueryResponseWriter { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java index a6ac588a..bf0dffdd 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java @@ -6,9 +6,9 @@ import java.util.List; import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; -import javax.servlet.AsyncContext; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.AsyncContext; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.Getter; import lombok.RequiredArgsConstructor; import org.reactivestreams.Publisher; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java index 86568d29..dad94705 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java @@ -4,8 +4,8 @@ import graphql.kickstart.execution.GraphQLObjectMapper; import java.io.IOException; import java.nio.charset.StandardCharsets; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java index 963154af..62a2d0c9 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.util.concurrent.atomic.AtomicReference; -import javax.servlet.AsyncEvent; -import javax.servlet.AsyncListener; +import jakarta.servlet.AsyncEvent; +import jakarta.servlet.AsyncListener; import lombok.RequiredArgsConstructor; import org.reactivestreams.Subscription; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java index 42e98c6b..71751f56 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java @@ -5,7 +5,7 @@ import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; import graphql.schema.GraphQLScalarType; -import javax.servlet.http.Part; +import jakarta.servlet.http.Part; import lombok.AccessLevel; import lombok.NoArgsConstructor; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java index 874d9bf8..c5d4396f 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java @@ -10,7 +10,7 @@ import graphql.kickstart.servlet.subscriptions.WebSocketSubscriptionProtocolFactory; import java.time.Duration; import java.util.Collection; -import javax.websocket.Session; +import jakarta.websocket.Session; public class ApolloWebSocketSubscriptionProtocolFactory extends ApolloSubscriptionProtocolFactory implements WebSocketSubscriptionProtocolFactory { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java index b083457f..85f08211 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java @@ -4,7 +4,7 @@ import graphql.kickstart.execution.subscriptions.apollo.ApolloSubscriptionSession; import graphql.kickstart.servlet.subscriptions.WebSocketSubscriptionSession; import java.util.Map; -import javax.websocket.Session; +import jakarta.websocket.Session; public class ApolloWebSocketSubscriptionSession extends ApolloSubscriptionSession { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java index 8f9c868f..9d633186 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java @@ -5,10 +5,10 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; -import javax.servlet.ServletOutputStream; -import javax.servlet.WriteListener; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletResponseWrapper; +import jakarta.servlet.ServletOutputStream; +import jakarta.servlet.WriteListener; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletResponseWrapper; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java index 714a8069..4c3fa2f2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java @@ -4,8 +4,8 @@ import graphql.kickstart.servlet.HttpRequestHandler; import java.io.IOException; import java.nio.charset.StandardCharsets; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java index ba0d8bda..a5f5d98c 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java @@ -8,8 +8,8 @@ import graphql.kickstart.servlet.HttpRequestInvokerImpl; import graphql.kickstart.servlet.ListenerHandler; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java index e3bc813b..b73e8442 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java @@ -3,8 +3,8 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import graphql.kickstart.servlet.QueryResponseWriter; import java.io.IOException; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java index ffb47579..c7c258c6 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java @@ -2,7 +2,7 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import java.util.Optional; -import javax.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletRequest; public interface GraphQLResponseCacheManager { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java index c38af79a..4e633783 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java @@ -2,8 +2,8 @@ import graphql.kickstart.execution.config.DefaultGraphQLSchemaProvider; import graphql.schema.GraphQLSchema; -import javax.servlet.http.HttpServletRequest; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.websocket.server.HandshakeRequest; /** @author Andrew Potter */ public class DefaultGraphQLSchemaServletProvider extends DefaultGraphQLSchemaProvider diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java index 3d80afc2..9700dcd2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java @@ -2,8 +2,8 @@ import graphql.kickstart.execution.config.GraphQLSchemaProvider; import graphql.schema.GraphQLSchema; -import javax.servlet.http.HttpServletRequest; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.websocket.server.HandshakeRequest; public interface GraphQLSchemaServletProvider extends GraphQLSchemaProvider { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java index 9c366dd1..834c23d1 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java @@ -4,9 +4,9 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.Part; import lombok.SneakyThrows; import org.dataloader.DataLoaderRegistry; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java index c7a1dad4..cbb88975 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java @@ -4,10 +4,10 @@ import graphql.kickstart.execution.context.GraphQLKickstartContext; import java.util.HashMap; import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; /** Returns an empty context. */ public class DefaultGraphQLServletContextBuilder extends DefaultGraphQLContextBuilder diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java index 32beb4c2..1b115d4d 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.context; import graphql.kickstart.execution.context.DefaultGraphQLContext; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; import org.dataloader.DataLoaderRegistry; /** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */ diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java index 9fc42d0c..fd6cd978 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java @@ -3,9 +3,9 @@ import graphql.kickstart.execution.context.GraphQLKickstartContext; import java.util.List; import java.util.Map; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.Part; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.servlet.http.Part; /** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */ public interface GraphQLServletContext extends GraphQLKickstartContext { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java index 6c0ee4b2..55184124 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java @@ -2,10 +2,10 @@ import graphql.kickstart.execution.context.GraphQLKickstartContext; import graphql.kickstart.execution.context.GraphQLContextBuilder; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; public interface GraphQLServletContextBuilder extends GraphQLContextBuilder { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java index d244eb8d..f74cd81e 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.context; import graphql.kickstart.execution.context.GraphQLKickstartContext; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; /** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */ public interface GraphQLWebSocketContext extends GraphQLKickstartContext { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java index 284dfa2e..024bb398 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.core; import graphql.kickstart.execution.StaticGraphQLRootObjectBuilder; -import javax.servlet.http.HttpServletRequest; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.websocket.server.HandshakeRequest; public class DefaultGraphQLRootObjectBuilder extends StaticGraphQLRootObjectBuilder implements GraphQLServletRootObjectBuilder { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java index 7c9a7f79..5e99a506 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java @@ -1,7 +1,7 @@ package graphql.kickstart.servlet.core; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** @author Andrew Potter */ public interface GraphQLServletListener { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java index 32de074b..dd379ec6 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.core; import graphql.kickstart.execution.GraphQLRootObjectBuilder; -import javax.servlet.http.HttpServletRequest; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.websocket.server.HandshakeRequest; public interface GraphQLServletRootObjectBuilder extends GraphQLRootObjectBuilder { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java index 1a4bc5a6..707e6ab2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java @@ -3,7 +3,7 @@ import java.util.List; import java.util.Map; import java.util.regex.Pattern; -import javax.servlet.http.Part; +import jakarta.servlet.http.Part; public class VariableMapper { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java index d3730636..8cde1cf2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.input; import graphql.kickstart.execution.input.GraphQLBatchedInvocationInput; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public interface BatchInputPreProcessor { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java index 82b57710..eb72fac4 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java @@ -16,10 +16,10 @@ import graphql.schema.GraphQLSchema; import java.util.List; import java.util.function.Supplier; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.websocket.Session; -import javax.websocket.server.HandshakeRequest; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; +import jakarta.websocket.Session; +import jakarta.websocket.server.HandshakeRequest; /** @author Andrew Potter */ public class GraphQLInvocationInputFactory implements GraphQLSubscriptionInvocationInputFactory { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java index 0d117027..f871a8c0 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.input; import graphql.kickstart.execution.input.GraphQLBatchedInvocationInput; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; /** A default BatchInputPreProcessor that returns the input. */ public class NoOpBatchInputPreProcessor implements BatchInputPreProcessor { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java index 43cacd0f..b58469af 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java @@ -6,7 +6,7 @@ import graphql.kickstart.execution.subscriptions.SubscriptionProtocolFactory; import graphql.kickstart.execution.subscriptions.SubscriptionSession; import java.util.function.Consumer; -import javax.websocket.Session; +import jakarta.websocket.Session; /** @author Andrew Potter */ public class FallbackSubscriptionProtocolFactory extends SubscriptionProtocolFactory diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java index d65fd357..95cab618 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java @@ -2,7 +2,7 @@ import java.io.IOException; import java.util.concurrent.atomic.AtomicReference; -import javax.websocket.Session; +import jakarta.websocket.Session; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.reactivestreams.Subscriber; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java index c9b5f086..55b42b05 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java @@ -2,7 +2,7 @@ import graphql.kickstart.execution.subscriptions.SubscriptionSession; import java.util.function.Consumer; -import javax.websocket.Session; +import jakarta.websocket.Session; public interface WebSocketSubscriptionProtocolFactory { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java index f41c0dc3..5da0071a 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java @@ -3,7 +3,7 @@ import graphql.kickstart.execution.subscriptions.DefaultSubscriptionSession; import graphql.kickstart.execution.subscriptions.GraphQLSubscriptionMapper; import java.util.Map; -import javax.websocket.Session; +import jakarta.websocket.Session; public class WebSocketSubscriptionSession extends DefaultSubscriptionSession { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy index f9a9b369..2e2eebde 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy @@ -6,9 +6,9 @@ import graphql.kickstart.execution.GraphQLObjectMapper import spock.lang.Specification import spock.lang.Unroll -import javax.servlet.ServletOutputStream -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import jakarta.servlet.ServletOutputStream +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse import java.nio.charset.StandardCharsets class BatchedQueryResponseWriterTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy index 6ab5f38c..58003651 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy @@ -21,10 +21,10 @@ import org.springframework.mock.web.MockHttpServletResponse import spock.lang.Shared import spock.lang.Specification -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse -import javax.websocket.Session -import javax.websocket.server.HandshakeRequest +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse +import jakarta.websocket.Session +import jakarta.websocket.server.HandshakeRequest import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage import java.util.concurrent.atomic.AtomicInteger diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy index 7a452b18..392146b5 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy @@ -5,8 +5,8 @@ import graphql.kickstart.execution.GraphQLObjectMapper import org.springframework.mock.web.MockAsyncContext import spock.lang.Specification -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse class SingleAsynchronousQueryResponseWriterTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy index 0bffe1bb..9640fa5c 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy @@ -6,9 +6,9 @@ import graphql.kickstart.execution.GraphQLObjectMapper import spock.lang.Specification import spock.lang.Unroll -import javax.servlet.ServletOutputStream -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import jakarta.servlet.ServletOutputStream +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse import java.nio.charset.StandardCharsets class SingleQueryResponseWriterTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java index b0ec39f8..d0f1894a 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java @@ -3,8 +3,8 @@ import graphql.kickstart.execution.input.GraphQLBatchedInvocationInput; import graphql.kickstart.servlet.input.BatchInputPreProcessResult; import graphql.kickstart.servlet.input.BatchInputPreProcessor; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; +import jakarta.servlet.http.HttpServletRequest; +import jakarta.servlet.http.HttpServletResponse; public class TestBatchInputPreProcessor implements BatchInputPreProcessor { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy index 96cc4062..2a48134f 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy @@ -1,6 +1,6 @@ package graphql.kickstart.servlet -import javax.servlet.http.Part +import jakarta.servlet.http.Part /** * @author Andrew Potter diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy index 3d8f5601..947e747d 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy @@ -3,9 +3,9 @@ package graphql.kickstart.servlet.cache import graphql.kickstart.execution.input.GraphQLInvocationInput import spock.lang.Specification -import javax.servlet.ServletOutputStream -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import jakarta.servlet.ServletOutputStream +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse class CacheReaderTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy index 9a486036..bd065bc9 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy @@ -11,9 +11,9 @@ import graphql.kickstart.servlet.HttpRequestInvoker import graphql.kickstart.servlet.ListenerHandler import spock.lang.Specification -import javax.servlet.ServletOutputStream -import javax.servlet.http.HttpServletRequest -import javax.servlet.http.HttpServletResponse +import jakarta.servlet.ServletOutputStream +import jakarta.servlet.http.HttpServletRequest +import jakarta.servlet.http.HttpServletResponse import java.util.concurrent.CompletableFuture class CachingHttpRequestInvokerTest extends Specification { From a073ad8df67ed099a13ea49bec7698a3f6d69577 Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Thu, 17 Nov 2022 10:25:14 +0100 Subject: [PATCH 19/62] chore: jdk 8 => jdk 11 --- examples/osgi/pom.xml | 4 ++-- gradle.properties | 4 ++-- graphql-java-servlet/build.gradle | 2 +- 3 files changed, 5 insertions(+), 5 deletions(-) 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-SNAPSHOT 16.1 4.2.10 - 1.8 - 1.8 +u 11 + 11 10.1.0 diff --git a/gradle.properties b/gradle.properties index f28bfeb2..7f99bbbb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,5 +11,5 @@ LIB_GRAPHQL_JAVA_VER=19.2 LIB_JACKSON_VER=2.13.4 LIB_SLF4J_VER=2.0.2 LIB_LOMBOK_VER=1.18.24 -SOURCE_COMPATIBILITY=1.8 -TARGET_COMPATIBILITY=1.8 +SOURCE_COMPATIBILITY=11 +TARGET_COMPATIBILITY=11 diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 0afaea08..e628682e 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -33,7 +33,7 @@ dependencies { // Unit testing testImplementation "org.apache.groovy:groovy-all:4.0.6" - testImplementation "org.spockframework:spock-core:2.1-groovy-3.0" + testImplementation "org.spockframework:spock-core:2.3-groovy-4.0" testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" From 850ea73892d82948031269307861f5dbc4575468 Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Fri, 2 Dec 2022 19:58:28 +0100 Subject: [PATCH 20/62] chore: update jdk to v17 --- gradle.properties | 4 ++-- graphql-java-servlet/build.gradle | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index 7f99bbbb..dc0b44b4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -11,5 +11,5 @@ LIB_GRAPHQL_JAVA_VER=19.2 LIB_JACKSON_VER=2.13.4 LIB_SLF4J_VER=2.0.2 LIB_LOMBOK_VER=1.18.24 -SOURCE_COMPATIBILITY=11 -TARGET_COMPATIBILITY=11 +SOURCE_COMPATIBILITY=17 +TARGET_COMPATIBILITY=17 diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index e628682e..d41a9c04 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -37,7 +37,7 @@ dependencies { testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" - testImplementation 'org.springframework:spring-test:5.3.23' - testRuntimeOnly 'org.springframework:spring-web:5.3.23' + testImplementation 'org.springframework:spring-test:6.0.2' + testRuntimeOnly 'org.springframework:spring-web:6.0.2' testImplementation 'com.google.guava:guava:31.1-jre' } From 9ed1ee70178b86be76a37dee47bb026a82f8f127 Mon Sep 17 00:00:00 2001 From: oliemansm Date: Fri, 2 Dec 2022 19:27:10 +0100 Subject: [PATCH 21/62] chore: update java to v17 --- .github/workflows/pull-request.yml | 2 +- .github/workflows/release.yml | 8 ++++---- .github/workflows/snapshot.yml | 12 ++++++------ gradle.properties | 2 +- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 5be6997d..8878518d 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: [ 17 ] needs: validation runs-on: ${{ matrix.os }} steps: diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7e8dcbf4..714b21c1 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,11 +20,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 8 + java-version: 17 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 8 + java-version: 17 with: path: | ~/.gradle/caches @@ -48,11 +48,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 8 + java-version: 17 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 8 + java-version: 17 with: path: | ~/.gradle/caches diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index 5fc43bba..8993506c 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -23,11 +23,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 8 + java-version: 17 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 8 + java-version: 17 with: path: | ~/.gradle/caches @@ -51,11 +51,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 8 + java-version: 17 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 8 + java-version: 17 with: path: | ~/.gradle/caches @@ -80,11 +80,11 @@ jobs: - uses: actions/checkout@v3 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 11 + java-version: 17 - name: Cache SonarCloud packages uses: actions/cache@v3 with: diff --git a/gradle.properties b/gradle.properties index dc0b44b4..6848160c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=14.0.1-SNAPSHOT +version=15.0.0-SNAPSHOT group=com.graphql-java-kickstart PROJECT_NAME=graphql-java-servlet PROJECT_DESC=GraphQL Java Kickstart From 8941702fc28f49b6c17d44e81a4658d681e88c35 Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Fri, 2 Dec 2022 22:54:42 +0100 Subject: [PATCH 22/62] chore: fix tests, just call init() without arg instead of init(null) --- .../kickstart/servlet/AbstractGraphQLHttpServletSpec.groovy | 2 +- .../test/groovy/graphql/kickstart/servlet/TestUtils.groovy | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/AbstractGraphQLHttpServletSpec.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/AbstractGraphQLHttpServletSpec.groovy index a7f9e5da..dde7cb46 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/AbstractGraphQLHttpServletSpec.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/AbstractGraphQLHttpServletSpec.groovy @@ -1120,7 +1120,7 @@ b throw new TestException() }.build()).build() servlet = GraphQLHttpServlet.with(configuration) - servlet.init(null) + servlet.init() request.setPathInfo('/schema.json') diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestUtils.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestUtils.groovy index 797f5048..684b2cc2 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestUtils.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestUtils.groovy @@ -62,7 +62,7 @@ class TestUtils { .with(contextBuilder) .with(executor()) .build()) - servlet.init(null) + servlet.init() return servlet } @@ -86,7 +86,7 @@ class TestUtils { listeners ) ) - servlet.init(null) + servlet.init() return servlet } From 0572b684a4c0663f98748c7de46f76a0d5ae8dfd Mon Sep 17 00:00:00 2001 From: oliemansm Date: Mon, 5 Dec 2022 09:30:40 +0100 Subject: [PATCH 23/62] chore: add jdk 19 and replace jdk 11 --- .github/workflows/pull-request.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 8878518d..6f5bc79e 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: [ 17 ] + java: [ 17, 19 ] needs: validation runs-on: ${{ matrix.os }} steps: @@ -60,12 +60,12 @@ jobs: if: env.SONAR_TOKEN != null with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 11 + - name: Set up JDK 17 if: env.SONAR_TOKEN != null uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 11 + java-version: 17 - name: Cache SonarCloud packages if: env.SONAR_TOKEN != null uses: actions/cache@v3 From 38422209c5a94a130dfe481c3de65f2198722510 Mon Sep 17 00:00:00 2001 From: oliemansm Date: Mon, 5 Dec 2022 09:37:21 +0100 Subject: [PATCH 24/62] chore(deps): update gradle to v7.6 --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 8fad3f5a..f42e62f3 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ 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-7.6-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 4ebc257a272243a95b3bf3482076efb99245e4b4 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 5 Dec 2022 10:19:08 +0000 Subject: [PATCH 25/62] chore(deps): update all non-major dependencies --- build.gradle | 4 ++-- gradle.properties | 6 +++--- graphql-java-kickstart/build.gradle | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/build.gradle b/build.gradle index 0bd99646..b54ad4f1 100644 --- a/build.gradle +++ b/build.gradle @@ -27,8 +27,8 @@ 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 "3.5.0.2730" id "jacoco" id "io.github.gradle-nexus.publish-plugin" version '1.1.0' } diff --git a/gradle.properties b/gradle.properties index 6848160c..0f53824c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,9 +7,9 @@ PROJECT_LICENSE=MIT PROJECT_LICENSE_URL=https://github.com/graphql-java-kickstart/spring-java-servlet/blob/master/LICENSE.md PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans -LIB_GRAPHQL_JAVA_VER=19.2 -LIB_JACKSON_VER=2.13.4 -LIB_SLF4J_VER=2.0.2 +LIB_GRAPHQL_JAVA_VER=19.3 +LIB_JACKSON_VER=2.14.1 +LIB_SLF4J_VER=2.0.5 LIB_LOMBOK_VER=1.18.24 SOURCE_COMPATIBILITY=17 TARGET_COMPATIBILITY=17 diff --git a/graphql-java-kickstart/build.gradle b/graphql-java-kickstart/build.gradle index 97f26597..b84079fd 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.4" + api "com.fasterxml.jackson.core:jackson-databind:2.14.1" api "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$LIB_JACKSON_VER" } From 1508d7796faf3eb8c06522dd91e6036b41026bfc Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 5 Dec 2022 10:32:53 +0000 Subject: [PATCH 26/62] Update version for release --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 0f53824c..d4b16533 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=15.0.0-SNAPSHOT +version=15.0.0 group=com.graphql-java-kickstart PROJECT_NAME=graphql-java-servlet PROJECT_DESC=GraphQL Java Kickstart From 265ecdf0844afc1c0895b74601047dd0b7f957a7 Mon Sep 17 00:00:00 2001 From: GitHub Actions Date: Mon, 5 Dec 2022 10:32:54 +0000 Subject: [PATCH 27/62] Update version for release --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index d4b16533..7c609309 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=15.0.0 +version=15.0.1-SNAPSHOT group=com.graphql-java-kickstart PROJECT_NAME=graphql-java-servlet PROJECT_DESC=GraphQL Java Kickstart From 80f05371adab22e755d9ff05ec4c5902956e325d Mon Sep 17 00:00:00 2001 From: oliemansm Date: Mon, 5 Dec 2022 11:58:22 +0100 Subject: [PATCH 28/62] chore: re-interrupt http request thread --- .../java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java index e6c0e462..d5cff75e 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java @@ -116,6 +116,9 @@ private void handle( response.setStatus(STATUS_INTERNAL_SERVER_ERROR); log.error("Cannot handle http request", e); listenerHandler.onError(e); + if (e instanceof InterruptedException) { + Thread.currentThread().interrupt(); + } } } From c180ab327f013d2cc490313379f5993747250a2d Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Tue, 6 Dec 2022 13:34:04 +0100 Subject: [PATCH 29/62] docs --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index c9b18c11..8fe24c12 100644 --- a/README.md +++ b/README.md @@ -20,9 +20,9 @@ See [GraphQL Java documentation](https://www.graphql-java.com/documentation/late regarding GraphQL Java itself. We try to stay up to date with GraphQL Java as much as possible. The current version supports - **GraphQL Java 19.1**. + **GraphQL Java 19.3**. -This project requires at least Java 8. +This project requires at least Java 17. ## Installation and getting started From 92e720d004e408a751372de684395a7de24e0709 Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Tue, 6 Dec 2022 13:43:21 +0100 Subject: [PATCH 30/62] docs --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 8fe24c12..8afdfd0d 100644 --- a/README.md +++ b/README.md @@ -19,10 +19,7 @@ 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 19.3**. - -This project requires at least Java 17. +We try to stay up to date with GraphQL Java as much as possible. See [gradle.properties](gradle.properties) to see current supported versions. ## Installation and getting started From 5b2cdf2934c4d586c3668ab2fd64f7b4e61636b5 Mon Sep 17 00:00:00 2001 From: eduarddrenth Date: Tue, 6 Dec 2022 13:43:21 +0100 Subject: [PATCH 31/62] docs --- README.md | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/README.md b/README.md index 8fe24c12..8a4d3bff 100644 --- a/README.md +++ b/README.md @@ -19,10 +19,7 @@ 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 19.3**. - -This project requires at least Java 17. +We try to stay up to date with GraphQL Java as much as possible. See [gradle.properties](gradle.properties) to see currently supported versions. ## Installation and getting started From f28b00b5e5ec286d4e6fe2c3264e17d3143f9bb9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 12 Dec 2022 23:46:36 +0000 Subject: [PATCH 32/62] fix(deps): update all non-major dependencies to v2.0.6 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 7c609309..cf9f92d7 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans LIB_GRAPHQL_JAVA_VER=19.3 LIB_JACKSON_VER=2.14.1 -LIB_SLF4J_VER=2.0.5 +LIB_SLF4J_VER=2.0.6 LIB_LOMBOK_VER=1.18.24 SOURCE_COMPATIBILITY=17 TARGET_COMPATIBILITY=17 From a765a9ed4630451d9a7e37da9a7a9e74713f5dea Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 15 Dec 2022 10:43:39 +0000 Subject: [PATCH 33/62] fix(deps): update all non-major dependencies to v6.0.3 --- graphql-java-servlet/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index d41a9c04..2dc1b3a1 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -37,7 +37,7 @@ dependencies { testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" - testImplementation 'org.springframework:spring-test:6.0.2' - testRuntimeOnly 'org.springframework:spring-web:6.0.2' + testImplementation 'org.springframework:spring-test:6.0.3' + testRuntimeOnly 'org.springframework:spring-web:6.0.3' testImplementation 'com.google.guava:guava:31.1-jre' } From 827092ec0125a055487e59fac66c52f56bb5bdce Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Tue, 20 Dec 2022 17:07:43 +0000 Subject: [PATCH 34/62] fix(deps): update all non-major dependencies to v1.5.1 --- graphql-java-servlet/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 2dc1b3a1..4c618341 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -24,8 +24,8 @@ dependencies { // OSGi compileOnly 'org.osgi:org.osgi.core:6.0.0' compileOnly 'org.osgi:org.osgi.service.cm:1.6.1' - compileOnly 'org.osgi:org.osgi.service.component:1.5.0' - compileOnly 'org.osgi:org.osgi.service.component.annotations:1.5.0' + compileOnly 'org.osgi:org.osgi.service.component:1.5.1' + compileOnly 'org.osgi:org.osgi.service.component.annotations:1.5.1' compileOnly 'org.osgi:org.osgi.service.metatype.annotations:1.4.1' compileOnly 'org.osgi:org.osgi.annotation:6.0.0' From 94536cef2a469d3d2624fa9ecea0bee45c4b7b0e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 24 Dec 2022 11:24:53 +0000 Subject: [PATCH 35/62] fix(deps): update dependency org.apache.groovy:groovy-all to v4.0.7 --- graphql-java-servlet/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 4c618341..b7cc0a8f 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -32,7 +32,7 @@ dependencies { testImplementation 'io.github.graphql-java:graphql-java-annotations:8.3' // Unit testing - testImplementation "org.apache.groovy:groovy-all:4.0.6" + testImplementation "org.apache.groovy:groovy-all:4.0.7" testImplementation "org.spockframework:spock-core:2.3-groovy-4.0" testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" From ad051d9df49ba6612e59e0ef7abbb35a275ce783 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 11 Jan 2023 15:32:30 +0000 Subject: [PATCH 36/62] fix(deps): update all non-major dependencies to v6.0.4 --- graphql-java-servlet/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index b7cc0a8f..2341acd6 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -37,7 +37,7 @@ dependencies { testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" - testImplementation 'org.springframework:spring-test:6.0.3' - testRuntimeOnly 'org.springframework:spring-web:6.0.3' + testImplementation 'org.springframework:spring-test:6.0.4' + testRuntimeOnly 'org.springframework:spring-web:6.0.4' testImplementation 'com.google.guava:guava:31.1-jre' } From 483c00736368988365a9b241fb5137754f9195e5 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 22 Jan 2023 08:05:49 +0000 Subject: [PATCH 37/62] fix(deps): update dependency org.apache.groovy:groovy-all to v4.0.8 --- graphql-java-servlet/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 2341acd6..3988aea5 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -32,7 +32,7 @@ dependencies { testImplementation 'io.github.graphql-java:graphql-java-annotations:8.3' // Unit testing - testImplementation "org.apache.groovy:groovy-all:4.0.7" + testImplementation "org.apache.groovy:groovy-all:4.0.8" testImplementation "org.spockframework:spock-core:2.3-groovy-4.0" testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" From cacd67d40474592345627a33bee636941b648caf Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sun, 29 Jan 2023 04:07:05 +0000 Subject: [PATCH 38/62] fix(deps): update all non-major dependencies to v2.14.2 --- gradle.properties | 2 +- graphql-java-kickstart/build.gradle | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index cf9f92d7..facfe3b2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -8,7 +8,7 @@ PROJECT_LICENSE_URL=https://github.com/graphql-java-kickstart/spring-java-servle PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans LIB_GRAPHQL_JAVA_VER=19.3 -LIB_JACKSON_VER=2.14.1 +LIB_JACKSON_VER=2.14.2 LIB_SLF4J_VER=2.0.6 LIB_LOMBOK_VER=1.18.24 SOURCE_COMPATIBILITY=17 diff --git a/graphql-java-kickstart/build.gradle b/graphql-java-kickstart/build.gradle index b84079fd..3b62c1ba 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.14.1" + api "com.fasterxml.jackson.core:jackson-databind:2.14.2" api "com.fasterxml.jackson.datatype:jackson-datatype-jdk8:$LIB_JACKSON_VER" } From cfbdba1b061cc525e505feee6da70867b804b89b Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 3 Feb 2023 05:59:21 +0000 Subject: [PATCH 39/62] fix(deps): update dependency org.projectlombok:lombok to v1.18.26 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index facfe3b2..fe7b7521 100644 --- a/gradle.properties +++ b/gradle.properties @@ -10,6 +10,6 @@ PROJECT_DEV_NAME=Michiel Oliemans LIB_GRAPHQL_JAVA_VER=19.3 LIB_JACKSON_VER=2.14.2 LIB_SLF4J_VER=2.0.6 -LIB_LOMBOK_VER=1.18.24 +LIB_LOMBOK_VER=1.18.26 SOURCE_COMPATIBILITY=17 TARGET_COMPATIBILITY=17 From 09747cf7cbddf554ef2718c8a3d259663169c71e Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Thu, 9 Feb 2023 01:34:22 +0000 Subject: [PATCH 40/62] fix(deps): update dependency org.apache.groovy:groovy-all to v4.0.9 --- graphql-java-servlet/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 3988aea5..60c0f734 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -32,7 +32,7 @@ dependencies { testImplementation 'io.github.graphql-java:graphql-java-annotations:8.3' // Unit testing - testImplementation "org.apache.groovy:groovy-all:4.0.8" + testImplementation "org.apache.groovy:groovy-all:4.0.9" testImplementation "org.spockframework:spock-core:2.3-groovy-4.0" testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" From 132e0bdd9fb97e8a3531826fc76ecba0de728a09 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 15 Feb 2023 18:12:38 +0000 Subject: [PATCH 41/62] fix(deps): update all non-major dependencies to v6.0.5 --- graphql-java-servlet/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 60c0f734..d3bc0643 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -37,7 +37,7 @@ dependencies { testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" - testImplementation 'org.springframework:spring-test:6.0.4' - testRuntimeOnly 'org.springframework:spring-web:6.0.4' + testImplementation 'org.springframework:spring-test:6.0.5' + testRuntimeOnly 'org.springframework:spring-web:6.0.5' testImplementation 'com.google.guava:guava:31.1-jre' } From 685227ff49d7c962cafad9def09eeee02b237d61 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Fri, 17 Feb 2023 13:22:33 +0000 Subject: [PATCH 42/62] chore(deps): update plugin org.sonarqube to v4 --- build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle b/build.gradle index b54ad4f1..0641ae23 100644 --- a/build.gradle +++ b/build.gradle @@ -28,7 +28,7 @@ buildscript { plugins { id "biz.aQute.bnd.builder" version "6.4.0" apply false - id "org.sonarqube" version "3.5.0.2730" + id "org.sonarqube" version "4.0.0.2929" id "jacoco" id "io.github.gradle-nexus.publish-plugin" version '1.1.0' } From 47b2ad63a0be7379bdedecc243ed93676e935bf2 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 08:45:22 +0000 Subject: [PATCH 43/62] chore(deps): update dependency gradle to v8 --- gradle/wrapper/gradle-wrapper.jar | Bin 60756 -> 61608 bytes gradle/wrapper/gradle-wrapper.properties | 3 ++- gradlew | 12 ++++++++---- gradlew.bat | 1 + 4 files changed, 11 insertions(+), 5 deletions(-) diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e5832f090a2944b7473328c07c9755baa3196..ccebba7710deaf9f98673a68957ea02138b60d0a 100644 GIT binary patch delta 39304 zcmY(qV{|1@vn?9iwrv|7+qP{xJ5I+=$F`jv+ji1XM;+U~ea?CBp8Ne-wZ>TWb5_k- zRW+A?gIDZj+Jtg0hJQDi3-TohW5u_A^b9Act5-!5t~)TlFb=zVn=`t z9)^XDzg&l+L`qLt4olX*h+!l<%~_&Vw6>AM&UIe^bzcH_^nRaxG56Ee#O9PxC z4a@!??RT zo4;dqbZam)(h|V!|2u;cvr6(c-P?g0}dxtQKZt;3GPM9 zb3C?9mvu{uNjxfbxF&U!oHPX_Mh66L6&ImBPkxp}C+u}czdQFuL*KYy=J!)$3RL`2 zqtm^$!Q|d&5A@eW6F3|jf)k<^7G_57E7(W%Z-g@%EQTXW$uLT1fc=8&rTbN1`NG#* zxS#!!9^zE}^AA5*OxN3QKC)aXWJ&(_c+cmnbAjJ}1%2gSeLqNCa|3mqqRs&md+8Mp zBgsSj5P#dVCsJ#vFU5QX9ALs^$NBl*H+{)+33-JcbyBO5p4^{~3#Q-;D8(`P%_cH> zD}cDevkaj zWb`w02`yhKPM;9tw=AI$|IsMFboCRp-Bi6@6-rq1_?#Cfp|vGDDlCs6d6dZ6dA!1P zUOtbCT&AHlgT$B10zV3zSH%b6clr3Z7^~DJ&cQM1ViJ3*l+?p-byPh-=Xfi#!`MFK zlCw?u)HzAoB^P>2Gnpe2vYf>)9|_WZg5)|X_)`HhgffSe7rX8oWNgz3@e*Oh;fSSl zCIvL>tl%0!;#qdhBR4nDK-C;_BQX0=Xg$ zbMtfdrHf$N8H?ft=h8%>;*={PQS0MC%KL*#`8bBZlChij69=7&$8*k4%Sl{L+p=1b zq1ti@O2{4=IP)E!hK%Uyh(Lm6XN)yFo)~t#_ydGo7Cl_s7okAFk8f-*P^wFPK14B* zWnF9svn&Me_y$dm4-{e58(;+S0rfC1rE(x0A-jDrc!-hh3ufR9 zLzd#Kqaf!XiR}wwVD%p_yubuuYo4fMTb?*pL>B?20bvsGVB>}tB?d&GVF`=bYRWgLuT!!j9c?umYj%eI(omP#Dd(mfF zXsr`)AOp%MTxp#z*J0DSA=~z?@{=YkqdbaDQujr?gNja^H+zXw9?dT9hlWs;a#+55 zkt%8xRaIEo&)2L9EY9eP74cjcnj%AV_+e41HH0Jac6n-mv=N`p7@Fjj@|{sh)QBql zE-YPr6eSr=L$!etl>$G9`TRJ<0WMyu1dl8rTroqF<~#+ZT>d1?f=V=$;OE$5Dypr1 zw(XXBVrtJ=Jv)?x0t4n$3GgUdyD%zkA50>QqY-Yc`EpwSGE19r5_6#-iqn*FNv%dr zyqIbbZJh#;63!5!q*JJB$&P>25-YG~{TiRL%|XOHhD4=ArIXpCwq&CKv|%D|9GqtB zS$1=t>o4M7d$t@hiH<#~zXU|hHAjdUTv zR<71yhm7y}b)n71$uBDfOzts(xyTfYnLQZvY$^s+S~EBF%f)s-mRxde5P|KPVm%C; zZCD9A7>f`v5yd!?1A*pwv!`q-a?GvRJJhR@-@ov~wchVU(`qLhp7EbDY;rHG%vhG% z+{P>zTOzG8d`odv;7*f>x=92!a}R#w9!+}_-tjS7pT>iXI15ZU6Wq#LD4|}>-w52} zfyV=Kpp?{Nn6GDu7-EjCxtsZzn5!RS6;Chg*2_yLu2M4{8zq1~+L@cpC}pyBH`@i{ z;`2uuI?b^QKqh7m&FGiSK{wbo>bcR5q(yqpCFSz(uCgWT?BdX<-zJ?-MJsBP59tr*f9oXDLU$Q{O{A9pxayg$FH&waxRb6%$Y!^6XQ?YZu_`15o z5-x{C#+_j|#jegLc{(o@b6dQZ`AbnKdBlApt77RR4`B-n@osJ-e^wn8*rtl8)t@#$ z@9&?`aaxC1zVosQTeMl`eO*#cobmBmO8M%6M3*{ghT_Z zOl0QDjdxx{oO`ztr4QaPzLsAf_l0(dB)ThiN@u(s?IH%HNy&rfSvQtSCe_ zz}+!R2O*1GNHIeoIddaxY#F7suK};8HrJeqXExUc=bVHnfkb2_;e8=}M>7W*UhSc- z8Ft~|2zxgAoY2_*4x=8i-Z6HTJbxVK^|FP)q=run-O0 z8oaSHO~wi?rJ~?J1zb^_;1on-zg=pw#mRjl*{!pl#EG$-9ZC*{T6$ntv=c_wgD}^B z#x%li0~0}kKl6Tvn61Ns|N4W_wzpwDqOcy7-3Z@q%w>r_3?th#weak;I_|haGk%#F&h| zEAxvb?ZqYZ$D$m+#F|tZG%s-+E5#Y1Et@v5Ch>?)Y9-tNv&p+>OjC%)dHr?U9_(mK zw2q=JjP&MCPIv{fdJI}dsBxL7AIzs8wepikGD4p#-q*QTkxz26{vaNZROLTrIpR3; z*Az3fcjD8lj)vUto~>!}7H53lK3+l(%c*fW#a{R2d$3<3cm~%VcWh+jqR8h0>v;V( zF4y9jCzmgw?-P`2X%&HK;?E*Nn}HAYUn!~uz8}IDzW+(ht{cx9Nzf%QR%Rhw(O2%QE#3rtsx~4V%Xnd> z`7oVbWl%nCDuck_L5CY%^lWGPW+m|o*PF`gv7{SxuIOpIR-0qu{fcqWsN(m8okFaNN=g9DgQ`8c4#Q3akjh=aXJMDnWmCheHhg+#qh$hgz%LMg7X%37AY*j5CJleB!%~_a!8mIK?3h6j_r(= ztV8qvPak21zIC7uLlg12BryEy%e`-{3dSV8n=@u`dyXqC&!d4mmV8hsait2SF z1^~hKzbVcsEr)H+HCzy&2rW0f>Bx?x{)K}$bRn){2Pa8eHtc`pcMt~JF-ekZr10N@>J^3U% zZ?5Lu>mOxi3mX7t_=3Z))A-82rs^6+g8*3w^;w+}^Am!S!c zcjkGeB+sQ5ucZt4aN$8rIH{+-KqWtHU2A&`KCT!%E@)=CqBQf`5^_KNLCk(#6~Hbj z?vTfwWpQsYc39-!g?VV8&;a^tEFN}mp(p7ZVKDejD~rvUs6FwcA9Ug>(jNnODeLnX zB09V$hNck7A3=>09Li^14a%frrt>+5MTVa5}d!8W~$r?{T^~f%YV&2oFFOdHZ+W-461bP_f zr=XH50NN@@gtQ=n>79e3$wtL*NGUKC<|S2(7%o+m>ijJIXaXVnVwfpZWH@fYUkYQJ z*P3%$4*N5xy4ahW`!Y9jH@`j}FQJ2Qw^$0yhJWA{Z&Spb(%?y(4)#+p5UTN&;j&@Y z8y*+wx`xfLXy2L7RLK~6I8^WRt&%h0dwRI60j%;!J(f`80Wl`t96JFu(~0^IRS*g-$IGS$#+8QxY?}x25E^_h!`yuuOJz9c>a3L`vc) z06t3`-)vWQI>tBkAzNtINbOsRmd2G=Ka($9B?iBJCCR$$wF)J>dY4q#l|!uI<()=8%evp ziiTDYFWO5?r_X@tBOcSN@&r|&xTDB!fF}g@NGHTM{{y8olafox=dOCu9O9u!#kenG zJgVQ3-&u}&`fvU|t-fAUzq+Tl75wtC3u3_pf7$qoouVoWN~mIUtXP?!l3ohg;LYHs zT>fB>F-lyg(ilR;OCS;9&o7SY2^ugYlWO}ai<12xzvh+R=5$2kJq@=h*IVVVZ)^$u27tLhOLV# z4nn+w3^prURshPx6UM_kXLNAh1ana69ZeS#TC$no-1Qu{ z#V0rjhzC3fh(L<6AVo^=E6Yq!c`Lre}$T!52UafPazM<+x=PO%{Q`xH9T9w7mJG6XV zscF#ORMKOf5z#a4Y`3WQ>47NKy;Sro_qS={sx3d?5H9Juy}DedhY_QOG}`P6M{855 zZp1owcyiDbOG}k-l@8!dVW?^|T(Z(8MWn+ltFu*8<=i88c`=Wq*Z@(bMC4Mr6`nV@ zkp*FSI;2+D^DD|>Sw21i7izopJO;_3sZ}u3uO_g#jIK&Y5z~H(WokolB9;3AX)|n~ zUe`jzAX4znlT#{R+7)ZyM?Q@uVO83DOXInC*fhbdd1Py~QexaxUbrIeE}rDD7u zK<;xyI9QY7*K5UYnt?e)AlCBB55cu?wSi+2Hz{$5kZ&o(5Av9`$Qb9C=Zc*|X}A*j z@nZl>XzxW`1a%Vum01W=VAu*FCNGaDqs#KLa)Xk6j@YB*57;O~6*KO>6u)-kWL%Zw z@AEm1o=j-$EGhu`41tWMH1j@{vAJot5bF#IpZu!-X=B|6ff22;3K|h-1ms*IS3Hb0 z@IAOeZp8Gf4>Qsbq=QK-uPS{9>7*jGBc;#N*L>&H*M1);i-0evQDR7(R%4rGSTD82 z{s3fpyvZxqH$vR3D5=2tIXF*MP^G!*5D`<$vMul9(GJjX|7om3f^!Wyzy*DaYj5_v z=~&Ypytt&>;CICFz=uY6oSLPPX03A(a=&*gPnddD$mA8?C)_P#_YLp;>-{^Xb6BQ^ zOtfbSrB$B+18pQ*Gw?;65qfB|rAxt2ct)1ti`>7_+Z6fh+U9zQpCb>;%AP2|9#kZK zw2K12j2*BzMzayoT%;?@7J=;CX!FSI{IF1SB}O-jZjT(0-AMe$FZgR%&Y3t+jD$Q+ zy3cGCGye@~FJOFx$03w;Q7iA-tN=%d@iUfP0?>2=Rw#(@)tTVT%1hR>=zHFQo*48- z)B&MKmZ8Nuna(;|M>h(Fu(zVYM-$4f*&)eF6OfW|9i{NSa zjIEBx$ZDstG3eRGP$H<;IAZXgRQ4W7@pg!?zl<~oqgDtap5G0%0BPlnU6eojhkPP( z&Iad8H2M2~dZPcA*lrwd(Bx9|XmkM0pV}3Am5^0MFl4fQ=7r3oEjG(kR0?NOs)O$> zglB)6Hm4n<03+Y?*hVb311}d&WGA`X3W!*>QOLRcZpT}0*Sxu(fwxEWL3p;f8SAsg zBFwY`%Twg&{Cox+DqJe8Di+e*CG??GVny0~=F)B5!N%HW(pud_`43@ye*^)MY_IWa z$Frnbs`&@zY~IuX5ph`05}S|V=TkrOq8$rL`0ahD$?LrT&_Y#Tc8azVT)l_D8M+H_ zwnRoF6PP>`+Mqv$b%Ad`GHUfIZ@ST(BUlOxEa32u%(4m}wGC|-5|W-bXR2n~cB_yG zdKsN(g38z1mDrOc#N*(sn0Em{uloQaQjI5a+dB{O62cX8ma-1$31T<;mG2&x-M1zQ zChtb`2r&k{?mjH5`}lw?O9JV!uOn?UP3M#fHUp=cxBb%PML70LPmiQKcq^FvojvtcZOCYEydgWQNAIrV0%IkxPmv)Qs^S zmLvL{F2@2dL%N^h=e6PRXa2lFh-sVtYlM1Qpp~@J7a19T>r^m-c7jZvDu*fb`U(;T zS-<-##+6Cv75X~D?Qq?ues%u!jBF(Y zIUnJIJJp~diP4wdU?54`;#zd^hZHa?76P3cnLEu#V!{F@Hpqm#X4W1HN8!VX5v&6W zKQ#Ri6w9~%aVjl6Q88)_;gH4||&p%hS9?1k@B725D5=L&$fMhxMi2%8__R)RBc0Hvur>!w7Xa6Uvni@ z-M$OMYiA1HoMqfnHs&K5H%2ezc5dj>A_TuZd4Qr!KJ5ZhljtBjT3*^sPX90A&m8*M z?Xx3`iM%6$mb>}UAvhvUS3*TGaL^sQ(hFc<_CRoL-r&;oX@N0g;K0y5*nQK=w#nvi zLnfCUUy*@0?cxGZMmRuvu}0w(AUq@uC^A4b41vdVsmKSrdL4BxqOJw8sUY)P>r+p) zw%X%tIjoew%BG{L`f^ocMtx~wQ(jAr%ZK}Vy>x7%xo_X;VkZ!ic|WNCH)WW;t4 zE~|&S+p@_f9xIx!=(f#uExcWOs`qDQKPnm;gxYBzj4iO%W+**s-`c#vqk z;hpHcBSV*Wa%DTA(u_u{isR4PgcO1>x?|AccFc^w;-Bxq_O+5jQV3$yUVaQlg4s59 zs@|ZELO22k&s6~h4q4%O)Ew;~wKkI65kC&(Ck>2G9~@ab3!5R=kIvfu>T>l!Mz3}L z*yeB){8laO${1xC@s%#F_E89?YUbqXSgp9mI3c`;=cLihTb=>+nr~i_xFq>r_+ieN zltGcpCFW2R-6j@74ChKK(ZFbs!!s=@nq2$6b z60H$h$(&CfxyO0UwlHEY^S<7wu|@6JK{)c|w_(C4-+FSF?iy8{FY1l65}9X1$Qa#( z)yNhnz5lG480H9oJsRdRHFxddQ{piIFZqGDOc0oyD6^D(CxW~fDWXKtbd3}~z2m4? zxyJ}qey{})xa{GBpPnR7{8@{vL!KF3)1$w>==~^CYQ&`SrlKA}ca_{ywJ&)(vrONU z`MZ=`jXu0zp@nH+24+c`FoWh&+$TLyJZ+(ygHExS!WXObvm6yqOsB;JVbA&ir^I>* zhim~-oI&{L^o24mh6HpUGd1d$GA)u>uQw*=J`5HhW=)yiaEx)dd2uZk$sKGbS`c$5 zI)L$3^TMIB-4r0!(uZ^oejT5P`S&a;UQ8$~+)8D^s5DGypyq4wL<;6PFm|Jy^;mz1 zhi+-pt=w^`v&IBWgK}Lo`fn~pTs3{~&ANBOzaUZz~c zM*cyzx1{QIcv_UUq9oW`FAFf#Fki3iara|&1HtpR2#wu>TutxnMh0Dh_cHiBPUfQo+v>aK09@y3!5u>0;;mKBv_oBXxPU(bBkNlj~o18?(tNrXa4g~o(#m3(ajqPU0qoaH~DjedUbfA0fcbp4M=u_@gF zNNP~e%ENNEkS4%P*L3#BYa5cw{(CeP@sY+Er(eD{Rkh@n0|uCl>|Eio-xm z2uEt#(w0yH2Wxv>6h1^3Th)^%Kctp-{mjFZ1?<#>SVoc8aUeAfG47|~>&=;=JtaOR zaBj&@I7<*`&^j!J>bH@^{Ta&l>)t-I=38&}ik2kJwn1#rw~@>3apDL0fAVFuAn1Mx z7zoG%)c^l)gWkgjH^l>!B(I#l5nTnmj2ZPt7VepToH8YL3@rC3aAUTZ7E{(vtGrn67u#c1>T4151-2olaIYPwPBA_P9^ zT)MH&vb|0#h>+^T3#**}Ven2sZdL3Myq!p+bzU$gK2Kk^jkJwh zepO$%drajHu=2bgO0y}tI#t~}5b`KJY;IQj&#lk(`Vwa z-+Lp^Np?>+Wia|z#`I!SW@sAEvijh>buf;(!)G}jWelyra1x)OM!Wgn_XTvimNQE) ztbtgCMUXPV=MA>P-2G%cFd2IK!5^8tVO!lG(qnQUa**au$Q=?*1vV$Jh7e0SFjUzu zUBRpkDW<$z4_DV9R0guKEc~Bfjx+=_srm=zVW<>Tdg>JCA5baQoWvwRmwg~bDwqCb zX=({}xx?ZQ+8$?GObN_F5=aR;r|jXBa!y7-e-F;SwB3ACQWt9+(E%P6OXa{1&5=|n zOm;d~Jktyf6=j!PQbUg{1;@4MbO*LrEJBsJ707zdY5i7{qdeEWtkxCb49bX~&x@{0 zuS6$E`tJpaCl*s}-TVm1)FFEVcPSQ77Auu1O|Yly)|~WZ-lO!0cL*4{bWW)q4JDTV ze#}fJv9pObE8eF`Bb4bgGUjZ#V5Gr;DKS1co@Qyxe!&FFH0I3`5$lUU{{kh$|uY(m+FQuf)ZS?{Hm zG(9h)3g;SwO-ZNXoU{ZXEQLqTXihvJFlW&PeTeR_$JSs-v;?7?wq*wVwE0oERWzp@ z(6CbDb_gM~XG`^xYv|#Y=lNU$ahYFXLZq1+Fqp?C|0(C7v1NgSoOl0V?-yU3?l*sw zR4`CpcdL6jfUk7J=F~FXC$HI&T_u-`H(RZ-ao9wk5~gsP}#JMbr-9IybPT zKE^{Fr6qspSUwfQ8!X6iBFRieSIT3-z$*e}$sw(l{>f4+L*4~%*-#IItJVbrxSI=^ zRn4&|Xk?{W=ZP5qRfLmU_$V;HBNK<>V%Xm>*Dc*9E)jcyO+$?IN`?VF<#{8H0N-^yEhtR5j>6ZK70+5rd6|5|0IB-&jR{Y;y-sDA@lqXvt*g zJ4lh`cLzraz-=Dj_Xb7&-ysYy1NB8^inO3K;4@#%~2xu?Xj)(s9b}a$R!s2KhpDZ|%6md^c_{(sD=32)hrm>lo=?HLmLJ z`%yhND<$<5$Bk$VQDXyxUXKFEHBES>xY_Wr$w(0DH;PiNT*W+7Ka&=(#3 zffXt$z?CQ&k?~6w3aeq9#TD!MHU41rqQ4)V0T&p>3MDzP#!|LND|RZ{jm!28xYgor zzqECq^uXX;@QZj@y*K^v#knPc6XsdK8dCl>gC(?>ay(OZx$@JoJqSsw%L?z*o0$x! zJl`lfuoEsW#ZpFBGd5!u_<$HfM5lvqK5`0NndUuZo~o-o;lu3x=^Azmo` zN3;zN)wef2A~_IFS|Qa$6+IjSuxNvS$yV4BEO8ILZ2tig<%IJN>2QD|WAc=gzu*G$ z$uF6}^rmERp&BUfDhtCX1Z_C0;}yF-4FBuF?$AfVX3}B zsCI{^qUP?}QrD{*Xpm$tjfm0sSuK(-&1jC_{@{>rfiBu>BltP*njy|0kTOgt@4-^6 zIL9_bYl)7gD`GeaCV3Qyq5CMPAFRkU(6FmMXAN$k_A(wgsvq=l6B0hKtxq zqH^ZaE+Y>&vJmdIP2=dC&S2QNkH%D`QN9!Pk35k@pR`(YxhE~vDE%AcRVa|=UtO2Oj=$*Pk-V!HiuZ1NxMF3TPe~xz;p@8VeEr;$M^aI zUtQM8+o8`!uCob zmsiMx{H41NPFS>1Xisf183g&fQG)hrwes%FEyxmg39MlU)gf|>-omm!gQU4On zJt@Pjytp;5<8Mle9(*8f($*m39Z!ty+{mQCdxc$(V|M$B zr#eh)yv#~2zhGwJ8UZ}F&pJ7t*4$iRgRx06-3!t}3qC6j6#D}m7)kqE%UO8v_?Dz; z38?6qb4N>u!792F7G?!yokb>#^NsYMc&$MgC4l^gS0Drk2-|;8IE=*50R~Qs#u$N$ zv>5Pi{y>G}F%*~3MwRW{0c)~_;V^qSmag?}c#ax5AG;k-$?p{I9qavY;eKKZ0jDV{ zdE)sMaGHstenmqaLckjCOWqRfs2OQwrxm(t>O_z5L0M~If5&qDGgn6Vl zlY4H_5AG1-u$Dk~o$_KC`(D85yqHT!n0)yQTA{&jARG^PEf8>a&YqE;M}-Wp6QThi zN| zGol9%&|!Ii`vDvQBn_pnmw5sDUq<6Wv-5FtOW0g5j?qCjHTumdX-35<+hAp~s}U5o z8A^MHK72zh$;)()ZxtQ zcqxsR(Nk)^i(0;m-eI-C8ngrA1FlVll9w4SP5Es4w#EUnr{DH(_0fWkfJ30G*jbb8=*9)gLqh+vS4@+Lu87{+2-Rc=$2HXTNNQ5 zl_RUQAs)1~Wo@>QoIxsQcIT>g)ontxy_!aw&;D{+wGNm%Z~V`*@|MXlQJ-d4yw5q; z{>OTNV}36~p|1xM5cZ==f|diNvsx?%BGl7YN%7D&M!4);aYe0 z&l%66;NGL-NBX%cy@#QWh{*|>PUTd%Ym(O4$|0Qs6BZ8VUIVTH8r-m{r96wJgp>dd z?AloIfb)6s_}};+94HCmoH~pdEfgs1c7v?!1n{Gwzp_80Abg(A9z5(I00&G+?UCeq zLr;g3KR7HU&kurul@pX(w;?IhoG_An2=$m4%TQ*ljt+C0QhK$tXR6z1+{I7U@+lr6 z3#;S21J(?NyBpFST+o9v<_+uiQQ|X!2U#^rxCOp;B(|0pT_TCutj@ID^6lxy%h74o zwwlWhHPv+nZ7vp%RT@)FfGYHtbSF4{qKcDPXfaHc=9MkYMmCgk^}UV|R8+n75d#?_ z^2G`}aKe&_O60Z(@Y`7$PW^OV{<%Oz$iZ4nuF#Gt@`cstRqFy?b4`x$5KP$Zbm*Zn z#)~b;LtZu%IEl7ZsP@bmSU1>I3n`rg+^_xVib^`ZqSehsV}^Mg0Go~YT(>a~juFW? z6N9NcFkL)Lfl}D3>U?XL*!5;4XN?CAV zBm5ldOm8_qw6%se4w?6m>#;|b5Sj}tV55zS9hVOuvKfAu&gv3J@Lo{iM4inB&jg71J1i;&WM@HS}O ze$SmM#w~dWP=cFB$`S4sX^q~tkqy2Hq4u`9z?xkCq;^7K?v}gkJO~(DX@(N!CRnvu ztdL2eg78}_lTHNXu4jo`NS3BC=h6ZFgRz7}azu4T?^I5{9zCjHUUV~?65=)4(UADPnk|!@Y=pZIpKy5}(F$HFBx`6tDy- zcO4n)uU)tJL$zi9XR7L1V@opZY;(W+M@`(OwJF{rSuNDnXaLx^aRYx4^wMY|7pyDv zMhVd+AY@V`0e|dFu@=duX(O>g9N{#PF+yB|R2FcIi}p(quk+tB%#=lSf&Dz;61-9? zYO@hNy`IvQ!Q1TaH}RUtTcnO( z38tR-%<7MyBeutubg6VDI^r9WPfGb%*;mM_eag!S9A2;4K2?!3e_bg@yi&#b?8eFI zPOH)(2KS`5h^-wJD;(-eO~7RI-m>kpv;|P&-rJ!L9KKF1mZlK5g77(gmJ`Pg0e)Em zb!bj8#@i^ozayNY!wx`w8Bxxx;lnBwIo1!IY>Oka7@!v@x29~l6q&!Lmm7xUQvxC` zv_fK;_4{tB9tpKHBgdc5JSq)0MiECOA_Pd47Ary}8DrihLeUU?Rr1+sVp6s@B9nDy zxqSzw=K#ofa9jC@cKtPlg-<~V0B|vh_^*5zh|>IHGLBR;%KLlKiHTD}RpvfqoSLb` zqh}LbOxh{O@-yzxX|SceOiEicwYNV>)(5b|7acaZkIF^e^my8Bel;Pv^kbM#TAvW?+CPF-8w%jc?1iYrdPR0M+d6Bel#l zH5d9O=N9fJNoqbh?Y#3V6<1pe-gj?W$|uU+bs9!UZSHqGXHtm|5U{pTI44G0MhCpR z%Vi%K#j`EqHCPy{JXljh>OAF@4XYyIfTNI$7f1_lQ+5mUbGgY_(yjIPfSUP`JxjOj z&d#n1)i_tHxMtfH@B>DJPAy$N5Pj%{hWh!{Gg}ha%$(o3*DU<~5W`|~~0Ahu6Kd{Oo6(Lo< z-jZ-n?Es`IPrA0FSw#bfR&7X+tR`)tlVThp<=YocC_di1<_BLyr0>l-sQuWF_d0%73{0&0z7ZH3Dkd3#MoU#^6xv$ zXJU1vZi*v4su^N807`n?Wj0W;k<(dT32}WGwmN*$!t^^oX$c8H@Q0(Nm?#LpyrSw?4}%AO%qG*7mpdDlVs-PO-ZH92;-F<9p9u#vfdMIZQ$zS}x36hydt6K5#nkHECWqmCcZr z1K}IM6v3ggF@qPpO*@~)T?M!iJ0U%ZY&CsX6kX)*gz^mU8i^?eC^P#a2=JB7P(Pk; zk0%5B>!WMOEvbQVj(00{)?fDeJ>xbf;XBG76irB^TFxM&pa|8MBR3KIs=Ps{9+Z)Z zWB6fH$9!Q)A%N|>=(8jEyrBv@ugtma(1orem3;ob0%$W&@_KAD{N+U#k8M}x$N)he z3vNZy(m92FH9wZ#$%Fd`V=&k{vH|g!g017(?A=hAG@|ULAdEnX>Q@fpUHxA=c1j0D zZXMQ5ttT8Yt4E57$+dHrG7Ad76KMUEf1Fj8?1XL^$^(k&6~BdkC00xpFF*MpnfPK| z3QFGIQFykL4B^A>XkeK?`BF|kRy6BzaCD334C zBvGQrlnqc>3-FiJL7t@v*osEMRC-sLJPyZ+jA03nQjXK$A;!M%zyqx@an%oD;xOi4 zWy4%$y;?mGvF}d-Vthx$c_aSX(<<>tj(dU5at51WLnw=th>`zM{jxwMu})!CY;cB} z?6J;}jgo}qKEAR}#!XI#OiGn-^GR!;W;IXA{09K%gSj?--Dn`xkMs(&HdPK3i9aZ- zVJIt${*+=#cJ*-@r@FP^9Mx)(+>N9OdLbMQUb-7|@g6t96$rF+oixyf*{?${!SZD8j3z-I*6c!|=$4o+ru7srWWe_qH&NZg-5jPq6QZ zdF$;6zUQ_BI$cjM2l}spQo!ijnAoPLeni(its-$FhjWOzBBwoU)?BG+kChS!Sr`^g zDMKYUVU9~G(%fZ5A!mNX4**Nw9D;ML5obF_;bm}zz^AHv3zw_aS zyf1JiifW6oiJfS7y93Vn?T-ZX=N0-yVH($bVE3>42>CdAqAwQ9?+?YW5iw7Y zeQ2j2Sm*@jqf8kl5x!Jzg#xsWJi3{j{v6-QeGEoF8sI2?$wjS*3tqjk1om6602hQkROLQ|U)0w&iMA7O>LrwZnEzSp%g$zv;uBN^6jI2LKi9(Z{d#Krqc~gEv)^bw5X@_0Q++t+mm25YE6nGMcHx+&_(^*bzIeehm(6h&srgPimn~AQ ze0pz~wmGI({WV=ct>xfG7kWZPo#h8L;XrD_o=^lBeHL!A+FkdHQ(0Yrs#b$Wyc*SP zV9Bn5iRN$I%hB(O+>RH(EdVK|`OSzU2m8D4V3sW`7l7;2r(}?crNbV?+}8t5N`z47 z2yDvlPyLvIMhygG1ix1Fai2KA>S8cUa=t;vnjl^nc!FCEL>);a(`cSNiY1Rx_d=0?a=FP{AQ?GrJia_&-UIkmb^UDTC0g7yp@m>h_d38@&Iy z(AkpzKdr6qE==pde{115P$?$1OaM8rB}t4gswVOgO>Y?0!Qx6hA{mTCU6ODL4oFdJ z8wKx-FshQ6D0Ut(i;1++lGC#6uc#Mf_n{(p6W8Bro!1Fxr-U02*wZ30nH>ooyI#b_ zfUnO3%Aos~x*&lNu=oRX^n6_&r+raSY*vk+;JJs>2PfJGq1;E|0ZbtJ> zczCsLujO86xDPxx0|SOLx)IVJ`mM#XdPaYWE6xG>6hg^Mo`5 zm+d*3Pyd?OB2OuBaL6K0n$atjx0O~cVnH=WJ=AuPTNITe6#*QVHc4CnLDQm#VDgP& zC^%IZi-Jj&%e7z2L67o^J?TPT`7>M9 zY$Nxrga-8XrtCpK5 zAlXC9dbLh*qr9mn-redGmX*V0bCm4L8ra2kwZ{MsZ@;w$w4aIiMQCZCdfPu*()Rp{ zF`<1QfG_vk_T>w&R;29dGiV@I&4@fpyY2R$^4H(a46>SwC|G}{R!hTqckS$3#SuHJ z?7}5y8EBeuwGbgy3gC9T5d1$}oda{FQG;$fwr$%^I<{^5#5PaIcE`4DcASo_jykqa ztm&Csw`%6A+P~qgUGG|ZJy3%BG8}dj?uA;~8%sGFw-Tz8OVl9`Rn1EWSK0U30(3DX z_~ccQ_K=Kd4(?a(>N`rQ6>ON*Vq1!PT{4_v8)WhVeyE&~0rH2v^B3%>yG7CRw`np* zK7Y6_w}b@mhQ~mW_jAU?3bUBC6qHac9JLQdKLpFgNrZ}8fx_y@L#4}({3?;Ee_))^ z%fF{jveoeoSbRG;RNyBzj7RdLUwg~YNr zS`sY#E+7ZyetVe&Qmg&3nXntMHCu3l)}!TQJL4O zAH-Vuos7{k0OwAyov|aF<1O-C;ZA;Wt&dn##mEXPHoK%!izEOerda$eav&gAB(}Ye z_+a#%vov6iRmuqNa)vTTA9D(07qTs+Dq#DeChp0jJ3=Ws6e!E!08(EuJEFfO>b#q# zBlAom<{{Y@c0`Xu3<+O|hL{LF;?b(4%ndJdiXRMCu+6^y!za69i8_E7aj>ml3{%QCIs(tAptIiV>q=rmgDAe z)q8)x`b6?A&rG2%jp*y3s!sJd3v? z>t3#jY>Sci5&)WoGxj_hL7s&$pvdzCt|bbGE@t#@F>m{jwY6ndtN)jDS~| zxie$yDZfo_lb^CLCTWU5PUGw&en1abNQvM8C_YpP9A{4Ua58 zAxu8AV2(VF*M1c+Ga3ZRhrfwl4P5DNY8aTRr6juNX%fm$^2{Jf%Y?cX8>2* zs0#n z0n6=OM3HVO`RR(;acPNFxe3<<0(oQAw;qveEzl7ndwKdc7iX0h$*M~+eWMW@PlN3F zE_Iu8n32d&ZI>H@{|g)@TxkN}puT-W{8tiT`k#tOpA#WaUmHUk^AlM%gB8(;99}d? zr+^YwX8w;>fkqtdTtONw_rf3Kak5w?z(OXRnA4*p%WS|+t?)n}q@LELezz7-U0eGp zQ% zDvDT1JZ)#7<|tPWMH&^JXo;o47*Zo6jElO=HWE3-ZdxcCUan5kE%CO~n1es*?hvWQ zuC*qkZsP%^GhP6>FRmT>9pXffsWU@mb=$N<_=?T+Tn-+zF=yM4<4|2h6kWT^r}{%?Jttf}|$L zLcA^CW|kT3+Fq(DYgcktv10|CA=h10i@A+d;6#cwU@y7so(?C$_KV3CDGY z5j73sAsg?Hz-6#4+G~vsum7UUqEe=9d| z3-zF%&H@~$*^d9NbDLDGWBJpsPk|BLXQlK)Xt3^7P;0crIOw3KkIC+kR>O!RXI808 zHWmf}1%a!<8pjhA+-r~~7ha6@{LhtdmTd->9FvEiO1P5`?V?%bN;7vKMrkxkV$ZNh zau(Ci*kG#bGr^%G?UMO<=j_fIC018^!PY`54iIf($+(Btl`o~B*DTZ0_9vRq)9z8g zrGXQ~2Pf-5H<0b-1uNRqJ>%x1cDuKY^%ip)jeNff!VIN-#>}7R!#WPCaGonvX@gXLjOcOWnWC!B9t=@2_o>R^xHFiu83^B6c5HRi`>Fyf*;1^e?f+ zy8)}Q?cBNUX3ZU4XIpr-qOpQ5nj`pSl!iMrr^GlwAy&3mYoelhNI^V72#O7pUkmaG zMrEzbSmA66)q8lP(YS(mQmk@XEtwDEMZf~g9ns0u#$WTj2*%V0PhUYIqd3af1s((o z`Q5MpnWePbxKy(Ac_sML*m$4=VFu{>ugRM6Xkmk}dq?b?1t}ryzeg!Eu`KSKhNF$+ zE6xn}0`Uu8tJ4i%JnkH@4S_fpuoij=7{eIW;w&F#Cu5l8GHNq)Jrcq!(AL(-gJg5$ zg?uRPRAjfAM7{UC{K7|YV>e}-x$m?Nr2FcaOZCv-Z5%L z&W^66Z)iDg2w#vFHelFoP{&)Z#-tM>KNl`{7ec=NAEixsci;P83Ki)jW-5EirH3{U zDO*uST&!>oT+bHvXMq;x!b+P6C+AN&+DNTjs!qi=Lr<6HpiiWLn@W~|d75&TKKFkh zLE){8NGe75)yNfqhgJj)%0$ImI4o z->!E^EUrEOP_1kZBI9-7#HVHj6hy+~Tre=w-iJWALp$&E@USJg$>26-Wdb!Q?8KJ_Oxm@5g$1vN1|CUqUT54}Tq*&DHCAgy+cyPTH@1nr7m~28-{9I;@=MfHM=0oP&TC z#l^CkS$)Y)uW_#u)9zJ0gL7%j+uW;DHA5d4ah+n0zIxURQ*x4&CXu}-fXFn%h~!tv zD~%8Q+zZZ-z7zwCSah+MnOI=wAB`MzgWO!T3{4}~dulk1#SNXy!|>yz=zE6W_iOWvVI_kfj?>fvJ8 zN6-cVEv=6V`(8#KFD9_uT)6cm>$pxnA`yGTZ7QRP?kCoL-ASRCC@8VXOm)30o|gl( z;E(}%8x|aTg4^|pUSwm97};0ICiCf-L+Ka&$+XxdX3pLWmxi|~LdwwsMpbN2`Ya>$ zkmwL0_oyBHfyDGo#P%*K14Ji2q1m60SiI{}lrx~V0_PKPI|EKrZ@0tF3JCY=dO5TG19B@c8S$PMW^58$QWA zX6I*d!*#xyGt#bGMsgHhHW7>w$jE!{yNmog@vm2?tUWq+yx}{k6-Y;XvJCNOOIi8A> z6WH;WEFEWA%l1&rgO?~s^u??mW~VcgV9FMLvi#p0n3S#R@1m3+zM?<}H+4zOz(;Bj zbvpsRS*b>iMpQHk6+kF_iU|CH z2ct5E@(CvV9JPDl@JDt*DLU8vDQD|ANAQ@>>Pg7=b8+^YQnAHfTB%~r9PYUYuT)>^ z=%<^$WFgiYvKf5bp$=fY8*~vo>WDO2j`n?+qrq@!ygV8vdB&2ezkO8zwE{^A;{Q+ z@D$5lwN`HMfS)LL^Zdu&6^lGDZHmXBeyPQ(6M1M{qsv>{pUE{IDv(Rg!YYtQ6yAi_}ouv=vLm+DpfTJgXW>k*6sz6 zJ|TBnBm{7WsRqGm@P3$DP@xhe7nBv4@2mxXN`<(3eG3Fg2Mf@9D=`T~(P*pPl@h26Nf*X^%^fN!SyO zp~uO{)YBX>=^g6)Arr2+hdT`~lE-l1uqo270xO{Hvv%wyL`?f&nRKAI_TF!hIAvOd z^qIFMLhlpZn)WpeT&0QfJPy=zu9&|VNn$w&$v3?D8KU|b!|Mh|;XMxi6E1mNrN8=Q zWWxfB9K_Tkj!u#7QX-=kx`ba@cKQX|a?I)hvj6&oNC@F2v}I+Lg(e%(23RB5|MQpI z(ZrF;aRZX|KtuHgVT&FquC_C@_sk%2*zM{YP#iqCw+z>z{)4 zgYMfmvTrGcCltVGJvjgW*01`eT%D+S$nZ#6BU$O?A7RN&z*W)FVJ!v}z@asID0#;F zEvRQUO%QT<7~GMW)@&-c^PM9v3E@JOPQPM%h@Sg0N=p6SIkkeWP=s zF3h~Z1jnOsHNx%@WXuyHf(=LkdSHSBVemL`kq};YoNSmeg%YOq5pq6VI#Z}a3ZexX zhq`-9_Nf8zv$t~sLgPbjFBT|7$3A8mEOYN>yd&Zc{#AqJbUppzF+PP6*tg^;y+bi0 zo|(84n!vi7Iei1VaC$b4m_jMUR$||5<)<5TBl>U-Orx^9Ok%y6Nkhs{EDWq0c%#!o zo)^Z{a{+_d>fyp=@Fu-o=&;#G6$*Y0A!+~B$U@aa>RZEV*XC#JNCJIKBbqfsmT)aL zd(_`oB_R6mXFnmcSTL1pWfRq>A=%|i#` zSE~H_J1BT#T9FOSJ{e2H!gS2--Cdz8?R8WyL|TE0o5TsxRIjQY`NPDCq2RHG0%BDk ziNhGp_$os6bq&6{J4YAigh4;7?Xi;9@FA%dx{@(7saTs&J#&$Sh^f{j!Ce)J>mAHE zM4(ihP7M<-2NEf}57?h>C&f)d_CY{{G7rT!rSsFZwfW9c^S7g;IuSc7n7KcmXWb8f z5{ZdxkTT{?yc_Z=8|cvEGkw=KYa;f-C(>D&bT&4d%F1i~{G{EU(q`)7HoEmUvibeG z+S}XPT3eyBvj5R&=!}kK(Uy*k%7Vu7QebJPonL{69fyeJutrN|wVR=~8)-wYjo`C0 zECWZUc+!CAz>Ta!(uv8XiN-YwUaMcx>+eXkT8ETu6WM_-aT0D+qznh{qDB+SDGdR3 z*_$(iC;yy0XEzsnlB1zDup&InKe+%pDo1GX*2`De#5;(AfdV&9CIUTPltw$z?d{mb4tbs>VX& z;LIH^m_dJS+xj?~*|23;Zv-gtR)Oh9eMD6e7^MD?QfaP_agSr+X?W)3t2c&R?>Lb}~=3zW091MJo~i%bPWA#O9!3^}aV zQsG^CDTG)_t3tZ!hExM>{rwCuEPzO9pNuOT2pGmF4cLPeII*aRl1P_0M$hq4N~_h?9(Z8nNcc z*{nGrSvk_P1@xapg;Sr@*Bb3IVD_o)D%1I=4r(*_E5h^r=5z`+ouHxrI$#trF60E#blj>D9Kv_)jPPmNgjBlWKk=;RlLOgL?w3T67b_ zgTd_p&{}2TlzY*L673**1%PEvqM?5F=8y3@OM21q)0hbN#S>YZy`{~S32c2^X2uOt z56JYQ+#j6VHRl$*tiWm7NuLnuer|%@zIVcNN6hwN1U%+EsJ$4mEqig=gqK)!l5)PtKj1TPFYNQDFY=Mn>5&?J@q&OuNmy z?yJf^|L}#W7KZxT|chAgkJ@>AMZa#QN;K`;BmGf z@zd6qireD%45{k{Km3nyq0l&}q2&b@ zu1|E5x#!7uthitF;bSjwarp=3oS*n48qYRy`MdRY?~FTHoS8Baxs?UxcT{1Z>v{9f z0-2@x=SUmSD(qPVrjoV5Ldi`N-bE>k zC-No2$$qi=EGa}Eo{k#!2}bn&wEjMOCHIrP@gC`5epjdS?`8IH@l3Y5+xF1o0DVLj z1S~>~X6@k{dgz>Iyvr$6Ub!O^<9sD<;BlTtm$EEEBl>&|E*cQPdJ!*yFQ{2lrbLxJ&-?h7A(_L_3HBb zmy&PUFOoiDq^n4T9Q?1c#2|l`_>o|hO5r?m+zQcW1lJ_%8}#n}4kl_&-~7P3+o$I@ z{9iLpq%R1Cb`rF!oD+A2w=RJgfoaU}uo-YK+Q9wxXNL_S$1Jl|k>|;l z9ndlfpFc+Dw3L&eW4w-guoPHy+f80)`BJg&fP*n@v@U6u)k>%&{!^xAw91fps;R$= zk%opTc9}W$WfFVz>=1Z}ryjSnpHI$zDC1jer`~%qu6{U7b+V%30^bY|R-#<5Zwh{n zL&f1LxRAVSXZ4G6CDakQYH|zKlDfqi8t4m9vYvF!y(+Y}NO&O3&1}y7{V4d-75)P@ zM4`+o-Ew8S#;SpyWEl+NLrfMMTjW8vDw)@owX|S?5md4#(fqw+?0al)nLnMqBmz-d z%!McAvQ6i}xfFy@T~=j-I#~0D&sgM1mUfz=(09D#`_DLFlXUut8BvHBLX2xe3NYn) zUENDU-GNz$9Ii~zW{~AhfNiLy8(~;c>O3Qi<~s4JKpLzir;XPp3dAuf*i$Wx8&=&h z6$u)^RJtoAdpExunn@40?6n#;Lfd4_IemAd-pqW6y%Wo0-rwUj3TX?ulK*l&NdZ1- z2Jb%xRPNOAO&++l$!ym=mH(BT14?VXPfw`GJPyhCusbsm_AB&Z>@L-I@Y5To)-^fA znd#0yRD$-w8!I z(SXb~d?TJCOLfU|C2E;3tab%XzfntN2K)mk0ea1fvCgO24_>-oJysJQbWTrMyoH*C0t`s~oFGYHE-M=Q1af`+XfI`A@`}_U`MF)*NzW(fz1vJnN#}If`6=lo5VlS5U=AefvMX%By8Qq$s?rdDLZ0Fp?0CBi)gjsH{2k~cB zreeNzM_i3~lW1-HR#fsY*VJ&;d@!BhSBO`26=FgO04s(uF5+;u$Jq?JsBum!BQd# zlJr$@?TG4=fVt7M5e(4%bHs2LE5z-#tGuyz9N7UyWxUef_ zM8ft}YDNG~%Jco8IQ*7Y49ns!E6YXjrS$u_Y28<^=^=J{#qI~gp3@;#@j-2cfW#t0 z70P@pd_M3Vb-L!J6B$iAR@KJIa+!AeyF@bspbI4l<+s~H4oi`LEK@-ra`QuCK`LMl zdU#e!Pr*S$@v;Sy8(pooy`r>4FDu#BMy{%qt}?BxM9)^93NU!SiFd~|oqT=%?30GP zE^6|(rJt_eJ8jKx0WB*VhJ_)iI_2;TSCOFDrx%DNAa{?FBFv2Z<|Z6C7!J?mqR#gZ}|6#&E?7g z9)FaWPBwqd_}RpV;xWLBI(kx>ltM{YYy%aSg_hYkghi{7V|OBIPq&xhY;QW_lg`|z zPA<;OTWY_H9upQ^eV0TfES5URpuYYC$%O!?-*e8|Y@u`QFd`sI;6Fj@AfU&?^b{7| zF~@UxvN#7sBPvI+j(fiIw|;{Vk_=?>>c9z9awh`?qWLSrXpu}8gIOe#Rf)yv$^rS4 zQa#Ch#c!TW&%#UF=3y@jVs^t+O-8JFGTo_0RP7!Io1e&#SxRY6*}cyXK@P8&C)efq z1?;^E6QK6~S19@g7$u^1$u zH5Vw@ng!80CMoVaz+U#d55A$;=XNK{y3#eXLhC!r-&JqOh1Ix$D&Ng`Jh7q=NL^?8oY1?4Nf+YiomKA+;3_7AkN zot-{7))AI6Nm~}Y&DXeF9p-g^>&#XP%ieTKuT>{|s0Nuw86#=)nOTwXM13ij5#av2 z&v_F2qD!GxHWz|(&YV|-`vCJEAGLzZAsu?tIq^_8P*F9v?^BZ8gCg_KRJ-P)i6|r7 zg>q=rpCAezNSEGFd3{0wg^{nS_S(gBWqzsQ8u)fHrH#<9bcB>B<=P9g7QQ(C;<~?z z!F4>PS826LwoN` zK#CPere|VyK2&{a@$?0FVlS$yC;$rCRgur;f*?0Ec0*Jb*vdD#&=XBqrNa9A!l3p3 zXNFh1O%?I-`5luZNT3BbdjHNqu=rdfR5$$c@%1SQ>$zCb3lv~b+EMoO6}wU!v@1jY zCG!PI92U+%=R|lwv=E0T@(Ysq*a9n7MD)?SG|r!w${)!z{d9S(MYRCPI_Q8R;0c^AMYfr8_IV}NV`D$wiBY)*0P{|%`i-~ z5}B}U5~VEb8;~K(D8k*zB#`jY8$%U@EjPB|4u-DKrQ0>M@|#oUlVxG>K5_F))3yX3 z>SU)xN^24D>b1_;T8#CEGG)+V#rHu2xH3!qjQQN)wrA=iCoh$-3ExETU@e|@nRlYv z6?i4#`(&ZVB!lAH9ej?Em%oMXfM*s)*{KdH9IzwyfIa^Iylgu0`k(66n*&jE`$ z#cSTmsQTBAPKnGu{a-^SOwct(hW|EAlK=fhBmW--!TAg&r8Wm1$Tn#KZbMs0U`;^R zCQqs>)`^ac05@U{%Lyh{AW7Xl1V~=b^zcj*5v*vl)pt5iU3nX%ryl`eM00P$=$!|| ztQ6b!o|8PPkG#H3Ur={vQ&An=kNe$kzis`xzJA)yd%G4#fzSy9&WIu~5~~UHWWZ!c zaH7P=YFSVcCZP=i8$yfOEiAlUVt+Xz?NSN+`srmfIyC9SJ2T|Kp6neK>)4YVv2pwt zxhMLU5z{_bM~duKvI~z9!QgoY=z**!$g)>;H2Vgy?ITZhHK3n)JIl1vP?v1m}RGeQcvnMFfqdoX0<_&};f!z%u^OunVVhByakeJ%gQ2J|(>TR;5 zM3AK1xWLg+`HL02M%prR)nwRStg7>zg;TS(yQv5kNqI0#oFjp!DqyTGDs?*|OwHEY z_X_Wyq;-yQQ)ennM_rv>k(NznFak0o9wbJ!GL=kp%Pnb&;Pm4N^xW69)aj<?q)&xk98Mm~GoMp(9pQByiCm0BA(FWA%u#>7pzn^JdCnHxjN#L}Jk zGjv>uohypMIA@pq#BQKuAwG8_ezZk{dCXOqbj9Qb}Q`^5(-+yW0<|IHdCo3 zF8KG^#2Uqu4jzA*kLbj4S=2Zz=f+fqX(^l>Kc`iHwES~RFbrFj34xa!a42kj|CFlGh%)FeltAr zXlU^4?Tyd&8+c#EU-{>z;QGJS=zV2>&w0!L5c@mcei<(UC39gLc+YI*|q)_2kMjN_=* zw<-_5V!P2AT@k#{QBhGJz##iU!2j;`EqiHGtjj^;1Yb2Yi#kflvol<3iCyO((rOA4gHf*TN$t4 z4bEiA@32nHS1bHNzDZe)p4BXGS>O9T(R!gKqUv{>`g2&v6!Fnk)TPOGVkwbB2Py9aPRlv2We2Vf6#Nc+^ZUi@7Ql=&nfx z2!O)sW{a80QQw%d)t)M8%Sh=RzppdfzUyS1)z6v)w|F9y=f^iZ6q;^BV2Lz5$Q1vy zv2E%54l7G%gco`Yb(kmyhdkO@sKSnusw(VZEbFg*+33*~M=^pD zYFX-3+@oKe&sA{fwrN9!&a4vy?9c5s0f2iw7Y)*4gr{b(J0NAZxjdG696&Vfk_R}_ zn-o4D94}L$F+d~JkV&*EKlE)BrCZACVvD(7HfI|S3Vht6F3=DdJCxiA?4U+T;j1hf z{!u-12wcp)gRU`$z_&8*|Gc~GHt+(y%I^AA{FUV)GCE&R%Vr)(6B{-L%1ur(Serr- zd|q3%Fhmpn5p7z6#L_v`_^170zQo_ufs?qCO@J?w}&alFy+c z$CIzILZ5;a)$}7+BcclfWfl=^YDxu@e<-^S5IUU@Q@7>Di>d(3NV-!5#a=9zuT35Hkmu=EsvN<9Kd3#YL{lVVhx}Tx<^!-| zoXdINIm2X#j1rbW~0#eJJ_Z5 z+_2C%0WMr&mjd_ z#A^r8snFEWk(0CYxcDS@|MI3iC?K$>(u3n6B5GLtiP!%fq`J@{2Dyi)@C9v8F| zONdBw-(dGcZw!behA~cx)q_l3NS4>Z_5_))2BtM~g#@V1oDqqu+NMNTUR zBWpVqqEhvsODr+Tst8&&erl}CX$b`9z@(U26FQ%IAa>oOB0e#~rQCg6nlnP^`Q`ZM zGU)w3q}CujVUXXy`~u#;$P&}Hl=GWziP@L8xMxU!Md zk||E5#6T1|Bu>TIsrB3^zU%eOt$#73cW{*fa|jnq%M4`|+VKX`MM)w{K4v_bf+F+G z0c&snF)SASh+xyEuGt;8NgG{)c!s>WFvF`3B4vB{ons`uBsi^(p7jP>hglnL>r~=8 zGgf1+4{oom2SHPkiWa&akMy^`8@!b}tK~4;NuZrh5ZrmlSVDZLRoKr>(zrA0^I9T$ zc1@40J&$8&eQ&3iwrYb``>U1CTS?4L@W}!t&tVXOCUJ?)Wv+$RmVnT(ws2b`jtlkLgxyJjyvjC)f<&5;J0dxHHR^72%E&9o9*G(WoHaiVNk14 zBT_1EjuH_uAiCkWTkJtQPTWM2Z9P2#{EXKe!cV` z4-b&t#pv{dq&WJYqn@!D0z*D^E1A_}CxQI-*xJ^P|13dGHpKMg?9M`k_o3`?)`R_{dV+_|2i{>Ne6CedHsS__%}6)I20R=`|5>x z%@8@bSMtbFBqm3(8B>VD4fA`10O`nL91P)$OK;i?e=*O@w=ue;(M>l_q@}wfiK0QnfA7!J}8C*%5bO}(Y#cK z(%1=%NWRCwydNA_vU??SiVEjXmCLwQ<(Io8<<}jbE=$uV}qHGuTYU}vWNXO!^5X$NJv?z5o$9r*n@14zwChU-wRFMyCyR#q}D@l;YxO1b) zzuphcPq9CAi*ApRN5`ItTWWE6%)MMD)78ohr)Z4b~aWyDoQ{fsd>k9U) ztaQYY?YK#bQsj)+r=so4XyM1y{H|>QNT(l6aElF7Si2=7Eo-VF)1D|1ZDAYga6|B8 z=9*M(i$lO$xyGoDA}X)E%7YGB(PFIz<3nhbT!|W%b8LZj7&=D|hBF6etlg}{;Z7TvLp`*? z7SW2NHf<&7rq$i9NON%3b+GN(vIs2(4&Wh!jH_KbRukYfi;;3ITwX(O;g+n2Aw5iB zi=kv{Oxnqj#RN>nmK*rR>bna2cATHVQhuDDU4J>2#mpSN3Oe`pXLXnKTyQBxJ2KFqYTn#r0oO4BPm3Pxs5xHLE|Tlp&k~zu zPcXkUT<6@($nX@|sBgo6O>9*-l^b};_#Hzg>)T93ECW50`~vq>dsQl5!mVaMsC=`%_i(wH)7tt3$1p%jyff zO5Wv8wB4JpKofsI)xlIQDOTFIGhJ|Yb>j^;N9^i~mTwcO^==wK{d?G+g{HpXFgPHj zQ$eME<{k9Y`@Yp(BsUb!Bw_vRCyl|6ZmIhIk;*kFQ)~ZZ^PEH9e)G{939l8niT*Xc zC`K&?jx$K9qXzXXWGjosuwljU?LRp{7ujSnE=E#$xeX8GuK9Y95I13>M;8053Y$F7iF_Uxfx7 z4l6af3YYQHmPZC3UkaW+hRr3JOw&1mbVpH`GccY~@Y2ld-x32hg^php|H;=C9U*MxO z8V?g?^=Ix-hLww!?wzB?i#|L+%}z#X6kQ|sM;L?b$PG1y3aiaaw@cb*qTUuxXZI(=-abNt~ia_rZs zd`xm{s9;5;8OeD~sWTihpFkZn^K|=xPqOp^7MN)B(8z_oiU&uQwJdnjfbbJIg>vdn zuvK?I^p25>GElPFC_4cxbB>wV8}QCvTrtT8J8sJ}z+{N#0^5wYE0XeR7+Q0L&Q|2W zZi%%n$3z<-GOacTs44^)QWl9;4>inX4B*A@AaexgM)7j%ZHb=DGxgX;^rW=#vwN1=L8;)8zphVmdR6bXeO(kc;{d zpkk6G8x_Qm&6J~>b^vKeHQzh}mC_VHZpc;kk3Bw#eihuCj_2-29A&h?$=U5y%2Y=a{v3}S zP{<{`xM2Ai;&3ZLOZ##x83(MtCmCkb6X4?rk5=7JcmD)Z{HnRlcMlBvs<}6QuFu#u zT}}V~YXZ3V!WBqFRcnq{x~TsiKI0Tkv9tHficz4%bK!*~x%;c~{@1f*?ibTlp1>NO z9Smj&hU=os)z9Z$;k~qW58w39>U;io!-CtBh;NIr`!x|NfmUTy6{=1%e76a&vDc}S zO-7bkATko*LZ|mQ6N4MA!->qW*IIrO1+*4d#Y4pK__v5djdlg|TsgG|DzZaA7sFhT z60}>Fp(x#^qaH*niKYSjv#;e~fg~Rews{OuJ#Fw<6aOL~jcYC_=?VZ39aY;`-E{U~ zy!712?5F59F3r3Kt#{dx>Q+bDEA=X0|K~PaaTgp|&e$J`B2wK1JqXtUZGgLO34uun z4V4Prh;7Zgv5Q}HfV(Q;SWu&R)9T?9wJA{gT^~u_mKAX=@xDc3Pd3(De-Uk$nK{X> zavq|&v`dNzFrxjiLyd*K%4haF=DNzWTHI9MJNoh<#aGQ`dhTHzq2jLC?zm;sYJ|hp zde;Kz(6TtVTHmgii+F}$3)@&L&U8T=*yfqf)cR%vAVr)p?V(wH zjU{1>DfGvDCp469u_YzrZNCiN+gY3j;)tkOYfw_92oEsG5LnrK zng0Gt!T8<;`~xq^V$X4>`EomH;}yz9ZAOMsOnhXND4jYfn4Q#a2$|~LyBg|IrrzIy zXqMYB#0Zbpsha_o@YD}neg;8VolOXY4_#t)CVQ6o%c}hMwemQ33X2IbmYU(o z0b-K_w06?*(l zG)+oOz<@xaQUUL(4Ft=wlqc>u*KH_Jmw>JK23ZFwCeu*s)uSQ1$wwk&`GR14)6HOB z8#xvajSh)`!qt+8-liopQ*3_wFwU{r=?}z51EFh(R;FDA7>7msceL$0YaFcKBT#t=2iW2d>GOwGzk=%|grV)~i>l`Xk)86vpm<(^Hl@8k zjsHl0mIa#@pUxXCJk8%MGzFBTrd?Aw*^CI`H)^{)3;c;XkmM)eXRu+M4nlOZp`R{R zw-GW7`L|s|9T3zfQ<5h^t))z^ndgh%X@L8IZWx1>1Q33a75~*z6CqV6%28DaBE}Dj zm?!h<-x7x+OK>+AGm1q)@qV)g+N<026Wshv*957VqQv?A7~SEMnUS1xVWZU+U7_NP zQYu!r&P;Yoon~SI-<-0+1sMR`ku;Y+wH){l;=YU zmJfYY7aA;Gwe`$!!alnKh!rT6UOXLcp=vx zaMS>p=Dn`-rn=7fJ_K=!8j(Xk_lV>VwO65!Z|ppCryy|^mykC#U{}gx@V4O^M?wn) z>G`sCxzs*amwvIIPH{k}Q(Ywk*V%1=Nbzl*YT{1uDgJVg{18k>6Ha0a#38J;uf(UC z_uQh2%MSqS4QpG$S^!BZXXgaLllo~OeK!Wj;csmo^D48OpXcAErzk`;=6dq!Nd}5^ zL$Jq(FZfdt_hL?e0uvtfPChKH{fVH!Ce=imqWh3*oeEli>~((I<&ra|GF<^Uz?aqJ zA@{fW6u2^P$pTA3nMhme$v1#2t0r=u%^5!m&U&!1`NDNili6tiA7nGy1NpvDOSXiW2-zD(cR_o z3m!J%U3NbZfETEYpiLZ zl%EV85{)AsLm84#huW^YfW#IqOg>3@4v5ZcGyet+0@BZu44O9D^K?Ev&Oetm1t&bH zJ>WZ@6dx*Xzg3itYc_xzu~dZ3?!KnR^}2WE_G**)QQR+GmZb)?bX6wISSLTd8tE;{ zBavC$w>CU{Uz^(yx8e@-kFfR^VbF1s{x@^KCLWiagf%iufd4pWk$pieu;;&~OmbaF zjkiWl420hcoqM%rpbaegTSNR^-z2gwV&=5a?MW5fqi<#=Y7apA()`@K_mu( z`gZwhQrGvqJarQwZA?&v25T|2)T^ISP%mobt(R`YYVxcXq<;V&$$q(1@gaV1!MrV! zP3U%UB`yYOhZ|1Pf0cFBaZ#*Y7#8Vn7nfYRK|)|bIz^F?5CjS7k}emJ@Ja{{-HkM| zfOLt7C?F!;wUPo?T7_>!zbokcGrQ+~&e`+U{&r^1JP+^qBev9VT)92LkIyg9L%o3{ zIvun1LUiM^{BWbSw*>DP>>A;Ikgr3?r&s0B`f+;;>wLEL9?ReTsPlaO9Z3|K!_6vT zttu9#R&#q_Q^9prk*z#mr^j_T-MH9AU&e|ga74pNLcD_G$y&6A@uOmVjO4ce zm-`4MT%Y81rGB~)5_R06GmRaKI4sd_!0{&Ae85}Z@I-QPhg5u)_v(!pzrflz zRUO0IL?Br@|5#Mkv_)e3; z;YmJ1kJa+YqbRd|{_o-eij$9of@}wD#MSG=ghxH^4?^}wY!!V%xo7!D-4;CpUAZZ4 z=${A`+G+E%3f#yVfMvZwK$l)4sZzRh+(@=_O1qRQk4fXYl<)?`hnSscHTmg++ztcu zRHyRY`~7Y_P7m0;$-GY}-J`<29{#c@6&UrT3?)Xf}7J5@w@D{*B!uIH$3tzk+8$6IR7lm5iS{nk#Ze> zJVv!CD91E`4BXo?rC*iw4I6QCNpNwLrH#n1*N z8q$D#FSExj*VMPe|f1zlShPl0k~ zvu0*Mf#C&VB-_i3H18#X_deYFZ`V3Bm&emCO<@tN9*8 zTNP=h)&KLw*KqnxA_0d=y!_$fQ2RtMp3o!8q(#+;1}mN@oS@he`Xj#@MO9hj5GrB| zU8z?C=qQcmyPTrrU3cX}@D!C)KcHWoe5+wz?R6n7{zvmmT_3ptuPrid7H(18IN zzNkik>~iUHJCy%XTQIMi9IFg?F3q}EL#o<=WjG%kS;@3!9P`ybhMdL{OEfh=_9;U* z7QbpB_M7{135QIWG?uiY^)gIcq>AX^3x+Y${M`yNsxjC;Q7Pg9vR#N6l`Cy`V&*D{ zx@E*@EvXsy1Fv}mbn>f0MdM|dc1RyGG@)&Vf7Ryvr>gnFAkAk29|NP58Uuq9nC+zp z1UE>K@%lbyR7=z+npLS|M1YwXD;Zvcd7PCO^W&RjWJ`EfqWUO&5wq0mVt}P33f0$l z-=^%OzD2??^JWp( z$MZ^v*Y*J!a+e!Grr`)W_)ccc7Tta*~X#Ztu6l+ zZE2Tvwcgc*X>8&$Vsr+SI+>Xm8M`XT$~@_Ts=aOBZ!@;N7v~5a+peKl6-yp#Dzn;f zG%Co_FaU`$TosB3A8K7+pAf7ZQZUw1zJ_$15^VanxFlTX;S>dWQ+1EH5Xbkc6c4#{ zoO)eGU(iPLcX1L@)bg(j7*jPvqOBtBhH!zCst8w<~(hM#%v#q^*Z$)b%$u>4Ebr)IP zJXX1EZ}gSbUGZ&uCdqTRiVXhuLJ&d+VHGu0y@~RzO|EOv%fo?U9SvcP@2V5V3Jh^7 zrZj6O;x&$$rH$KK2o%<|YZIo2%9bYGMAsrq?^YyMR?BN3NBAb#<#H@EGyGR3Q-|Hk zaUpvla?#FGS1D7$Kh_3$15mMrX_t^(g56nGs&z~a@5p0@Hul<&S#epNX-eI>blDzj z>oN%}=ve0D+vh?)z^aAanJnyb12U@dpoTrJCaJvRa>^X2`rr+Riui3?XlCrT;r)|3 zC%+;1luaS;7RCI)35SNIiFe?&G3b;;I?!K~4mFKc2Jm*uI7_xYZW zu#AeDilMWS=Zn~WO8YlZb@e=CozAl_+&xy<5iymENLrfYnuiE+W?L+r7wYR0V zDm%@(Mm*07)D4>9lU=(0P}94%rulvD8TtA1$;P#R?F<3`ts zG0XcCd{aHslmCin(rn+RZhg6__buo$TLd{2sk_bb&9KW<_Zu}*XB#X%>bk1;jnJCa zVOa>C!_DGHY|}(V;?((RUb=*XHkIR?Fr(mG0 zmF%qJ)bh;~cyD3ohiS?J2LXT=Ex^4q3BPljoMs{(`Oh zdgP+CNmcEjMT9`Y2g<6V?u`2slA5@x?(fBv*hF<(2oL+vM(iVs0W)mx$gf#n^X%+! zn;BnB64{=ZH(|TK;m^o{a@bmHe((aZ68|F9!?DFV#W1WVXUp&P6=XWlQa_?Ku5r&X zAT2axxhAQw+#)lV;AvgbF+*?m)i461N@#lZxO@q>`}-qk#;(7S^KL2afaHpysp{G# z#2Q<5%K)k+ZrCKlgX(UJj|~I*txBXj{eZy@W1bMyIU;vFE+(2w1?YVu%V5j07t*}|3+J`@XOv2Q-=dw!F1$m1R_GnH zI6D8jY`XFk_zV$G;!QrwkArxf`0$`xrCZ(Vb@$fEnzVU{-S?&B^I`OO@B4~IMON{> z`7uphV8qWmT|+Fk7i=N{vG6T3ge&BW`Rhl*Q3YHg5w_kkq&i3g!Kef-UiUp33BNLP z=jSM|Y?K$d52tWwM0zhwF%2IepVrwlUW8;m<2o>h9Gqq+Dsd zcPMfz%|FE9@hmfp8K5t8ki!b7U?QAYCf!wk_cDI*h-AJYWxjT=jz1JrQ=BL`LDArI_0xhDsKfBx;%?5CMmjX*c3DUcbK*%41{Aw)Byz96=`# zD#^<-toG7#q>#``$N!)J_IP zn~u3?F5}$`aRzl3bo$Pj?ZwPOCel&%+?UG}b(a<3)T&$y{GNI)m&*s>I&&}5c)rN6 zRIx=^SKfPssH~OBNa~P0GV!~pPWt4nl9s*NEuEX6L*uHl4EaLKGAu*5(o=1WRV{de zPz>bR6XxPye2`s1ck_G%T~OkRnlP5=Cy^$woNJmlr__!H7G9V2$BR^XFmuq4=nwBd zdX2?Af<B<3WS3<32sEVb2gEye?0TUVA$6X`1c0Uprvh^p2#&uE*1&Q zWL8FNu1(FL(YZ8kwB1FYQF--?*y}V<$}WcWd=x=Z^AjYDhEtMB&fWKF15T+MN)#jp z!Q@_4zr=fkChReVf_KJpc_hdXTOArxOrICR_`&H0nKgWS{ZOQYBFU>RNt{Cb%gC$w zGLFh1x^8?2gf^ys32t3Ep0WOga`-H5UE5caSzH@xDkb%NIclGw6j_Z~5j!J@3S}Yr zHJFJ%UJdg36}_IDMY{AFs%m5@@&tWs?*u=yjx>=Gy3ks!Oewa$rp&6%;dfLr88?Re zcygpKV(@iF*a$FH>C5dxL#!sLOWDdBBkr!|9?j~M*5D)=Ph1fr#Z38BLJEh~c&TTBRuk28b3ocvJW{y66kf=(z^z0u~OoAWh0?R={^cD3Cr$0C6V*GD)BS9}(Su(H17*kP{NnEd8J9 z+7ukK5^$N41V6u@3JQk(dE^BtQv)}pVZiznHP|FT0|hQk6F>@RPK}=yDL~_`X*gsZ z1{&Z%1q_$x&tX|Uux-@A1#cQCLAAt1>szvjwTJ& zpCkE0%n-<)qk&9bImI|$A>;iM^FzI`5EBC<7aW)?=ki#WI&}(=BLBwctlKV6L1zFHR0PvUnJGFCyUguI9Q~;gefT_aYshyK{I_JcxeCjl~ zzuWWIq0=Cd3XF7h4k@8%}NnL-r{Qd&?=6<$Y z7M>vg3U~qQf%n%upOUqK`(+f|k#gsvDtnzeZG7TAlf)@06S(jmfN+s>@DaaLxbZUM z8Tfe;nBVxkptnd6&IOKiZ_L?DKRrE-Lc9V4o0?qCsO$`l*p=mHJFF=boqeoeTIi6`64gcR2??U-SAKpBKbccnWV@Wje!p z_p?B8bCnvhS@bI!E-}A_!(BJGUy}_8tid7Jt*4D7%|!q8BD(c#H=nly*=w?3KjuMn z{7di+3&6GhV@Zpx!y!{Wpu6y2v-tZa-;es--$!21Mn5puEAW@Yxw{*`@!(io9|Rp> O;LQ#O9OtPYE&l^NyjRr# delta 38549 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 ltSba#rbH)&uY59oK&k!`i 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index f42e62f3..761b8f08 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.6-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.0.2-all.zip +networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a69d9cb6..79a61d42 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,10 +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##*/} +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit # 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"' @@ -143,12 +143,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 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% From 34a03ffe64ef490bc4e5c3224656e6399659f644 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 13 Mar 2023 08:55:57 +0000 Subject: [PATCH 44/62] chore(deps): update all non-major dependencies --- build.gradle | 2 +- graphql-java-servlet/build.gradle | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/build.gradle b/build.gradle index 0641ae23..ca0f6f45 100644 --- a/build.gradle +++ b/build.gradle @@ -30,7 +30,7 @@ plugins { 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/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index d3bc0643..5d9eb6ec 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -32,12 +32,12 @@ dependencies { testImplementation 'io.github.graphql-java:graphql-java-annotations:8.3' // Unit testing - testImplementation "org.apache.groovy:groovy-all:4.0.9" + testImplementation "org.apache.groovy:groovy-all:4.0.10" testImplementation "org.spockframework:spock-core:2.3-groovy-4.0" testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" - testImplementation 'org.springframework:spring-test:6.0.5' - testRuntimeOnly 'org.springframework:spring-web:6.0.5' + testImplementation 'org.springframework:spring-test:6.0.6' + testRuntimeOnly 'org.springframework:spring-web:6.0.6' testImplementation 'com.google.guava:guava:31.1-jre' } From 76fb7bd36fac1141d690a9524dc03942737aca13 Mon Sep 17 00:00:00 2001 From: Federico Rispo Date: Sat, 11 Feb 2023 23:42:16 +0100 Subject: [PATCH 45/62] fix(deps): update graphql-java to v20.0.0 To update graphql-java to version 20.0.0 some changes are necessary: - the signature of DataLoaderDispatcherInstrumentation methods now have the InstrumentationState parameter. The ConfigurableDispatchInstrumentation is aligned to these changes - The SimpleInstrumentation is replaced by SimplePerformantInstrumentation. Now all the codebase uses the new class --- gradle.properties | 2 +- .../execution/GraphQLQueryInvoker.java | 10 +-- .../execution/config/GraphQLBuilder.java | 4 +- .../ConfigurableDispatchInstrumentation.java | 65 +++++++++++-------- .../NoOpInstrumentationProvider.java | 4 +- graphql-java-servlet/build.gradle | 2 +- .../servlet/DataLoaderDispatchingSpec.groovy | 12 ++-- .../servlet/OsgiGraphQLHttpServletSpec.groovy | 4 +- 8 files changed, 57 insertions(+), 46 deletions(-) diff --git a/gradle.properties b/gradle.properties index fe7b7521..12dcffd0 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ PROJECT_LICENSE=MIT PROJECT_LICENSE_URL=https://github.com/graphql-java-kickstart/spring-java-servlet/blob/master/LICENSE.md PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans -LIB_GRAPHQL_JAVA_VER=19.3 +LIB_GRAPHQL_JAVA_VER=20.0 LIB_JACKSON_VER=2.14.2 LIB_SLF4J_VER=2.0.6 LIB_LOMBOK_VER=1.18.26 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 06982331..19370561 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 @@ -2,7 +2,7 @@ import graphql.execution.instrumentation.ChainedInstrumentation; import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.SimpleInstrumentation; +import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentationOptions; import graphql.execution.preparsed.NoOpPreparsedDocumentProvider; import graphql.execution.preparsed.PreparsedDocumentProvider; @@ -12,7 +12,9 @@ import java.util.List; import java.util.function.Supplier; -/** @author Andrew Potter */ +/** + * @author Andrew Potter + */ public class GraphQLQueryInvoker { private final Supplier getExecutionStrategyProvider; @@ -48,12 +50,12 @@ public static class Builder { private Supplier getExecutionStrategyProvider = DefaultExecutionStrategyProvider::new; - private Supplier getInstrumentation = () -> SimpleInstrumentation.INSTANCE; + private Supplier getInstrumentation = () -> SimplePerformantInstrumentation.INSTANCE; private Supplier getPreparsedDocumentProvider = () -> NoOpPreparsedDocumentProvider.INSTANCE; private Supplier dataLoaderDispatcherInstrumentationOptionsSupplier = - DataLoaderDispatcherInstrumentationOptions::newOptions; + DataLoaderDispatcherInstrumentationOptions::newOptions; public Builder withExecutionStrategyProvider(ExecutionStrategyProvider provider) { return withExecutionStrategyProvider(() -> provider); 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 f275b48f..7f5c1dcd 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 @@ -4,7 +4,7 @@ import graphql.execution.ExecutionStrategy; import graphql.execution.instrumentation.ChainedInstrumentation; import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.SimpleInstrumentation; +import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentation; import graphql.execution.preparsed.NoOpPreparsedDocumentProvider; import graphql.execution.preparsed.PreparsedDocumentProvider; @@ -20,7 +20,7 @@ public class GraphQLBuilder { () -> NoOpPreparsedDocumentProvider.INSTANCE; @Getter - private Supplier instrumentationSupplier = () -> SimpleInstrumentation.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 4a103fa8..23565b2e 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 @@ -35,7 +35,9 @@ public class ConfigurableDispatchInstrumentation extends DataLoaderDispatcherIns private final Function approachFunction; - /** Creates a DataLoaderDispatcherInstrumentation with the default options */ + /** + * Creates a DataLoaderDispatcherInstrumentation with the default options + */ public ConfigurableDispatchInstrumentation( Function approachFunction) { this(DataLoaderDispatcherInstrumentationOptions.newOptions(), approachFunction); @@ -46,8 +48,7 @@ public ConfigurableDispatchInstrumentation( * * @param options the options to control the behaviour */ - public ConfigurableDispatchInstrumentation( - DataLoaderDispatcherInstrumentationOptions options, + public ConfigurableDispatchInstrumentation(DataLoaderDispatcherInstrumentationOptions options, Function approachFunction) { this.options = options; this.approachFunction = approachFunction; @@ -59,26 +60,27 @@ public InstrumentationState createState(InstrumentationCreateStateParameters par return new DataLoaderDispatcherInstrumentationState( registry, approachFunction.apply(registry), - parameters.getExecutionInput().getExecutionId()); + parameters.getExecutionInput().getExecutionId() + ); } @Override - public DataFetcher instrumentDataFetcher( - DataFetcher dataFetcher, InstrumentationFieldFetchParameters parameters) { - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); + public DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, + InstrumentationFieldFetchParameters parameters, InstrumentationState instrumentationState) { + DataLoaderDispatcherInstrumentationState state = InstrumentationState.ofState( + instrumentationState); if (state.isAggressivelyBatching()) { return dataFetcher; } // // currently only AsyncExecutionStrategy with DataLoader and hence this allows us to "dispatch" - // on every object if its not using aggressive batching for other execution strategies + // on every object if it's not using aggressive batching for other execution strategies // which allows them to work if used. - return (DataFetcher) - environment -> { - Object obj = dataFetcher.get(environment); - doImmediatelyDispatch(state); - return obj; - }; + return (DataFetcher) environment -> { + Object obj = dataFetcher.get(environment); + doImmediatelyDispatch(state); + return obj; + }; } private void doImmediatelyDispatch(DataLoaderDispatcherInstrumentationState state) { @@ -87,12 +89,14 @@ private void doImmediatelyDispatch(DataLoaderDispatcherInstrumentationState stat @Override public InstrumentationContext beginExecuteOperation( - InstrumentationExecuteOperationParameters parameters) { + InstrumentationExecuteOperationParameters parameters, + InstrumentationState instrumentationState) { if (!isDataLoaderCompatible(parameters.getExecutionContext())) { - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); + DataLoaderDispatcherInstrumentationState state = InstrumentationState.ofState( + instrumentationState); state.setAggressivelyBatching(false); } - return new SimpleInstrumentationContext<>(); + return SimpleInstrumentationContext.noOp(); } private boolean isDataLoaderCompatible(ExecutionContext executionContext) { @@ -111,8 +115,10 @@ private boolean isDataLoaderCompatible(ExecutionContext executionContext) { @Override public ExecutionStrategyInstrumentationContext beginExecutionStrategy( - InstrumentationExecutionStrategyParameters parameters) { - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); + InstrumentationExecutionStrategyParameters parameters, + InstrumentationState instrumentationState) { + DataLoaderDispatcherInstrumentationState state = InstrumentationState.ofState( + instrumentationState); // // if there are no data loaders, there is nothing to do // @@ -134,36 +140,39 @@ public void onCompleted(ExecutionResult result, Throwable t) { @Override public InstrumentationContext beginFieldFetch( - InstrumentationFieldFetchParameters parameters) { - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); + InstrumentationFieldFetchParameters parameters, InstrumentationState instrumentationState) { + DataLoaderDispatcherInstrumentationState state = InstrumentationState.ofState( + instrumentationState); // // if there are no data loaders, there is nothing to do // if (state.hasNoDataLoaders()) { - return new SimpleInstrumentationContext<>(); + return SimpleInstrumentationContext.noOp(); } return state.getApproach().beginFieldFetch(parameters); } @Override public CompletableFuture instrumentExecutionResult( - ExecutionResult executionResult, InstrumentationExecutionParameters parameters) { - DataLoaderDispatcherInstrumentationState state = parameters.getInstrumentationState(); + ExecutionResult executionResult, InstrumentationExecutionParameters parameters, + InstrumentationState instrumentationState) { + DataLoaderDispatcherInstrumentationState state = InstrumentationState.ofState( + instrumentationState); state.getApproach().removeTracking(parameters.getExecutionInput().getExecutionId()); if (!options.isIncludeStatistics()) { return CompletableFuture.completedFuture(executionResult); } else { Map currentExt = executionResult.getExtensions(); - Map statsMap = - new LinkedHashMap<>(currentExt == null ? Collections.emptyMap() : currentExt); + Map statsMap = new LinkedHashMap<>( + currentExt == null ? Collections.emptyMap() : currentExt); Map dataLoaderStats = buildStatisticsMap(state); statsMap.put("dataloader", dataLoaderStats); log.debug("Data loader stats : {}", dataLoaderStats); return CompletableFuture.completedFuture( - new ExecutionResultImpl( - executionResult.getData(), executionResult.getErrors(), statsMap)); + new ExecutionResultImpl(executionResult.getData(), executionResult.getErrors(), + statsMap)); } } diff --git a/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/instrumentation/NoOpInstrumentationProvider.java b/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/instrumentation/NoOpInstrumentationProvider.java index 0190c731..e43d3f14 100644 --- a/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/instrumentation/NoOpInstrumentationProvider.java +++ b/graphql-java-kickstart/src/main/java/graphql/kickstart/execution/instrumentation/NoOpInstrumentationProvider.java @@ -1,13 +1,13 @@ package graphql.kickstart.execution.instrumentation; import graphql.execution.instrumentation.Instrumentation; -import graphql.execution.instrumentation.SimpleInstrumentation; +import graphql.execution.instrumentation.SimplePerformantInstrumentation; import graphql.kickstart.execution.config.InstrumentationProvider; public class NoOpInstrumentationProvider implements InstrumentationProvider { @Override public Instrumentation getInstrumentation() { - return SimpleInstrumentation.INSTANCE; + return SimplePerformantInstrumentation.INSTANCE; } } diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 5d9eb6ec..9e741d03 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -29,7 +29,7 @@ dependencies { compileOnly 'org.osgi:org.osgi.service.metatype.annotations:1.4.1' compileOnly 'org.osgi:org.osgi.annotation:6.0.0' - testImplementation 'io.github.graphql-java:graphql-java-annotations:8.3' + testImplementation 'io.github.graphql-java:graphql-java-annotations:9.1' // Unit testing testImplementation "org.apache.groovy:groovy-all:4.0.10" diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy index 58003651..89f1abe1 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy @@ -4,7 +4,7 @@ import com.fasterxml.jackson.databind.ObjectMapper import graphql.ExecutionInput import graphql.execution.instrumentation.ChainedInstrumentation import graphql.execution.instrumentation.Instrumentation -import graphql.execution.instrumentation.SimpleInstrumentation +import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.execution.instrumentation.dataloader.DataLoaderDispatcherInstrumentationOptions import graphql.kickstart.execution.context.ContextSetting import graphql.kickstart.execution.context.DefaultGraphQLContext @@ -14,7 +14,7 @@ import graphql.kickstart.servlet.context.GraphQLServletContextBuilder import graphql.schema.DataFetcher import graphql.schema.DataFetchingEnvironment import org.dataloader.BatchLoader -import org.dataloader.DataLoader +import org.dataloader.DataLoaderFactory import org.dataloader.DataLoaderRegistry import org.springframework.mock.web.MockHttpServletRequest import org.springframework.mock.web.MockHttpServletResponse @@ -59,9 +59,9 @@ class DataLoaderDispatchingSpec extends Specification { def registry() { DataLoaderRegistry registry = new DataLoaderRegistry() - registry.register("A", DataLoader.newDataLoader(batchLoaderWithCounter(fetchCounterA))) - registry.register("B", DataLoader.newDataLoader(batchLoaderWithCounter(fetchCounterB))) - registry.register("C", DataLoader.newDataLoader(batchLoaderWithCounter(fetchCounterC))) + registry.register("A", DataLoaderFactory.newDataLoader(batchLoaderWithCounter(fetchCounterA))) + registry.register("B", DataLoaderFactory.newDataLoader(batchLoaderWithCounter(fetchCounterB))) + registry.register("C", DataLoaderFactory.newDataLoader(batchLoaderWithCounter(fetchCounterC))) registry } @@ -120,7 +120,7 @@ class DataLoaderDispatchingSpec extends Specification { mapper.readValue(response.getContentAsByteArray(), List) } - Instrumentation simpleInstrumentation = new SimpleInstrumentation() + Instrumentation simpleInstrumentation = new SimplePerformantInstrumentation() ChainedInstrumentation chainedInstrumentation = new ChainedInstrumentation(Collections.singletonList(simpleInstrumentation)) def simpleSupplier = { simpleInstrumentation } def chainedSupplier = { chainedInstrumentation } diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/OsgiGraphQLHttpServletSpec.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/OsgiGraphQLHttpServletSpec.groovy index 7556946a..ea4ed23d 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/OsgiGraphQLHttpServletSpec.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/OsgiGraphQLHttpServletSpec.groovy @@ -5,7 +5,7 @@ import graphql.annotations.annotationTypes.GraphQLField import graphql.annotations.annotationTypes.GraphQLName import graphql.annotations.processor.GraphQLAnnotations import graphql.execution.instrumentation.InstrumentationState -import graphql.execution.instrumentation.SimpleInstrumentation +import graphql.execution.instrumentation.SimplePerformantInstrumentation import graphql.execution.instrumentation.parameters.InstrumentationCreateStateParameters import graphql.kickstart.execution.GraphQLRequest import graphql.kickstart.execution.config.ExecutionStrategyProvider @@ -349,7 +349,7 @@ class OsgiGraphQLHttpServletSpec extends Specification { def "instrumentation provider is bound and unbound"() { setup: def servlet = new OsgiGraphQLHttpServlet() - def instrumentation = new SimpleInstrumentation() + def instrumentation = new SimplePerformantInstrumentation() def instrumentationProvider = Mock(InstrumentationProvider) instrumentationProvider.getInstrumentation() >> instrumentation def request = GraphQLRequest.createIntrospectionRequest() From 592c6bc68e3d2d183aeb625d8d9b1741385ad3e0 Mon Sep 17 00:00:00 2001 From: Federico Rispo Date: Sun, 12 Feb 2023 17:13:01 +0100 Subject: [PATCH 46/62] fix: linting --- .../execution/GraphQLQueryInvoker.java | 5 +- .../execution/config/GraphQLBuilder.java | 3 +- .../ConfigurableDispatchInstrumentation.java | 58 ++++++++++--------- 3 files changed, 35 insertions(+), 31 deletions(-) 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..b03f2ec8 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,12 +50,13 @@ 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 dataLoaderDispatcherInstrumentationOptionsSupplier = - DataLoaderDispatcherInstrumentationOptions::newOptions; + DataLoaderDispatcherInstrumentationOptions::newOptions; public Builder withExecutionStrategyProvider(ExecutionStrategyProvider provider) { return withExecutionStrategyProvider(() -> provider); 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..477071be 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 @@ -35,9 +35,7 @@ public class ConfigurableDispatchInstrumentation extends DataLoaderDispatcherIns private final Function approachFunction; - /** - * Creates a DataLoaderDispatcherInstrumentation with the default options - */ + /** Creates a DataLoaderDispatcherInstrumentation with the default options */ public ConfigurableDispatchInstrumentation( Function approachFunction) { this(DataLoaderDispatcherInstrumentationOptions.newOptions(), approachFunction); @@ -48,7 +46,8 @@ public ConfigurableDispatchInstrumentation( * * @param options the options to control the behaviour */ - public ConfigurableDispatchInstrumentation(DataLoaderDispatcherInstrumentationOptions options, + public ConfigurableDispatchInstrumentation( + DataLoaderDispatcherInstrumentationOptions options, Function approachFunction) { this.options = options; this.approachFunction = approachFunction; @@ -60,15 +59,16 @@ public InstrumentationState createState(InstrumentationCreateStateParameters par return new DataLoaderDispatcherInstrumentationState( registry, approachFunction.apply(registry), - parameters.getExecutionInput().getExecutionId() - ); + parameters.getExecutionInput().getExecutionId()); } @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; } @@ -76,11 +76,12 @@ public DataFetcher instrumentDataFetcher(DataFetcher dataFetcher, // currently only AsyncExecutionStrategy with DataLoader and hence this allows us to "dispatch" // on every object if it's not using aggressive batching for other execution strategies // which allows them to work if used. - return (DataFetcher) environment -> { - Object obj = dataFetcher.get(environment); - doImmediatelyDispatch(state); - return obj; - }; + return (DataFetcher) + environment -> { + Object obj = dataFetcher.get(environment); + doImmediatelyDispatch(state); + return obj; + }; } private void doImmediatelyDispatch(DataLoaderDispatcherInstrumentationState state) { @@ -92,8 +93,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 +118,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 +142,8 @@ public void onCompleted(ExecutionResult result, Throwable t) { @Override public InstrumentationContext beginFieldFetch( InstrumentationFieldFetchParameters parameters, InstrumentationState instrumentationState) { - DataLoaderDispatcherInstrumentationState state = InstrumentationState.ofState( - instrumentationState); + DataLoaderDispatcherInstrumentationState state = + InstrumentationState.ofState(instrumentationState); // // if there are no data loaders, there is nothing to do // @@ -154,25 +155,26 @@ public InstrumentationContext beginFieldFetch( @Override public CompletableFuture instrumentExecutionResult( - ExecutionResult executionResult, InstrumentationExecutionParameters parameters, + ExecutionResult executionResult, + InstrumentationExecutionParameters parameters, InstrumentationState instrumentationState) { - DataLoaderDispatcherInstrumentationState state = InstrumentationState.ofState( - instrumentationState); + DataLoaderDispatcherInstrumentationState state = + InstrumentationState.ofState(instrumentationState); state.getApproach().removeTracking(parameters.getExecutionInput().getExecutionId()); if (!options.isIncludeStatistics()) { return CompletableFuture.completedFuture(executionResult); } else { Map currentExt = executionResult.getExtensions(); - Map statsMap = new LinkedHashMap<>( - currentExt == null ? Collections.emptyMap() : currentExt); + Map statsMap = + new LinkedHashMap<>(currentExt == null ? Collections.emptyMap() : currentExt); Map dataLoaderStats = buildStatisticsMap(state); statsMap.put("dataloader", dataLoaderStats); log.debug("Data loader stats : {}", dataLoaderStats); return CompletableFuture.completedFuture( - new ExecutionResultImpl(executionResult.getData(), executionResult.getErrors(), - statsMap)); + new ExecutionResultImpl( + executionResult.getData(), executionResult.getErrors(), statsMap)); } } From 31471c1857324f5d554db8edba073b25ae2b658f Mon Sep 17 00:00:00 2001 From: Federico Rispo Date: Sat, 11 Feb 2023 15:43:30 +0100 Subject: [PATCH 47/62] fix: Downgrade to javax and JDK11 - Reverted github workflows to build the project with JDK11 - Replaced jakarta imports with javax - Updated README with a description of the reason for this version. --- .github/workflows/pull-request.yml | 6 +++--- .github/workflows/release.yml | 8 ++++---- .github/workflows/snapshot.yml | 12 ++++++------ README.md | 14 ++++++++++++-- gradle.properties | 6 +++--- graphql-java-servlet/build.gradle | 9 ++++----- .../servlet/AbstractGraphQLHttpServlet.java | 8 ++++---- .../kickstart/servlet/AsyncTimeoutListener.java | 4 ++-- .../servlet/BatchedQueryResponseWriter.java | 4 ++-- .../servlet/ErrorQueryResponseWriter.java | 4 ++-- .../servlet/ExecutionResultSubscriber.java | 2 +- .../servlet/GraphQLGetInvocationInputParser.java | 4 ++-- .../servlet/GraphQLInvocationInputParser.java | 6 +++--- .../GraphQLMultipartInvocationInputParser.java | 8 ++++---- .../GraphQLPostInvocationInputParser.java | 4 ++-- .../servlet/GraphQLWebsocketServlet.java | 16 ++++++++-------- .../kickstart/servlet/HttpRequestHandler.java | 4 ++-- .../servlet/HttpRequestHandlerImpl.java | 4 ++-- .../kickstart/servlet/HttpRequestInvoker.java | 4 ++-- .../servlet/HttpRequestInvokerImpl.java | 6 +++--- .../kickstart/servlet/ListenerHandler.java | 4 ++-- .../servlet/OsgiGraphQLHttpServlet.java | 2 +- .../kickstart/servlet/QueryResponseWriter.java | 4 ++-- .../SingleAsynchronousQueryResponseWriter.java | 6 +++--- .../servlet/SingleQueryResponseWriter.java | 4 ++-- .../servlet/SubscriptionAsyncListener.java | 4 ++-- .../kickstart/servlet/apollo/ApolloScalars.java | 2 +- ...olloWebSocketSubscriptionProtocolFactory.java | 2 +- .../ApolloWebSocketSubscriptionSession.java | 2 +- .../cache/BufferedHttpServletResponse.java | 8 ++++---- .../kickstart/servlet/cache/CacheReader.java | 4 ++-- .../servlet/cache/CachingHttpRequestInvoker.java | 4 ++-- .../cache/CachingQueryResponseWriter.java | 4 ++-- .../cache/GraphQLResponseCacheManager.java | 2 +- .../DefaultGraphQLSchemaServletProvider.java | 4 ++-- .../config/GraphQLSchemaServletProvider.java | 4 ++-- .../context/DefaultGraphQLServletContext.java | 6 +++--- .../DefaultGraphQLServletContextBuilder.java | 8 ++++---- .../context/DefaultGraphQLWebSocketContext.java | 4 ++-- .../servlet/context/GraphQLServletContext.java | 6 +++--- .../context/GraphQLServletContextBuilder.java | 8 ++++---- .../servlet/context/GraphQLWebSocketContext.java | 4 ++-- .../core/DefaultGraphQLRootObjectBuilder.java | 4 ++-- .../servlet/core/GraphQLServletListener.java | 4 ++-- .../core/GraphQLServletRootObjectBuilder.java | 4 ++-- .../servlet/core/internal/VariableMapper.java | 2 +- .../servlet/input/BatchInputPreProcessor.java | 4 ++-- .../input/GraphQLInvocationInputFactory.java | 8 ++++---- .../input/NoOpBatchInputPreProcessor.java | 4 ++-- .../FallbackSubscriptionProtocolFactory.java | 2 +- .../subscriptions/WebSocketSendSubscriber.java | 2 +- .../WebSocketSubscriptionProtocolFactory.java | 2 +- .../WebSocketSubscriptionSession.java | 2 +- .../BatchedQueryResponseWriterTest.groovy | 6 +++--- .../servlet/DataLoaderDispatchingSpec.groovy | 8 ++++---- ...gleAsynchronousQueryResponseWriterTest.groovy | 4 ++-- .../servlet/SingleQueryResponseWriterTest.groovy | 6 +++--- .../servlet/TestBatchInputPreProcessor.java | 4 ++-- .../kickstart/servlet/TestMultipartPart.groovy | 2 +- .../servlet/cache/CacheReaderTest.groovy | 6 +++--- .../cache/CachingHttpRequestInvokerTest.groovy | 6 +++--- 61 files changed, 159 insertions(+), 150 deletions(-) diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml index 6f5bc79e..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: [ 17, 19 ] + java: [ 11 ] needs: validation runs-on: ${{ matrix.os }} steps: @@ -60,12 +60,12 @@ jobs: if: env.SONAR_TOKEN != null with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 17 + - name: Set up JDK 11 if: env.SONAR_TOKEN != null uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 17 + java-version: 11 - name: Cache SonarCloud packages if: env.SONAR_TOKEN != null uses: actions/cache@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 714b21c1..ce94f1f0 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -20,11 +20,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 17 + java-version: 11 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 17 + java-version: 11 with: path: | ~/.gradle/caches @@ -48,11 +48,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 17 + java-version: 11 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 17 + java-version: 11 with: path: | ~/.gradle/caches diff --git a/.github/workflows/snapshot.yml b/.github/workflows/snapshot.yml index 8993506c..77fb6495 100644 --- a/.github/workflows/snapshot.yml +++ b/.github/workflows/snapshot.yml @@ -23,11 +23,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 17 + java-version: 11 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 17 + java-version: 11 with: path: | ~/.gradle/caches @@ -51,11 +51,11 @@ jobs: uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 17 + java-version: 11 - name: Cache Gradle uses: actions/cache@v3 env: - java-version: 17 + java-version: 11 with: path: | ~/.gradle/caches @@ -80,11 +80,11 @@ jobs: - uses: actions/checkout@v3 with: fetch-depth: 0 # Shallow clones should be disabled for a better relevancy of analysis - - name: Set up JDK 17 + - name: Set up JDK 11 uses: actions/setup-java@v3 with: distribution: 'zulu' - java-version: 17 + java-version: 11 - name: Cache SonarCloud packages uses: actions/cache@v3 with: diff --git a/README.md b/README.md index 8a4d3bff..1967bd18 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,4 @@ -# GraphQL Java Servlet +# GraphQL Java Servlet 14 [![Maven Central](https://img.shields.io/maven-central/v/com.graphql-java-kickstart/graphql-java-servlet.svg)](https://maven-badges.herokuapp.com/maven-central/com.graphql-java-kickstart/graphql-java-servlet) [![Build Status](https://github.com/graphql-java-kickstart/graphql-java-servlet/workflows/Publish%20snapshot/badge.svg)](https://github.com/graphql-java-kickstart/graphql-java-servlet/actions?query=workflow%3A%22Publish+snapshot%22) [![Quality Gate Status](https://sonarcloud.io/api/project_badges/measure?project=graphql-java-kickstart_graphql-java-servlet&metric=alert_status)](https://sonarcloud.io/dashboard?id=graphql-java-kickstart_graphql-java-servlet) @@ -19,7 +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. See [gradle.properties](gradle.properties) to see currently supported versions. +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/gradle.properties b/gradle.properties index 12dcffd0..80c2404e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=15.0.1-SNAPSHOT +version=14.1.0-SNAPSHOT group=com.graphql-java-kickstart PROJECT_NAME=graphql-java-servlet PROJECT_DESC=GraphQL Java Kickstart @@ -11,5 +11,5 @@ LIB_GRAPHQL_JAVA_VER=20.0 LIB_JACKSON_VER=2.14.2 LIB_SLF4J_VER=2.0.6 LIB_LOMBOK_VER=1.18.26 -SOURCE_COMPATIBILITY=17 -TARGET_COMPATIBILITY=17 +SOURCE_COMPATIBILITY=11 +TARGET_COMPATIBILITY=11 diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 9e741d03..e8998317 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -16,9 +16,8 @@ dependencies { api(project(':graphql-java-kickstart')) // Servlet - api 'jakarta.servlet:jakarta.servlet-api:6.0.0' - api 'jakarta.websocket:jakarta.websocket-api:2.1.0' - api 'jakarta.websocket:jakarta.websocket-client-api:2.1.0' + api 'javax.servlet:javax.servlet-api:4.0.1' + api 'javax.websocket:javax.websocket-api:1.1' implementation "org.slf4j:slf4j-api:$LIB_SLF4J_VER" // OSGi @@ -37,7 +36,7 @@ dependencies { testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" - testImplementation 'org.springframework:spring-test:6.0.6' - testRuntimeOnly 'org.springframework:spring-web:6.0.6' + testImplementation 'org.springframework:spring-test:5.3.25' + testRuntimeOnly 'org.springframework:spring-web:5.3.25' testImplementation 'com.google.guava:guava:31.1-jre' } diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java index 303a6506..f9fdae46 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AbstractGraphQLHttpServlet.java @@ -8,10 +8,10 @@ import graphql.kickstart.servlet.core.GraphQLMBean; import graphql.kickstart.servlet.core.GraphQLServletListener; import graphql.schema.GraphQLFieldDefinition; -import jakarta.servlet.Servlet; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.Servlet; +import javax.servlet.http.HttpServlet; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; /** @author Andrew Potter */ diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java index 3963db5a..7d39ad89 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/AsyncTimeoutListener.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import jakarta.servlet.AsyncEvent; -import jakarta.servlet.AsyncListener; +import javax.servlet.AsyncEvent; +import javax.servlet.AsyncListener; interface AsyncTimeoutListener extends AsyncListener { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java index 6bd8fcd3..c3a767e5 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/BatchedQueryResponseWriter.java @@ -6,8 +6,8 @@ import java.nio.charset.StandardCharsets; import java.util.ArrayList; import java.util.List; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java index 55239fb2..48c2d3de 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ErrorQueryResponseWriter.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java index cc22022c..ccfe9a99 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ExecutionResultSubscriber.java @@ -6,7 +6,7 @@ import java.io.Writer; import java.util.concurrent.CountDownLatch; import java.util.concurrent.atomic.AtomicReference; -import jakarta.servlet.AsyncContext; +import javax.servlet.AsyncContext; import org.reactivestreams.Subscriber; import org.reactivestreams.Subscription; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java index 51e4e606..6c8c7464 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLGetInvocationInputParser.java @@ -11,8 +11,8 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java index 42f26246..7944de8a 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLInvocationInputParser.java @@ -5,9 +5,9 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import graphql.kickstart.servlet.input.GraphQLInvocationInputFactory; import java.io.IOException; -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; interface GraphQLInvocationInputParser { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java index a7f06a0c..ae43df26 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLMultipartInvocationInputParser.java @@ -18,10 +18,10 @@ import java.util.Map; import java.util.Optional; import java.util.stream.Collectors; -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.Part; +import javax.servlet.ServletException; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Part; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java index 22dc8bd2..2aa78dcb 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLPostInvocationInputParser.java @@ -10,8 +10,8 @@ import graphql.kickstart.servlet.input.GraphQLInvocationInputFactory; import java.io.IOException; import java.util.List; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; class GraphQLPostInvocationInputParser extends AbstractGraphQLInvocationInputParser { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java index cd22aede..7ff86408 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java @@ -29,14 +29,14 @@ import java.util.concurrent.atomic.AtomicBoolean; import java.util.function.Consumer; import java.util.stream.Stream; -import jakarta.websocket.CloseReason; -import jakarta.websocket.Endpoint; -import jakarta.websocket.EndpointConfig; -import jakarta.websocket.HandshakeResponse; -import jakarta.websocket.MessageHandler; -import jakarta.websocket.Session; -import jakarta.websocket.server.HandshakeRequest; -import jakarta.websocket.server.ServerEndpointConfig; +import javax.websocket.CloseReason; +import javax.websocket.Endpoint; +import javax.websocket.EndpointConfig; +import javax.websocket.HandshakeResponse; +import javax.websocket.MessageHandler; +import javax.websocket.Session; +import javax.websocket.server.HandshakeRequest; +import javax.websocket.server.ServerEndpointConfig; import lombok.extern.slf4j.Slf4j; /** diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java index 4be54ee2..d0e4783b 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandler.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; public interface HttpRequestHandler { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java index 697a120e..e99a4058 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestHandlerImpl.java @@ -4,8 +4,8 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import java.io.IOException; import java.nio.charset.StandardCharsets; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java index 33281b02..0fbdf7f6 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvoker.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import graphql.kickstart.execution.input.GraphQLInvocationInput; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; public interface HttpRequestInvoker { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java index d5cff75e..ccc10209 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/HttpRequestInvokerImpl.java @@ -22,9 +22,9 @@ import java.util.concurrent.CompletionException; import java.util.concurrent.TimeUnit; import java.util.concurrent.atomic.AtomicReference; -import jakarta.servlet.AsyncContext; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.AsyncContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java index 6ffab4ff..6fe9df83 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/ListenerHandler.java @@ -9,8 +9,8 @@ import java.util.function.Consumer; import java.util.function.Function; import java.util.stream.Collectors; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java index 85f2e252..435075ed 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/OsgiGraphQLHttpServlet.java @@ -31,7 +31,7 @@ import org.osgi.service.metatype.annotations.Designate; @Component( - service = {jakarta.servlet.http.HttpServlet.class, jakarta.servlet.Servlet.class}, + service = {javax.servlet.http.HttpServlet.class, javax.servlet.Servlet.class}, property = {"service.description=GraphQL HTTP Servlet"}) @Designate(ocd = OsgiGraphQLHttpServletConfiguration.class, factory = true) public class OsgiGraphQLHttpServlet extends AbstractGraphQLHttpServlet { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java index 7c657e44..f72425d7 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/QueryResponseWriter.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.io.IOException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; public interface QueryResponseWriter { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java index bf0dffdd..a6ac588a 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriter.java @@ -6,9 +6,9 @@ import java.util.List; import java.util.Objects; import java.util.concurrent.atomic.AtomicReference; -import jakarta.servlet.AsyncContext; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.AsyncContext; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.Getter; import lombok.RequiredArgsConstructor; import org.reactivestreams.Publisher; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java index dad94705..86568d29 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SingleQueryResponseWriter.java @@ -4,8 +4,8 @@ import graphql.kickstart.execution.GraphQLObjectMapper; import java.io.IOException; import java.nio.charset.StandardCharsets; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.RequiredArgsConstructor; @RequiredArgsConstructor diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java index 62a2d0c9..963154af 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/SubscriptionAsyncListener.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet; import java.util.concurrent.atomic.AtomicReference; -import jakarta.servlet.AsyncEvent; -import jakarta.servlet.AsyncListener; +import javax.servlet.AsyncEvent; +import javax.servlet.AsyncListener; import lombok.RequiredArgsConstructor; import org.reactivestreams.Subscription; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java index 71751f56..42e98c6b 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloScalars.java @@ -5,7 +5,7 @@ import graphql.schema.CoercingParseValueException; import graphql.schema.CoercingSerializeException; import graphql.schema.GraphQLScalarType; -import jakarta.servlet.http.Part; +import javax.servlet.http.Part; import lombok.AccessLevel; import lombok.NoArgsConstructor; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java index c5d4396f..874d9bf8 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionProtocolFactory.java @@ -10,7 +10,7 @@ import graphql.kickstart.servlet.subscriptions.WebSocketSubscriptionProtocolFactory; import java.time.Duration; import java.util.Collection; -import jakarta.websocket.Session; +import javax.websocket.Session; public class ApolloWebSocketSubscriptionProtocolFactory extends ApolloSubscriptionProtocolFactory implements WebSocketSubscriptionProtocolFactory { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java index 85f08211..b083457f 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/apollo/ApolloWebSocketSubscriptionSession.java @@ -4,7 +4,7 @@ import graphql.kickstart.execution.subscriptions.apollo.ApolloSubscriptionSession; import graphql.kickstart.servlet.subscriptions.WebSocketSubscriptionSession; import java.util.Map; -import jakarta.websocket.Session; +import javax.websocket.Session; public class ApolloWebSocketSubscriptionSession extends ApolloSubscriptionSession { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java index 9d633186..8f9c868f 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/BufferedHttpServletResponse.java @@ -5,10 +5,10 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.PrintWriter; -import jakarta.servlet.ServletOutputStream; -import jakarta.servlet.WriteListener; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.HttpServletResponseWrapper; +import javax.servlet.ServletOutputStream; +import javax.servlet.WriteListener; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletResponseWrapper; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java index 4c3fa2f2..714a8069 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CacheReader.java @@ -4,8 +4,8 @@ import graphql.kickstart.servlet.HttpRequestHandler; import java.io.IOException; import java.nio.charset.StandardCharsets; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java index a5f5d98c..ba0d8bda 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingHttpRequestInvoker.java @@ -8,8 +8,8 @@ import graphql.kickstart.servlet.HttpRequestInvokerImpl; import graphql.kickstart.servlet.ListenerHandler; import java.io.IOException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.AccessLevel; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java index b73e8442..e3bc813b 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/CachingQueryResponseWriter.java @@ -3,8 +3,8 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import graphql.kickstart.servlet.QueryResponseWriter; import java.io.IOException; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; import lombok.extern.slf4j.Slf4j; @Slf4j diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java index c7c258c6..ffb47579 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/cache/GraphQLResponseCacheManager.java @@ -2,7 +2,7 @@ import graphql.kickstart.execution.input.GraphQLInvocationInput; import java.util.Optional; -import jakarta.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletRequest; public interface GraphQLResponseCacheManager { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java index 4e633783..c38af79a 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/DefaultGraphQLSchemaServletProvider.java @@ -2,8 +2,8 @@ import graphql.kickstart.execution.config.DefaultGraphQLSchemaProvider; import graphql.schema.GraphQLSchema; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.websocket.server.HandshakeRequest; +import javax.servlet.http.HttpServletRequest; +import javax.websocket.server.HandshakeRequest; /** @author Andrew Potter */ public class DefaultGraphQLSchemaServletProvider extends DefaultGraphQLSchemaProvider diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java index 9700dcd2..3d80afc2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/config/GraphQLSchemaServletProvider.java @@ -2,8 +2,8 @@ import graphql.kickstart.execution.config.GraphQLSchemaProvider; import graphql.schema.GraphQLSchema; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.websocket.server.HandshakeRequest; +import javax.servlet.http.HttpServletRequest; +import javax.websocket.server.HandshakeRequest; public interface GraphQLSchemaServletProvider extends GraphQLSchemaProvider { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java index 834c23d1..9c366dd1 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContext.java @@ -4,9 +4,9 @@ import java.util.List; import java.util.Map; import java.util.stream.Collectors; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.Part; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Part; import lombok.SneakyThrows; import org.dataloader.DataLoaderRegistry; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java index cbb88975..c7a1dad4 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLServletContextBuilder.java @@ -4,10 +4,10 @@ import graphql.kickstart.execution.context.GraphQLKickstartContext; import java.util.HashMap; import java.util.Map; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.websocket.Session; -import jakarta.websocket.server.HandshakeRequest; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.websocket.Session; +import javax.websocket.server.HandshakeRequest; /** Returns an empty context. */ public class DefaultGraphQLServletContextBuilder extends DefaultGraphQLContextBuilder diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java index 1b115d4d..32beb4c2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/DefaultGraphQLWebSocketContext.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.context; import graphql.kickstart.execution.context.DefaultGraphQLContext; -import jakarta.websocket.Session; -import jakarta.websocket.server.HandshakeRequest; +import javax.websocket.Session; +import javax.websocket.server.HandshakeRequest; import org.dataloader.DataLoaderRegistry; /** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */ diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java index fd6cd978..9fc42d0c 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContext.java @@ -3,9 +3,9 @@ import graphql.kickstart.execution.context.GraphQLKickstartContext; import java.util.List; import java.util.Map; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.servlet.http.Part; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.servlet.http.Part; /** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */ public interface GraphQLServletContext extends GraphQLKickstartContext { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java index 55184124..6c0ee4b2 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLServletContextBuilder.java @@ -2,10 +2,10 @@ import graphql.kickstart.execution.context.GraphQLKickstartContext; import graphql.kickstart.execution.context.GraphQLContextBuilder; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.websocket.Session; -import jakarta.websocket.server.HandshakeRequest; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.websocket.Session; +import javax.websocket.server.HandshakeRequest; public interface GraphQLServletContextBuilder extends GraphQLContextBuilder { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java index f74cd81e..d244eb8d 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/context/GraphQLWebSocketContext.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.context; import graphql.kickstart.execution.context.GraphQLKickstartContext; -import jakarta.websocket.Session; -import jakarta.websocket.server.HandshakeRequest; +import javax.websocket.Session; +import javax.websocket.server.HandshakeRequest; /** @deprecated Use {@link graphql.kickstart.execution.context.GraphQLKickstartContext} instead */ public interface GraphQLWebSocketContext extends GraphQLKickstartContext { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java index 024bb398..284dfa2e 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/DefaultGraphQLRootObjectBuilder.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.core; import graphql.kickstart.execution.StaticGraphQLRootObjectBuilder; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.websocket.server.HandshakeRequest; +import javax.servlet.http.HttpServletRequest; +import javax.websocket.server.HandshakeRequest; public class DefaultGraphQLRootObjectBuilder extends StaticGraphQLRootObjectBuilder implements GraphQLServletRootObjectBuilder { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java index 5e99a506..7c9a7f79 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletListener.java @@ -1,7 +1,7 @@ package graphql.kickstart.servlet.core; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** @author Andrew Potter */ public interface GraphQLServletListener { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java index dd379ec6..32de074b 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/GraphQLServletRootObjectBuilder.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.core; import graphql.kickstart.execution.GraphQLRootObjectBuilder; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.websocket.server.HandshakeRequest; +import javax.servlet.http.HttpServletRequest; +import javax.websocket.server.HandshakeRequest; public interface GraphQLServletRootObjectBuilder extends GraphQLRootObjectBuilder { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java index 707e6ab2..1a4bc5a6 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/core/internal/VariableMapper.java @@ -3,7 +3,7 @@ import java.util.List; import java.util.Map; import java.util.regex.Pattern; -import jakarta.servlet.http.Part; +import javax.servlet.http.Part; public class VariableMapper { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java index 8cde1cf2..d3730636 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/BatchInputPreProcessor.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.input; import graphql.kickstart.execution.input.GraphQLBatchedInvocationInput; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; public interface BatchInputPreProcessor { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java index eb72fac4..82b57710 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/GraphQLInvocationInputFactory.java @@ -16,10 +16,10 @@ import graphql.schema.GraphQLSchema; import java.util.List; import java.util.function.Supplier; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import jakarta.websocket.Session; -import jakarta.websocket.server.HandshakeRequest; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; +import javax.websocket.Session; +import javax.websocket.server.HandshakeRequest; /** @author Andrew Potter */ public class GraphQLInvocationInputFactory implements GraphQLSubscriptionInvocationInputFactory { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java index f871a8c0..0d117027 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/input/NoOpBatchInputPreProcessor.java @@ -1,8 +1,8 @@ package graphql.kickstart.servlet.input; import graphql.kickstart.execution.input.GraphQLBatchedInvocationInput; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; /** A default BatchInputPreProcessor that returns the input. */ public class NoOpBatchInputPreProcessor implements BatchInputPreProcessor { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java index b58469af..43cacd0f 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/FallbackSubscriptionProtocolFactory.java @@ -6,7 +6,7 @@ import graphql.kickstart.execution.subscriptions.SubscriptionProtocolFactory; import graphql.kickstart.execution.subscriptions.SubscriptionSession; import java.util.function.Consumer; -import jakarta.websocket.Session; +import javax.websocket.Session; /** @author Andrew Potter */ public class FallbackSubscriptionProtocolFactory extends SubscriptionProtocolFactory diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java index 95cab618..d65fd357 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSendSubscriber.java @@ -2,7 +2,7 @@ import java.io.IOException; import java.util.concurrent.atomic.AtomicReference; -import jakarta.websocket.Session; +import javax.websocket.Session; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.reactivestreams.Subscriber; diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java index 55b42b05..c9b5f086 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionProtocolFactory.java @@ -2,7 +2,7 @@ import graphql.kickstart.execution.subscriptions.SubscriptionSession; import java.util.function.Consumer; -import jakarta.websocket.Session; +import javax.websocket.Session; public interface WebSocketSubscriptionProtocolFactory { diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java index 5da0071a..f41c0dc3 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/subscriptions/WebSocketSubscriptionSession.java @@ -3,7 +3,7 @@ import graphql.kickstart.execution.subscriptions.DefaultSubscriptionSession; import graphql.kickstart.execution.subscriptions.GraphQLSubscriptionMapper; import java.util.Map; -import jakarta.websocket.Session; +import javax.websocket.Session; public class WebSocketSubscriptionSession extends DefaultSubscriptionSession { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy index 2e2eebde..f9a9b369 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/BatchedQueryResponseWriterTest.groovy @@ -6,9 +6,9 @@ import graphql.kickstart.execution.GraphQLObjectMapper import spock.lang.Specification import spock.lang.Unroll -import jakarta.servlet.ServletOutputStream -import jakarta.servlet.http.HttpServletRequest -import jakarta.servlet.http.HttpServletResponse +import javax.servlet.ServletOutputStream +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse import java.nio.charset.StandardCharsets class BatchedQueryResponseWriterTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy index 89f1abe1..5293dfc1 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/DataLoaderDispatchingSpec.groovy @@ -21,10 +21,10 @@ import org.springframework.mock.web.MockHttpServletResponse import spock.lang.Shared import spock.lang.Specification -import jakarta.servlet.http.HttpServletRequest -import jakarta.servlet.http.HttpServletResponse -import jakarta.websocket.Session -import jakarta.websocket.server.HandshakeRequest +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse +import javax.websocket.Session +import javax.websocket.server.HandshakeRequest import java.util.concurrent.CompletableFuture import java.util.concurrent.CompletionStage import java.util.concurrent.atomic.AtomicInteger diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy index 392146b5..7a452b18 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleAsynchronousQueryResponseWriterTest.groovy @@ -5,8 +5,8 @@ import graphql.kickstart.execution.GraphQLObjectMapper import org.springframework.mock.web.MockAsyncContext import spock.lang.Specification -import jakarta.servlet.http.HttpServletRequest -import jakarta.servlet.http.HttpServletResponse +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse class SingleAsynchronousQueryResponseWriterTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy index 9640fa5c..0bffe1bb 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/SingleQueryResponseWriterTest.groovy @@ -6,9 +6,9 @@ import graphql.kickstart.execution.GraphQLObjectMapper import spock.lang.Specification import spock.lang.Unroll -import jakarta.servlet.ServletOutputStream -import jakarta.servlet.http.HttpServletRequest -import jakarta.servlet.http.HttpServletResponse +import javax.servlet.ServletOutputStream +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse import java.nio.charset.StandardCharsets class SingleQueryResponseWriterTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java index d0f1894a..b0ec39f8 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestBatchInputPreProcessor.java @@ -3,8 +3,8 @@ import graphql.kickstart.execution.input.GraphQLBatchedInvocationInput; import graphql.kickstart.servlet.input.BatchInputPreProcessResult; import graphql.kickstart.servlet.input.BatchInputPreProcessor; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; +import javax.servlet.http.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; public class TestBatchInputPreProcessor implements BatchInputPreProcessor { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy index 2a48134f..96cc4062 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/TestMultipartPart.groovy @@ -1,6 +1,6 @@ package graphql.kickstart.servlet -import jakarta.servlet.http.Part +import javax.servlet.http.Part /** * @author Andrew Potter diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy index 947e747d..3d8f5601 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CacheReaderTest.groovy @@ -3,9 +3,9 @@ package graphql.kickstart.servlet.cache import graphql.kickstart.execution.input.GraphQLInvocationInput import spock.lang.Specification -import jakarta.servlet.ServletOutputStream -import jakarta.servlet.http.HttpServletRequest -import jakarta.servlet.http.HttpServletResponse +import javax.servlet.ServletOutputStream +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse class CacheReaderTest extends Specification { diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy index bd065bc9..9a486036 100644 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/cache/CachingHttpRequestInvokerTest.groovy @@ -11,9 +11,9 @@ import graphql.kickstart.servlet.HttpRequestInvoker import graphql.kickstart.servlet.ListenerHandler import spock.lang.Specification -import jakarta.servlet.ServletOutputStream -import jakarta.servlet.http.HttpServletRequest -import jakarta.servlet.http.HttpServletResponse +import javax.servlet.ServletOutputStream +import javax.servlet.http.HttpServletRequest +import javax.servlet.http.HttpServletResponse import java.util.concurrent.CompletableFuture class CachingHttpRequestInvokerTest extends Specification { From 25a09d85e61481ba8eb946cdd4ef6a3618bce7a9 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Sat, 18 Mar 2023 19:53:58 +0000 Subject: [PATCH 48/62] fix(deps): update all non-major dependencies to v2.0.7 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 12dcffd0..bfaa90cb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans LIB_GRAPHQL_JAVA_VER=20.0 LIB_JACKSON_VER=2.14.2 -LIB_SLF4J_VER=2.0.6 +LIB_SLF4J_VER=2.0.7 LIB_LOMBOK_VER=1.18.26 SOURCE_COMPATIBILITY=17 TARGET_COMPATIBILITY=17 From 369eaf2dece81bc3811567e4a431ef79634e52e7 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 20 Mar 2023 10:56:33 +0000 Subject: [PATCH 49/62] fix(deps): update all non-major dependencies to v6.0.7 --- graphql-java-servlet/build.gradle | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 9e741d03..fa99835b 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -37,7 +37,7 @@ dependencies { testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" testImplementation "org.slf4j:slf4j-simple:$LIB_SLF4J_VER" - testImplementation 'org.springframework:spring-test:6.0.6' - testRuntimeOnly 'org.springframework:spring-web:6.0.6' + testImplementation 'org.springframework:spring-test:6.0.7' + testRuntimeOnly 'org.springframework:spring-web:6.0.7' testImplementation 'com.google.guava:guava:31.1-jre' } From 4477bb9633cf70c7725f273ed637fc82d734e2d6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Wed, 22 Mar 2023 04:45:44 +0000 Subject: [PATCH 50/62] fix(deps): update dependency com.graphql-java:graphql-java to v20.1 --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index bfaa90cb..4aad8ea9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,7 +7,7 @@ PROJECT_LICENSE=MIT PROJECT_LICENSE_URL=https://github.com/graphql-java-kickstart/spring-java-servlet/blob/master/LICENSE.md PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans -LIB_GRAPHQL_JAVA_VER=20.0 +LIB_GRAPHQL_JAVA_VER=20.1 LIB_JACKSON_VER=2.14.2 LIB_SLF4J_VER=2.0.7 LIB_LOMBOK_VER=1.18.26 From 3ea58a01309d1ea9f1f573f6756adbd0398af93c Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Fri, 31 Mar 2023 15:18:39 +0000 Subject: [PATCH 51/62] chore(deps): bump jackson-databind Bumps [jackson-databind](https://github.com/FasterXML/jackson) from 2.13.4.1 to 2.13.4.2. - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- examples/osgi/apache-karaf-feature/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/osgi/apache-karaf-feature/pom.xml b/examples/osgi/apache-karaf-feature/pom.xml index d2c59de7..9b52910b 100644 --- a/examples/osgi/apache-karaf-feature/pom.xml +++ b/examples/osgi/apache-karaf-feature/pom.xml @@ -112,7 +112,7 @@ - 2.13.4.1 + 2.13.4.2 From 851cacf8106d067f91e283178be95817f15dc3c6 Mon Sep 17 00:00:00 2001 From: "renovate[bot]" <29139614+renovate[bot]@users.noreply.github.com> Date: Mon, 24 Apr 2023 01:31:47 +0000 Subject: [PATCH 52/62] chore(deps): update all non-major dependencies --- gradle.properties | 4 ++-- gradle/wrapper/gradle-wrapper.jar | Bin 61608 -> 62076 bytes gradle/wrapper/gradle-wrapper.properties | 2 +- gradlew | 7 ++++--- graphql-java-kickstart/build.gradle | 2 +- graphql-java-servlet/build.gradle | 6 +++--- 6 files changed, 11 insertions(+), 10 deletions(-) diff --git a/gradle.properties b/gradle.properties index 4aad8ea9..cb52671e 100644 --- a/gradle.properties +++ b/gradle.properties @@ -7,8 +7,8 @@ PROJECT_LICENSE=MIT PROJECT_LICENSE_URL=https://github.com/graphql-java-kickstart/spring-java-servlet/blob/master/LICENSE.md PROJECT_DEV_ID=oliemansm PROJECT_DEV_NAME=Michiel Oliemans -LIB_GRAPHQL_JAVA_VER=20.1 -LIB_JACKSON_VER=2.14.2 +LIB_GRAPHQL_JAVA_VER=20.2 +LIB_JACKSON_VER=2.15.0 LIB_SLF4J_VER=2.0.7 LIB_LOMBOK_VER=1.18.26 SOURCE_COMPATIBILITY=17 diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index ccebba7710deaf9f98673a68957ea02138b60d0a..c1962a79e29d3e0ab67b14947c167a862655af9b 100644 GIT binary patch delta 8979 zcmY*fV{{$d(moANW81db*tXT!Nn`UgX2ZtD$%&n`v2C-lt;YD?@2-14?EPcUv!0n* z`^Ws4HP4i8L%;4p*JkD-J9ja2aKi!sX@~#-MY5?EPBK~fXAl)Ti}^QGH@6h+V+|}F zv=1RqQxhWW9!hTvYE!)+*m%jEL^9caK;am9X8QP~a9X0N6(=WSX8KF#WpU-6TjyR3 zpKhscivP97d$DGc{KI(f#g07u{Jr0wn#+qNr}yW}2N3{Kx0lCq%p4LBKil*QDTEyR zg{{&=GAy_O0VJ(8ZbtS4tPeeeILKK(M?HtQY!6K^wt zxsPH>E%g%V@=!B;kWF54$xjC&4hO!ZEG0QFMHLqe!tgH;%vO62BQj||nokbX&2kxF zzg#N!2M|NxFL#YdwOL8}>iDLr%2=!LZvk_&`AMrm7Zm%#_{Ot_qw=HkdVg{f9hYHF zlRF*9kxo~FPfyBD!^d6MbD?BRZj(4u9j!5}HFUt+$#Jd48Fd~ahe@)R9Z2M1t%LHa z_IP|tDb0CDl(fsEbvIYawJLJ7hXfpVw)D-)R-mHdyn5uZYefN0rZ-#KDzb`gsow;v zGX>k|g5?D%Vn_}IJIgf%nAz{@j0FCIEVWffc1Z+lliA}L+WJY=MAf$GeI7xw5YD1) z;BJn$T;JI5vTbZ&4aYfmd-XPQd)YQ~d({>(^5u>Y^5rfxEUDci9I5?dXp6{zHG=Tc z6$rLd^C~60=K4ptlZ%Fl-%QLc-x{y=zU$%&4ZU}4&Yu?jF4eqB#kTHhty`Aq=kJE% zzq(5OS9o1t-)}S}`chh1Uu-Sl?ljxMDVIy5j`97Eqg7L~Ak9NSZ?!5M>5TRMXfD#} zFlMmFnr%?ra>vkvJQjmWa8oB{63qPo1L#LAht%FG|6CEe9KP2&VNe_HNb7M}pd*!t zpGL0vzCU02%iK@AKWxP^64fz-U#%u~D+FV?*KdPY9C_9{Ggn;Y;;iKE0b|}KmC&f(WIDcFtvRPDju z?Dc&_dP4*hh!%!6(nYB*TEJs<4zn*V0Nw1O4VzYaNZul>anE2Feb@T$XkI?)u6VK$bg* z22AY7|Ju!_jwc2@JX(;SUE>VDWRD|d56WYUGLAAwPYXU9K&NgY{t{dyMskUBgV%@p zMVcFn>W|hJA?3S?$k!M|1S2e1A&_~W2p$;O2Wpn`$|8W(@~w>RR4kxHdEr`+q|>m@ zTYp%Ut+g`T#HkyE5zw<5uhFvt2=k5fM3!8OxvGgMRS|t7RaJn7!2$r_-~a%C7@*Dq zGUp2g0N^HzLU=%bROVFi2J;#`7#WGTUI$r!(wmbJlbS`E#ZpNp7vOR#TwPQWNf$IW zoX>v@6S8n6+HhUZB7V^A`Y9t4ngdfUFZrDOayMVvg&=RY4@0Z~L|vW)DZTIvqA)%D zi!pa)8L7BipsVh5-LMH4bmwt2?t88YUfIRf!@8^gX$xpKTE^WpM!-=3?UVw^Cs`Y7 z2b<*~Q=1uqs79{h&H_8+X%><4qSbz_cSEa;Hkdmtq5uwGTY+|APD{i_zYhLXqT7HO zT^Am_tW?Cmn%N~MC0!9mYt-~WK;hj-SnayMwqAAHo#^ALwkg0>72&W}5^4%|Z|@T; zwwBQTg*&eXC}j8 zra77(XC^p&&o;KrZ$`_)C$@SDWT+p$3!;ZB#yhnK{CxQc&?R}ZQMcp`!!eXLLhiP8W zM=McHAMnUMlar8XLXk&jx#HBH3U0jbhJuqa~#l`aB)N6;WI(Im322o#{K&92l6(K z)(;=;-m!%9@j#WSA1uniU(^x(UTi+%idMd)x*!*Hub0Rg7DblI!cqo9QUZf29Y#?XN!K!|ovJ7~!^H}!zsaMl(57lpztQ7V zyo#`qJ4jv1zGAW2uIkU3o&7_=lYWz3=SR!sgfuYp{Um<*H%uW8MdUT2&o*QKjD3PEH zHz;H}qCN~`GFsJ_xz$9xga*@VzJTH7-3lggkBM&7xlz5#qWfkgi=#j%{&f-NMsaSv zeIZ60Jpw}QV+t`ovOJxVhYCXe8E7r*eLCJ{lP6sqc}BYrhjXlt(6e9nw=2Le1gOT0 zZX!q9r#DZ&8_cAhWPeq~CJkGvpRU&q8>rR@RBW4~@3j1X>RBum#U z1wjcEdB`|@sXAWxk2*TOj> zr(j{nr1;Mk3x^gvAtZsahY=ou{eAJi-d(XISF-?+Q6{Um4+lu?aA=S33@k=6^OT?F z8TE`ha;q@=ZQ-dlt!q49;Wjjl<&Yee^!h5MFkd)Oj=fsvxytK%!B z-P#YJ)8^dMi=wpKmt43|apX6v2dNXzZ-WHlLEh`JoKFNjCK7LhO^P5XW?Y~rjGcIpv$2v41rE}~0{aj9NVpDXGdD6W8{fyzioQdu&xkn8 zhT*^NY0zv>Om?h3XAku3p-4SHkK@fXrpi{T=@#bwY76TsD4$tAHAhXAStdb$odc z02~lZyb!fG_7qrU_F5 zoOG|pEwdyDhLXDwlU>T|;LF@ACJk(qZ*2h6GB@33mKk};HO^CQM(N7@Ml5|8IeHzt zdG4f$q}SNYA4P=?jV!mJ%3hRKwi&!wFptWZRq4bpV9^b7&L>nW%~Y|junw!jHj%85 z3Ck6%`Y=Abvrujnm{`OtE0uQkeX@3JPzj#iO#eNoAX6cDhM+cc2mLk8;^bG62mtjQ zj|kxI2W|4n{VqMqB?@YnA0y}@Mju)&j3UQ4tSdH=Eu?>i7A50b%i$pc{YJki7ubq7 zVTDqdkGjeAuZdF)KBwR6LZob}7`2935iKIU2-I;88&?t16c-~TNWIcQ8C_cE_F1tv z*>4<_kimwX^CQtFrlk)i!3-+2zD|=!D43Qqk-LtpPnX#QQt%eullxHat97k=00qR|b2|M}`q??yf+h~};_PJ2bLeEeteO3rh+H{9otNQDki^lu)(`a~_x(8NWLE*rb%T=Z~s?JC|G zXNnO~2SzW)H}p6Zn%WqAyadG=?$BXuS(x-2(T!E&sBcIz6`w=MdtxR<7M`s6-#!s+ znhpkcNMw{c#!F%#O!K*?(Hl(;Tgl9~WYBB(P@9KHb8ZkLN>|}+pQ)K#>ANpV1IM{Q z8qL^PiNEOrY*%!7Hj!CwRT2CN4r(ipJA%kCc&s;wOfrweu)H!YlFM z247pwv!nFWbTKq&zm4UVH^d?H2M276ny~@v5jR2>@ihAmcdZI-ah(&)7uLQM5COqg?hjX2<75QU4o5Q7 zZ5gG;6RMhxLa5NFTXgegSXb0a%aPdmLL4=`ox2smE)lDn^!;^PNftzTf~n{NH7uh_ zc9sKmx@q1InUh_BgI3C!f>`HnO~X`9#XTI^Yzaj1928gz8ClI!WIB&2!&;M18pf0T zsZ81LY3$-_O`@4$vrO`Cb&{apkvUwrA0Z49YfZYD)V4;c2&`JPJuwN_o~2vnyW_b! z%yUSS5K{a*t>;WJr&$A_&}bLTTXK23<;*EiNHHF-F<#hy8v2eegrqnE=^gt+|8R5o z_80IY4&-!2`uISX6lb0kCVmkQ{D}HMGUAkCe`I~t2~99(<#}{E;{+Y0!FU>leSP(M zuMoSOEfw3OC5kQ~Y2)EMlJceJlh}p?uw}!cq?h44=b2k@T1;6KviZGc_zbeTtTE$@EDwUcjxd#fpK=W*U@S#U|YKz{#qbb*|BpcaU!>6&Ir zhsA+ywgvk54%Nj>!!oH>MQ+L~36v1pV%^pOmvo7sT|N}$U!T6l^<3W2 z6}mT7Cl=IQo%Y~d%l=+;vdK)yW!C>Es-~b^E?IjUU4h6<86tun6rO#?!37B)M8>ph zJ@`~09W^@5=}sWg8`~ew=0>0*V^b9eG=rBIGbe3Ko$pj!0CBUTmF^Q}l7|kCeB(pX zi6UvbUJWfKcA&PDq?2HrMnJBTW#nm$(vPZE;%FRM#ge$S)i4!y$ShDwduz@EPp3H? z`+%=~-g6`Ibtrb=QsH3w-bKCX1_aGKo4Q7n-zYp->k~KE!(K@VZder&^^hIF6AhiG z;_ig2NDd_hpo!W1Un{GcB@e{O@P3zHnj;@SzYCxsImCHJS5I&^s-J6?cw92qeK8}W zk<_SvajS&d_tDP~>nhkJSoN>UZUHs?)bDY`{`;D^@wMW0@!H1I_BYphly0iqq^Jp; z_aD>eHbu@e6&PUQ4*q*ik0i*$Ru^_@`Mbyrscb&`8|c=RWZ>Ybs16Q?Cj1r6RQA5! zOeuxfzWm(fX!geO(anpBCOV|a&mu|$4cZ<*{pb1F{`-cm1)yB6AGm7b=GV@r*DataJ^I!>^lCvS_@AftZiwtpszHmq{UVl zKL9164tmF5g>uOZ({Jg~fH~QyHd#h#E;WzSYO~zt)_ZMhefdm5*H1K-#=_kw#o%ch zgX|C$K4l4IY8=PV6Q{T8dd`*6MG-TlsTEaA&W{EuwaoN+-BDdSL2>|lwiZ++4eR8h zNS1yJdbhAWjW4k`i1KL)l#G*Y=a0ouTbg8R1aUU`8X7p*AnO+uaNF9mwa+ooA)hlj zR26XBpQ-{6E9;PQAvq2<%!M1;@Q%r@xZ16YRyL&v}9F`Nnx#RLUc<78w$S zZElh==Rnr2u<*qKY|aUR9(A|{cURqP81O-1a@X)khheokEhC}BS-g~|zRbn-igmID z$Ww!O0-j!t(lx>-JH+0KW3*Bgafpm>%n=`(ZLa^TWd*-je!Xi7H*bZ8pz`HPFYeC? zk>`W)4Cj6*A3A8g$MEhp*<@qO&&>3<4YI%0YAMmQvD3 z${78Fa2mqiI>P7|gE)xs$cg3~^?UBb4y6B4Z#0Fzy zN8Gf!c+$uPS`VRB=wRV1f)>+PEHBYco<1?ceXET}Q-tKI=E`21<15xTe@%Bhk$v09 zVpoL_wNuw)@^O+C@VCeuWM}(%C(%lTJ}7n)JVV!^0H!3@)ydq#vEt;_*+xos$9i?{ zCw5^ZcNS&GzaeBmPg6IKrbT`OSuKg$wai+5K}$mTO-Z$s3Y+vb3G}x%WqlnQS1;|Z zlZ$L{onq1Ag#5JrM)%6~ToQ}NmM2A(7X5gy$nVI=tQFOm;7|Oeij{xb_KU{d@%)2z zsVqzTl@XPf(a95;P;oBm9Hlpo`9)D9>G>!Bj=ZmX{ces=aC~E^$rTO5hO$#X65jEA zMj1(p+HXdOh7FAV;(_)_RR#P>&NW?&4C7K1Y$C$i**g;KOdu|JI_Ep zV-N$wuDRkn6=k|tCDXU%d=YvT!M1nU?JY;Pl`dxQX5+660TX7~q@ukEKc!Iqy2y)KuG^Q-Y%$;SR&Mv{%=CjphG1_^dkUM=qI*3Ih^Bk621n`6;q(D;nB_y|~ zW*1ps&h|wcET!#~+Ptsiex~YVhDiIREiw1=uwlNpPyqDZ`qqv9GtKwvxnFE}ME93fD9(Iq zz=f&4ZpD~+qROW6Y2AjPj9pH*r_pS_f@tLl88dbkO9LG0+|4*Xq(Eo7fr5MVg{n<+p>H{LGr}UzToqfk_x6(2YB~-^7>%X z+331Ob|NyMST64u|1dK*#J>qEW@dKNj-u}3MG)ZQi~#GzJ_S4n5lb7vu&>;I-M49a z0Uc#GD-KjO`tQ5ftuSz<+`rT)cLio$OJDLtC`t)bE+Nu@Rok2;`#zv1=n z7_CZr&EhVy{jq(eJPS)XA>!7t<&ormWI~w0@Y#VKjK)`KAO~3|%+{ z$HKIF?86~jH*1p=`j#}8ON0{mvoiN7fS^N+TzF~;9G0_lQ?(OT8!b1F8a~epAH#uA zSN+goE<-psRqPXdG7}w=ddH=QAL|g}x5%l-`Kh69D4{M?jv!l))<@jxLL$Eg2vt@E zc6w`$?_z%awCE~ca)9nMvj($VH%2!?w3c(5Y4&ZC2q#yQ=r{H2O839eoBJ{rfMTs8 zn2aL6e6?;LY#&(BvX_gC6uFK`0yt zJbUATdyz5d3lRyV!rwbj0hVg#KHdK0^A7_3KA%gKi#F#-^K%1XQbeF49arI2LA|Bj z?=;VxKbZo(iQmHB5eAg=8IPRqyskQNR!&KEPrGv&kMr(8`4oe?vd?sIZJK+JY04kc zXWk)4N|~*|0$4sUV3U6W6g+Z3;nN<~n4H17QT*%MCLt_huVl@QkV`A`jyq<|q=&F_ zPEOotTu9?zGKaPJ#9P&ljgW!|Vxhe+l85%G5zpD5kAtn*ZC})qEy!v`_R}EcOn)&# z-+B52@Zle@$!^-N@<_=LKF}fqQkwf1rE(OQP&8!En}jqr-l0A0K>77K8{zT%wVpT~ zMgDx}RUG$jgaeqv*E~<#RT?Q)(RGi8bUm(1X?2OAG2!LbBR+u1r7$}s=lKqu&VjXP zUw3L9DH({yj)M%OqP%GC+$}o0iG|*hN-Ecv3bxS|Mxpmz*%x`w7~=o9BKfEVzr~K- zo&Fh`wZ{#1Jd5QFM4&!PabL!tf%TfJ4wi;45AqWe$x}8*c2cgqua`(6@ErE&P{K5M zQfwGQ4Qg&M3r4^^$B?_AdLzqtxn5nb#kItDY?BTW z#hShspeIDJ1FDmfq@dz1TT`OV;SS0ImUp`P6GzOqB3dPfzf?+w^40!Wn*4s!E;iHW zNzpDG+Vmtnh%CyfAX>X z{Y=vt;yb z;TBRZpw##Kh$l<8qq5|3LkrwX%MoxqWwclBS6|7LDM(I31>$_w=;{=HcyWlak3xM1 z_oaOa)a;AtV{*xSj6v|x%a42{h@X-cr%#HO5hWbuKRGTZS)o=^Id^>H5}0p_(BEXX zx3VnRUj6&1JjDI);c=#EYcsg;D5TFlhe)=nAycR1N)YSHQvO+P5hKe9T0ggZT{oF@ z#i3V4TpQlO1A8*TWn|e}UWZ(OU;Isd^ zb<#Vj`~W_-S_=lDR#223!xq8sRjAAVSY2MhRyUyHa-{ql=zyMz?~i_c&dS>eb>s>#q#$UI+!&6MftpQvxHA@f|k2(G9z zAQCx-lJ-AT;PnX%dY5}N$m6tFt5h6;Mf78TmFUN9#4*qBNg4it3-s22P+|Rw zG@X%R0sm*X07ZZEOJRbDkcjr}tvaVWlrwJ#7KYEw&X`2lDa@qb!0*SHa%+-FU!83q zY{R15$vfL56^Nj42#vGQlQ%coT4bLr2s5Y0zBFp8u&F(+*%k4xE1{s75Q?P(SL7kf zhG?3rfM9V*b?>dOpwr%uGH7Xfk1HZ!*k`@CNM77g_mGN=ucMG&QX19B!%y77w?g#b z%k3x6q_w_%ghL;9Zk_J#V{hxK%6j`?-`UN?^e%(L6R#t#97kZaOr1{&<8VGVs1O>} z6~!myW`ja01v%qy%WI=8WI!cf#YA8KNRoU>`_muCqpt_;F@rkVeDY}F7puI_wBPH9 zgRGre(X_z4PUO5!VDSyg)bea1x_a7M z4AJ?dd9rf{*P`AY+w?g_TyJlB5Nks~1$@PxdtpUGGG##7j<$g&BhKq0mXTva{;h5E ztcN!O17bquKEDC#;Yw2yE>*=|WdZT9+ycgUR^f?~+TY-E552AZlzYn{-2CLRV9mn8 z+zNoWLae^P{co`F?)r;f!C=nnl*1+DI)mZY!frp~f%6tX2g=?zQL^d-j^t1~+xYgK zv;np&js@X=_e7F&&ZUX|N6Q2P0L=fWoBuh*L7$3~$-A)sdy6EQ@Pd-)|7lDA@%ra2 z4jL@^w92&KC>H(=v2j!tVE_3w0KogtrNjgPBsTvW F{TFmrHLU;u delta 8469 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 Date: Mon, 8 May 2023 11:08:37 +0000 Subject: [PATCH 53/62] fix(deps): update dependency org.apache.groovy:groovy-all to v4.0.12 --- graphql-java-servlet/build.gradle | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index 2760929f..e53ddf86 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -32,7 +32,7 @@ dependencies { testImplementation 'io.github.graphql-java:graphql-java-annotations:9.1' // Unit testing - testImplementation "org.apache.groovy:groovy-all:4.0.11" + testImplementation "org.apache.groovy:groovy-all:4.0.12" testImplementation "org.spockframework:spock-core:2.3-groovy-4.0" testRuntimeOnly "cglib:cglib-nodep:3.3.0" testRuntimeOnly "org.objenesis:objenesis:3.3" From a42db87dfb923c472457a897aea2083247224105 Mon Sep 17 00:00:00 2001 From: Michiel Oliemans Date: Mon, 8 May 2023 13:30:35 +0200 Subject: [PATCH 54/62] chore: optimize release process --- .github/add-module-suffix.sh | 39 +++++++ .github/release.sh | 17 +++ .github/tag-release.sh | 54 ++++++++++ .github/workflows/release-jdk11.yml | 101 ++++++++++++++++++ .../{release.yml => release-jdk17.yml} | 32 +++++- 5 files changed, 239 insertions(+), 4 deletions(-) create mode 100755 .github/add-module-suffix.sh create mode 100755 .github/release.sh create mode 100755 .github/tag-release.sh create mode 100644 .github/workflows/release-jdk11.yml rename .github/workflows/{release.yml => release-jdk17.yml} (75%) diff --git a/.github/add-module-suffix.sh b/.github/add-module-suffix.sh new file mode 100755 index 00000000..ccba294c --- /dev/null +++ b/.github/add-module-suffix.sh @@ -0,0 +1,39 @@ +#!/bin/bash + +MODULE_SUFFIX="${GITHUB_REF##*/}" + +addSuffix() { + local result + result=$(grep include settings.gradle | awk '{print $2}' | tr -d "'" | tr -d ':') + readarray -t <<<"$result" + modules=("${MAPFILE[@]}") + + updateLocalDependencies +} + +updateLocalDependencies() { + for module in "${modules[@]}"; do + cp -rf "$module" "$module"-"$MODULE_SUFFIX" + rm -rf "$module" + + for dependency in "${modules[@]}"; do + sed -i -E "s/project\(('|\"):${dependency}('|\")\)/project\(':${dependency}-${MODULE_SUFFIX}'\)/" "$module"-"$MODULE_SUFFIX"/build.gradle + done + done + + updateGradleSettings +} + +updateGradleSettings() { + for module in "${modules[@]}"; do + echo "Replace ${module} with ${module}-${MODULE_SUFFIX} in settings.gradle" + sed -i -E "s/('|\"):${module}('|\")/':${module}-${MODULE_SUFFIX}'/" settings.gradle + done + + cat settings.gradle +} + +echo "Add suffix '-$MODULE_SUFFIX' to modules" +addSuffix + +ls -lh \ No newline at end of file diff --git a/.github/release.sh b/.github/release.sh new file mode 100755 index 00000000..5303c90b --- /dev/null +++ b/.github/release.sh @@ -0,0 +1,17 @@ +#!/bin/bash +set -ev + +BRANCH="${GITHUB_REF##*/}" + +removeSnapshots() { + sed -i 's/-SNAPSHOT//' gradle.properties +} + +echo "Publishing release to Maven Central" +removeSnapshots + +if [[ "${BRANCH}" != "master" ]]; then + .github/add-module-suffix.sh +fi + +./gradlew clean build publishToSonatype closeAndReleaseSonatypeStagingRepository \ No newline at end of file diff --git a/.github/tag-release.sh b/.github/tag-release.sh new file mode 100755 index 00000000..d80c1699 --- /dev/null +++ b/.github/tag-release.sh @@ -0,0 +1,54 @@ +#!/bin/bash +set -ev + +BRANCH="${GITHUB_REF##*/}" + +getVersion() { + ./gradlew properties -q | grep -E "^version" | awk '{print $2}' | tr -d '[:space:]' +} + +removeSnapshots() { + sed -i 's/-SNAPSHOT//' gradle.properties +} + +commitRelease() { + local APP_VERSION + if "${BRANCH}" == "master"; then + APP_VERSION=$(getVersion) + else + APP_VERSION=$(getVersion)-"${BRANCH}" + fi + git commit -a -m "Update version for release" + git tag -a "v${APP_VERSION}" -m "Tag release version" +} + +bumpVersion() { + echo "Bump version number" + local APP_VERSION + APP_VERSION=$(getVersion | xargs) + local SEMANTIC_REGEX='^([0-9]+)\.([0-9]+)(\.([0-9]+))?$' + if [[ ${APP_VERSION} =~ ${SEMANTIC_REGEX} ]]; then + if [[ ${BASH_REMATCH[4]} ]]; then + nextVersion=$((BASH_REMATCH[4] + 1)) + nextVersion="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${nextVersion}-SNAPSHOT" + else + nextVersion=$((BASH_REMATCH[2] + 1)) + nextVersion="${BASH_REMATCH[1]}.${nextVersion}-SNAPSHOT" + fi + + echo "Next version: ${nextVersion}" + sed -i -E "s/^version(\s)?=.*/version=${nextVersion}/" gradle.properties + git commit -a -m "Bumped version for next release" + else + echo "No semantic version and therefore cannot publish to maven repository: '${APP_VERSION}'" + fi +} + +git config --global user.email "actions@github.com" +git config --global user.name "GitHub Actions" + +echo "Deploying release to Maven Central" +removeSnapshots +commitRelease +bumpVersion +git push --follow-tags \ No newline at end of file diff --git a/.github/workflows/release-jdk11.yml b/.github/workflows/release-jdk11.yml new file mode 100644 index 00000000..8c9549d5 --- /dev/null +++ b/.github/workflows/release-jdk11.yml @@ -0,0 +1,101 @@ +name: "Publish JDK11 release" +on: [ workflow_dispatch ] + +jobs: + validation: + name: Gradle Wrapper Validation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: gradle/wrapper-validation-action@v1 + + test: + name: Test run + needs: validation + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 11 + - name: Cache Gradle + uses: actions/cache@v3 + env: + java-version: 11 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-${{ env.java-version }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-${{ env.java-version }}-gradle- + - name: Make gradlew executable + run: chmod +x ./gradlew + - name: Gradle Check + run: ./gradlew --info check + + build: + name: Publish release + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 11 + - name: Cache Gradle + uses: actions/cache@v3 + env: + java-version: 11 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-${{ env.java-version }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-${{ env.java-version }}-gradle- + - name: Prepare environment + env: + GPG_KEY_CONTENTS: ${{ secrets.GPG_KEY_CONTENTS }} + SIGNING_SECRET_KEY_RING_FILE: ${{ secrets.GPG_SIGNING_SECRET_KEY_RING_FILE }} + run: sudo bash -c "echo '$GPG_KEY_CONTENTS' | base64 -d > '$SIGNING_SECRET_KEY_RING_FILE'" + - name: Publish release + env: + SIGNING_KEY_ID: ${{ secrets.GPG_SIGNING_KEY_ID }} + SIGNING_PASSWORD: ${{ secrets.GPG_SIGNING_PASSWORD }} + SIGNING_SECRET_KEY_RING_FILE: ${{ secrets.GPG_SIGNING_SECRET_KEY_RING_FILE }} + OSS_USER_TOKEN_KEY: ${{ secrets.OSS_USER_TOKEN_KEY }} + OSS_USER_TOKEN_PASS: ${{ secrets.OSS_USER_TOKEN_PASS }} + run: .github/release.sh + + tag: + name: Tag release + needs: build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 11 + - name: Cache Gradle + uses: actions/cache@v3 + env: + java-version: 11 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-${{ env.java-version }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-${{ env.java-version }}-gradle- + - name: Tag release + run: .github/tag-release.sh \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release-jdk17.yml similarity index 75% rename from .github/workflows/release.yml rename to .github/workflows/release-jdk17.yml index 714b21c1..b3fd79ae 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release-jdk17.yml @@ -1,4 +1,4 @@ -name: "Publish release" +name: "Publish JDK17 release" on: [ workflow_dispatch ] jobs: @@ -60,8 +60,6 @@ jobs: key: ${{ runner.os }}-${{ env.java-version }}-gradle-${{ hashFiles('**/*.gradle*') }} restore-keys: | ${{ runner.os }}-${{ env.java-version }}-gradle- - - name: Make gradlew executable - run: chmod +x ./gradlew - name: Prepare environment env: GPG_KEY_CONTENTS: ${{ secrets.GPG_KEY_CONTENTS }} @@ -74,4 +72,30 @@ jobs: SIGNING_SECRET_KEY_RING_FILE: ${{ secrets.GPG_SIGNING_SECRET_KEY_RING_FILE }} OSS_USER_TOKEN_KEY: ${{ secrets.OSS_USER_TOKEN_KEY }} OSS_USER_TOKEN_PASS: ${{ secrets.OSS_USER_TOKEN_PASS }} - run: bash github-build.sh + run: .github/release.sh + + tag: + name: Tag release + needs: build + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 17 + - name: Cache Gradle + uses: actions/cache@v3 + env: + java-version: 17 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-${{ env.java-version }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-${{ env.java-version }}-gradle- + - name: Tag release + run: .github/tag-release.sh \ No newline at end of file From c11dbd5b6d0276dc010d2da9a015f5384536f7a5 Mon Sep 17 00:00:00 2001 From: Michiel Oliemans Date: Mon, 8 May 2023 13:30:49 +0200 Subject: [PATCH 55/62] chore: remove old release script --- github-build.sh | 53 ------------------------------------------------- 1 file changed, 53 deletions(-) delete mode 100644 github-build.sh diff --git a/github-build.sh b/github-build.sh deleted file mode 100644 index 3456ef9d..00000000 --- a/github-build.sh +++ /dev/null @@ -1,53 +0,0 @@ -#!/bin/bash -set -ev - -getVersion() { - ./gradlew properties -q | grep -E "^version" | awk '{print $2}' | tr -d '[:space:]' -} - -removeSnapshots() { - sed -i 's/-SNAPSHOT//' gradle.properties -} - -commitRelease() { - local APP_VERSION=$(getVersion) - git commit -a -m "Update version for release" - git tag -a "v${APP_VERSION}" -m "Tag release version" -} - -bumpVersion() { - echo "Bump version number" - local APP_VERSION=$(getVersion | xargs) - local SEMANTIC_REGEX='^([0-9]+)\.([0-9]+)(\.([0-9]+))?$' - if [[ ${APP_VERSION} =~ ${SEMANTIC_REGEX} ]]; then - if [[ ${BASH_REMATCH[4]} ]]; then - nextVersion=$((BASH_REMATCH[4] + 1)) - nextVersion="${BASH_REMATCH[1]}.${BASH_REMATCH[2]}.${nextVersion}-SNAPSHOT" - else - nextVersion=$((BASH_REMATCH[2] + 1)) - nextVersion="${BASH_REMATCH[1]}.${nextVersion}-SNAPSHOT" - fi - - echo "Next version: ${nextVersion}" - sed -i -E "s/^version(\s)?=.*/version=${nextVersion}/" gradle.properties - else - echo "No semantic version and therefore cannot publish to maven repository: '${APP_VERSION}'" - fi -} - -commitNextVersion() { - git commit -a -m "Update version for release" -} - -git config --global user.email "actions@github.com" -git config --global user.name "GitHub Actions" - -echo "Deploying release to Maven Central" -removeSnapshots - -./gradlew clean build publishToSonatype closeAndReleaseSonatypeStagingRepository - -commitRelease -bumpVersion -commitNextVersion -git push --follow-tags From b974ea9734d16f567ea334291f1649f9d4321b3f Mon Sep 17 00:00:00 2001 From: Michiel Oliemans Date: Mon, 8 May 2023 13:40:16 +0200 Subject: [PATCH 56/62] chore: revert publish release jdk versions --- .github/workflows/release-jdk11.yml | 101 ------------------ .../{release-jdk17.yml => release.yml} | 2 +- 2 files changed, 1 insertion(+), 102 deletions(-) delete mode 100644 .github/workflows/release-jdk11.yml rename .github/workflows/{release-jdk17.yml => release.yml} (99%) diff --git a/.github/workflows/release-jdk11.yml b/.github/workflows/release-jdk11.yml deleted file mode 100644 index 8c9549d5..00000000 --- a/.github/workflows/release-jdk11.yml +++ /dev/null @@ -1,101 +0,0 @@ -name: "Publish JDK11 release" -on: [ workflow_dispatch ] - -jobs: - validation: - name: Gradle Wrapper Validation - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v3 - - uses: gradle/wrapper-validation-action@v1 - - test: - name: Test run - needs: validation - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: 11 - - name: Cache Gradle - uses: actions/cache@v3 - env: - java-version: 11 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-${{ env.java-version }}-gradle-${{ hashFiles('**/*.gradle*') }} - restore-keys: | - ${{ runner.os }}-${{ env.java-version }}-gradle- - - name: Make gradlew executable - run: chmod +x ./gradlew - - name: Gradle Check - run: ./gradlew --info check - - build: - name: Publish release - needs: test - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: 11 - - name: Cache Gradle - uses: actions/cache@v3 - env: - java-version: 11 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-${{ env.java-version }}-gradle-${{ hashFiles('**/*.gradle*') }} - restore-keys: | - ${{ runner.os }}-${{ env.java-version }}-gradle- - - name: Prepare environment - env: - GPG_KEY_CONTENTS: ${{ secrets.GPG_KEY_CONTENTS }} - SIGNING_SECRET_KEY_RING_FILE: ${{ secrets.GPG_SIGNING_SECRET_KEY_RING_FILE }} - run: sudo bash -c "echo '$GPG_KEY_CONTENTS' | base64 -d > '$SIGNING_SECRET_KEY_RING_FILE'" - - name: Publish release - env: - SIGNING_KEY_ID: ${{ secrets.GPG_SIGNING_KEY_ID }} - SIGNING_PASSWORD: ${{ secrets.GPG_SIGNING_PASSWORD }} - SIGNING_SECRET_KEY_RING_FILE: ${{ secrets.GPG_SIGNING_SECRET_KEY_RING_FILE }} - OSS_USER_TOKEN_KEY: ${{ secrets.OSS_USER_TOKEN_KEY }} - OSS_USER_TOKEN_PASS: ${{ secrets.OSS_USER_TOKEN_PASS }} - run: .github/release.sh - - tag: - name: Tag release - needs: build - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Setup Java - uses: actions/setup-java@v3 - with: - distribution: 'zulu' - java-version: 11 - - name: Cache Gradle - uses: actions/cache@v3 - env: - java-version: 11 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-${{ env.java-version }}-gradle-${{ hashFiles('**/*.gradle*') }} - restore-keys: | - ${{ runner.os }}-${{ env.java-version }}-gradle- - - name: Tag release - run: .github/tag-release.sh \ No newline at end of file diff --git a/.github/workflows/release-jdk17.yml b/.github/workflows/release.yml similarity index 99% rename from .github/workflows/release-jdk17.yml rename to .github/workflows/release.yml index b3fd79ae..b1a277dd 100644 --- a/.github/workflows/release-jdk17.yml +++ b/.github/workflows/release.yml @@ -1,4 +1,4 @@ -name: "Publish JDK17 release" +name: "Publish release" on: [ workflow_dispatch ] jobs: From ca50c17acc1a890dd159eee212396219b0350a07 Mon Sep 17 00:00:00 2001 From: Michiel Oliemans Date: Mon, 8 May 2023 16:06:41 +0200 Subject: [PATCH 57/62] feat: add snapshot suffix workflow --- .github/workflows/snapshot-suffix.yml | 74 +++++++++++++++++++++++++++ gradle.properties | 2 +- 2 files changed, 75 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/snapshot-suffix.yml diff --git a/.github/workflows/snapshot-suffix.yml b/.github/workflows/snapshot-suffix.yml new file mode 100644 index 00000000..ad9646d7 --- /dev/null +++ b/.github/workflows/snapshot-suffix.yml @@ -0,0 +1,74 @@ +name: "Publish snapshot with suffix" +on: + push: + branches: + - javax + - jakarta + +jobs: + validation: + name: Gradle Wrapper Validation + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: gradle/wrapper-validation-action@v1 + + test: + name: Test run + needs: validation + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 11 + - name: Cache Gradle + uses: actions/cache@v3 + env: + java-version: 11 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-${{ env.java-version }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-${{ env.java-version }}-gradle- + - name: Make gradlew executable + run: chmod +x ./gradlew + - name: Gradle Check + run: ./gradlew --info check + + build: + name: Publish snapshot + needs: test + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + - name: Setup Java + uses: actions/setup-java@v3 + with: + distribution: 'zulu' + java-version: 11 + - name: Cache Gradle + uses: actions/cache@v3 + env: + java-version: 11 + with: + path: | + ~/.gradle/caches + ~/.gradle/wrapper + key: ${{ runner.os }}-${{ env.java-version }}-gradle-${{ hashFiles('**/*.gradle*') }} + restore-keys: | + ${{ runner.os }}-${{ env.java-version }}-gradle- + - name: Add suffix to modules + run: .github/add-module-suffix.sh + - name: Gradle Publish Snapshot + if: env.OSS_USER_TOKEN_KEY != null + env: + OSS_USER_TOKEN_KEY: ${{ secrets.OSS_USER_TOKEN_KEY }} + OSS_USER_TOKEN_PASS: ${{ secrets.OSS_USER_TOKEN_PASS }} + run: ./gradlew clean build publish -x test \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index cb52671e..c5145408 100644 --- a/gradle.properties +++ b/gradle.properties @@ -12,4 +12,4 @@ LIB_JACKSON_VER=2.15.0 LIB_SLF4J_VER=2.0.7 LIB_LOMBOK_VER=1.18.26 SOURCE_COMPATIBILITY=17 -TARGET_COMPATIBILITY=17 +TARGET_COMPATIBILITY=17 \ No newline at end of file From a938d6667b4046d4a6f112a26bd9f7b84ce54d94 Mon Sep 17 00:00:00 2001 From: Michiel Oliemans Date: Tue, 9 May 2023 18:28:32 +0200 Subject: [PATCH 58/62] fix(#516): add origin check to websockets --- .../servlet/GraphQLConfiguration.java | 16 +++++++-- .../servlet/GraphQLWebsocketServlet.java | 36 +++++++++++++++---- 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLConfiguration.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLConfiguration.java index f009889e..9877ce5a 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLConfiguration.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLConfiguration.java @@ -36,6 +36,7 @@ public class GraphQLConfiguration { private final ContextSetting contextSetting; private final GraphQLResponseCacheManager responseCacheManager; @Getter private final Executor asyncExecutor; + @Getter private final List allowedOrigins; private HttpRequestHandler requestHandler; private GraphQLConfiguration( @@ -49,9 +50,11 @@ private GraphQLConfiguration( ContextSetting contextSetting, Supplier batchInputPreProcessor, GraphQLResponseCacheManager responseCacheManager, - Executor asyncExecutor) { + Executor asyncExecutor, + List allowedOrigins) { this.invocationInputFactory = invocationInputFactory; this.asyncExecutor = asyncExecutor; + this.allowedOrigins = allowedOrigins; this.graphQLInvoker = graphQLInvoker != null ? graphQLInvoker : queryInvoker.toGraphQLInvoker(); this.objectMapper = objectMapper; this.listeners = listeners; @@ -148,6 +151,7 @@ public static class Builder { private int asyncMaxPoolSize = 200; private Executor asyncExecutor; private AsyncTaskDecorator asyncTaskDecorator; + private List allowedOrigins = new ArrayList<>(); private Builder(GraphQLInvocationInputFactory.Builder invocationInputFactoryBuilder) { this.invocationInputFactoryBuilder = invocationInputFactoryBuilder; @@ -249,6 +253,13 @@ public Builder with(AsyncTaskDecorator asyncTaskDecorator) { return this; } + public Builder allowedOrigins(List allowedOrigins) { + if (allowedOrigins != null) { + this.allowedOrigins.addAll(allowedOrigins); + } + return this; + } + private Executor getAsyncExecutor() { if (asyncExecutor != null) { return asyncExecutor; @@ -279,7 +290,8 @@ public GraphQLConfiguration build() { contextSetting, batchInputPreProcessorSupplier, responseCacheManager, - getAsyncTaskExecutor()); + getAsyncTaskExecutor(), + allowedOrigins); } } } diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java index cd22aede..ab88ac16 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java @@ -1,6 +1,7 @@ package graphql.kickstart.servlet; import static java.util.Arrays.asList; +import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static java.util.stream.Collectors.toList; @@ -65,6 +66,7 @@ public class GraphQLWebsocketServlet extends Endpoint { private final AtomicBoolean isShuttingDown = new AtomicBoolean(false); private final AtomicBoolean isShutDown = new AtomicBoolean(false); private final Object cacheLock = new Object(); + private final List allowedOrigins; public GraphQLWebsocketServlet(GraphQLConfiguration configuration) { this(configuration, null); @@ -77,21 +79,23 @@ public GraphQLWebsocketServlet( configuration.getGraphQLInvoker(), configuration.getInvocationInputFactory(), configuration.getObjectMapper(), - connectionListeners); + connectionListeners, + configuration.getAllowedOrigins()); } public GraphQLWebsocketServlet( GraphQLInvoker graphQLInvoker, GraphQLSubscriptionInvocationInputFactory invocationInputFactory, GraphQLObjectMapper graphQLObjectMapper) { - this(graphQLInvoker, invocationInputFactory, graphQLObjectMapper, null); + this(graphQLInvoker, invocationInputFactory, graphQLObjectMapper, null, emptyList()); } public GraphQLWebsocketServlet( GraphQLInvoker graphQLInvoker, GraphQLSubscriptionInvocationInputFactory invocationInputFactory, GraphQLObjectMapper graphQLObjectMapper, - Collection connectionListeners) { + Collection connectionListeners, + List allowedOrigins) { List listeners = new ArrayList<>(); if (connectionListeners != null) { connectionListeners.stream() @@ -114,12 +118,10 @@ public GraphQLWebsocketServlet( Stream.of(fallbackSubscriptionProtocolFactory)) .map(SubscriptionProtocolFactory::getProtocol) .collect(toList()); + this.allowedOrigins = allowedOrigins; } public GraphQLWebsocketServlet( - GraphQLInvoker graphQLInvoker, - GraphQLSubscriptionInvocationInputFactory invocationInputFactory, - GraphQLObjectMapper graphQLObjectMapper, List subscriptionProtocolFactory, SubscriptionProtocolFactory fallbackSubscriptionProtocolFactory) { @@ -132,6 +134,8 @@ public GraphQLWebsocketServlet( Stream.of(fallbackSubscriptionProtocolFactory)) .map(SubscriptionProtocolFactory::getProtocol) .collect(toList()); + + this.allowedOrigins = emptyList(); } @Override @@ -202,6 +206,26 @@ private void closeUnexpectedly(Session session, Throwable t) { } } + public boolean checkOrigin(String originHeaderValue) { + if (originHeaderValue == null || originHeaderValue.isBlank()) { + return allowedOrigins.isEmpty(); + } + String originToCheck = trimTrailingSlash(originHeaderValue); + if (!allowedOrigins.isEmpty()) { + if (allowedOrigins.contains("*")) { + return true; + } + return allowedOrigins.stream() + .map(this::trimTrailingSlash) + .anyMatch(originToCheck::equalsIgnoreCase); + } + return true; + } + + private String trimTrailingSlash(String origin) { + return (origin.endsWith("/") ? origin.substring(0, origin.length() - 1) : origin); + } + public void modifyHandshake( ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) { sec.getUserProperties().put(HANDSHAKE_REQUEST_KEY, request); From 060f75327b709cb36cf56c246ae43ee78b1b6279 Mon Sep 17 00:00:00 2001 From: Michiel Oliemans Date: Tue, 9 May 2023 19:07:16 +0200 Subject: [PATCH 59/62] fix(#516): add check origin tests --- .../GraphQLWebsocketServletSpec.groovy | 83 +++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/GraphQLWebsocketServletSpec.groovy diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/GraphQLWebsocketServletSpec.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/GraphQLWebsocketServletSpec.groovy new file mode 100644 index 00000000..e4074455 --- /dev/null +++ b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/GraphQLWebsocketServletSpec.groovy @@ -0,0 +1,83 @@ +package graphql.kickstart.servlet + +import spock.lang.Specification + +class GraphQLWebsocketServletSpec extends Specification { + + def "checkOrigin without any allowed origins allows given origin"() { + given: "a websocket servlet with no allowed origins" + def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).build()) + + when: "we check origin http://localhost:8080" + def allowed = servlet.checkOrigin("http://localhost:8080") + + then: + allowed + } + + def "checkOrigin without any allowed origins allows when no origin given"() { + given: "a websocket servlet with no allowed origins" + def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).build()) + + when: "we check origin null" + def allowed = servlet.checkOrigin(null) + + then: + allowed + } + + def "checkOrigin without any allowed origins allows when origin is empty"() { + given: "a websocket servlet with no allowed origins" + def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).build()) + + when: "we check origin null" + def allowed = servlet.checkOrigin(" ") + + then: + allowed + } + + def "checkOrigin with allow all origins allows given origin"() { + given: "a websocket servlet with allow all origins" + def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).allowedOrigins(List.of("*")).build()) + + when: "we check origin http://localhost:8080" + def allowed = servlet.checkOrigin("http://localhost:8080") + + then: + allowed + } + + def "checkOrigin with specific allowed origins allows given origin"() { + given: "a websocket servlet with allow all origins" + def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).allowedOrigins(List.of("http://localhost:8080")).build()) + + when: "we check origin http://localhost:8080" + def allowed = servlet.checkOrigin("http://localhost:8080") + + then: + allowed + } + + def "checkOrigin with specific allowed origins allows given origin with trailing slash"() { + given: "a websocket servlet with allow all origins" + def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).allowedOrigins(List.of("http://localhost:8080")).build()) + + when: "we check origin http://localhost:8080/" + def allowed = servlet.checkOrigin("http://localhost:8080/") + + then: + allowed + } + + def "checkOrigin with specific allowed origins with trailing slash allows given origin without trailing slash"() { + given: "a websocket servlet with allow all origins" + def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).allowedOrigins(List.of("http://localhost:8080/")).build()) + + when: "we check origin http://localhost:8080" + def allowed = servlet.checkOrigin("http://localhost:8080") + + then: + allowed + } +} From d947467a7f6c19aeb699c55e7d9a48bce672909e Mon Sep 17 00:00:00 2001 From: Michiel Oliemans Date: Tue, 9 May 2023 19:42:40 +0200 Subject: [PATCH 60/62] chore: update version to 15.1.0 --- gradle.properties | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index c5145408..d482aa8a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,4 +1,4 @@ -version=15.0.1-SNAPSHOT +version=15.1.0-SNAPSHOT group=com.graphql-java-kickstart PROJECT_NAME=graphql-java-servlet PROJECT_DESC=GraphQL Java Kickstart @@ -12,4 +12,4 @@ LIB_JACKSON_VER=2.15.0 LIB_SLF4J_VER=2.0.7 LIB_LOMBOK_VER=1.18.26 SOURCE_COMPATIBILITY=17 -TARGET_COMPATIBILITY=17 \ No newline at end of file +TARGET_COMPATIBILITY=17 From f02694d7fa1b9b2e87f277786860bad28e93f9a6 Mon Sep 17 00:00:00 2001 From: Michiel Oliemans Date: Wed, 10 May 2023 14:13:06 +0200 Subject: [PATCH 61/62] fix(#516): revert check origin test --- .../servlet/GraphQLConfiguration.java | 16 +--- .../servlet/GraphQLWebsocketServlet.java | 33 +------- .../GraphQLWebsocketServletSpec.groovy | 83 ------------------- 3 files changed, 5 insertions(+), 127 deletions(-) delete mode 100644 graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/GraphQLWebsocketServletSpec.groovy diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLConfiguration.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLConfiguration.java index 9877ce5a..f009889e 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLConfiguration.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLConfiguration.java @@ -36,7 +36,6 @@ public class GraphQLConfiguration { private final ContextSetting contextSetting; private final GraphQLResponseCacheManager responseCacheManager; @Getter private final Executor asyncExecutor; - @Getter private final List allowedOrigins; private HttpRequestHandler requestHandler; private GraphQLConfiguration( @@ -50,11 +49,9 @@ private GraphQLConfiguration( ContextSetting contextSetting, Supplier batchInputPreProcessor, GraphQLResponseCacheManager responseCacheManager, - Executor asyncExecutor, - List allowedOrigins) { + Executor asyncExecutor) { this.invocationInputFactory = invocationInputFactory; this.asyncExecutor = asyncExecutor; - this.allowedOrigins = allowedOrigins; this.graphQLInvoker = graphQLInvoker != null ? graphQLInvoker : queryInvoker.toGraphQLInvoker(); this.objectMapper = objectMapper; this.listeners = listeners; @@ -151,7 +148,6 @@ public static class Builder { private int asyncMaxPoolSize = 200; private Executor asyncExecutor; private AsyncTaskDecorator asyncTaskDecorator; - private List allowedOrigins = new ArrayList<>(); private Builder(GraphQLInvocationInputFactory.Builder invocationInputFactoryBuilder) { this.invocationInputFactoryBuilder = invocationInputFactoryBuilder; @@ -253,13 +249,6 @@ public Builder with(AsyncTaskDecorator asyncTaskDecorator) { return this; } - public Builder allowedOrigins(List allowedOrigins) { - if (allowedOrigins != null) { - this.allowedOrigins.addAll(allowedOrigins); - } - return this; - } - private Executor getAsyncExecutor() { if (asyncExecutor != null) { return asyncExecutor; @@ -290,8 +279,7 @@ public GraphQLConfiguration build() { contextSetting, batchInputPreProcessorSupplier, responseCacheManager, - getAsyncTaskExecutor(), - allowedOrigins); + getAsyncTaskExecutor()); } } } diff --git a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java index ab88ac16..38381adf 100644 --- a/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java +++ b/graphql-java-servlet/src/main/java/graphql/kickstart/servlet/GraphQLWebsocketServlet.java @@ -1,7 +1,6 @@ package graphql.kickstart.servlet; import static java.util.Arrays.asList; -import static java.util.Collections.emptyList; import static java.util.Collections.singletonList; import static java.util.stream.Collectors.toList; @@ -66,7 +65,6 @@ public class GraphQLWebsocketServlet extends Endpoint { private final AtomicBoolean isShuttingDown = new AtomicBoolean(false); private final AtomicBoolean isShutDown = new AtomicBoolean(false); private final Object cacheLock = new Object(); - private final List allowedOrigins; public GraphQLWebsocketServlet(GraphQLConfiguration configuration) { this(configuration, null); @@ -79,23 +77,21 @@ public GraphQLWebsocketServlet( configuration.getGraphQLInvoker(), configuration.getInvocationInputFactory(), configuration.getObjectMapper(), - connectionListeners, - configuration.getAllowedOrigins()); + connectionListeners); } public GraphQLWebsocketServlet( GraphQLInvoker graphQLInvoker, GraphQLSubscriptionInvocationInputFactory invocationInputFactory, GraphQLObjectMapper graphQLObjectMapper) { - this(graphQLInvoker, invocationInputFactory, graphQLObjectMapper, null, emptyList()); + this(graphQLInvoker, invocationInputFactory, graphQLObjectMapper, null); } public GraphQLWebsocketServlet( GraphQLInvoker graphQLInvoker, GraphQLSubscriptionInvocationInputFactory invocationInputFactory, GraphQLObjectMapper graphQLObjectMapper, - Collection connectionListeners, - List allowedOrigins) { + Collection connectionListeners) { List listeners = new ArrayList<>(); if (connectionListeners != null) { connectionListeners.stream() @@ -118,7 +114,6 @@ public GraphQLWebsocketServlet( Stream.of(fallbackSubscriptionProtocolFactory)) .map(SubscriptionProtocolFactory::getProtocol) .collect(toList()); - this.allowedOrigins = allowedOrigins; } public GraphQLWebsocketServlet( @@ -134,8 +129,6 @@ public GraphQLWebsocketServlet( Stream.of(fallbackSubscriptionProtocolFactory)) .map(SubscriptionProtocolFactory::getProtocol) .collect(toList()); - - this.allowedOrigins = emptyList(); } @Override @@ -206,26 +199,6 @@ private void closeUnexpectedly(Session session, Throwable t) { } } - public boolean checkOrigin(String originHeaderValue) { - if (originHeaderValue == null || originHeaderValue.isBlank()) { - return allowedOrigins.isEmpty(); - } - String originToCheck = trimTrailingSlash(originHeaderValue); - if (!allowedOrigins.isEmpty()) { - if (allowedOrigins.contains("*")) { - return true; - } - return allowedOrigins.stream() - .map(this::trimTrailingSlash) - .anyMatch(originToCheck::equalsIgnoreCase); - } - return true; - } - - private String trimTrailingSlash(String origin) { - return (origin.endsWith("/") ? origin.substring(0, origin.length() - 1) : origin); - } - public void modifyHandshake( ServerEndpointConfig sec, HandshakeRequest request, HandshakeResponse response) { sec.getUserProperties().put(HANDSHAKE_REQUEST_KEY, request); diff --git a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/GraphQLWebsocketServletSpec.groovy b/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/GraphQLWebsocketServletSpec.groovy deleted file mode 100644 index e4074455..00000000 --- a/graphql-java-servlet/src/test/groovy/graphql/kickstart/servlet/GraphQLWebsocketServletSpec.groovy +++ /dev/null @@ -1,83 +0,0 @@ -package graphql.kickstart.servlet - -import spock.lang.Specification - -class GraphQLWebsocketServletSpec extends Specification { - - def "checkOrigin without any allowed origins allows given origin"() { - given: "a websocket servlet with no allowed origins" - def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).build()) - - when: "we check origin http://localhost:8080" - def allowed = servlet.checkOrigin("http://localhost:8080") - - then: - allowed - } - - def "checkOrigin without any allowed origins allows when no origin given"() { - given: "a websocket servlet with no allowed origins" - def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).build()) - - when: "we check origin null" - def allowed = servlet.checkOrigin(null) - - then: - allowed - } - - def "checkOrigin without any allowed origins allows when origin is empty"() { - given: "a websocket servlet with no allowed origins" - def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).build()) - - when: "we check origin null" - def allowed = servlet.checkOrigin(" ") - - then: - allowed - } - - def "checkOrigin with allow all origins allows given origin"() { - given: "a websocket servlet with allow all origins" - def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).allowedOrigins(List.of("*")).build()) - - when: "we check origin http://localhost:8080" - def allowed = servlet.checkOrigin("http://localhost:8080") - - then: - allowed - } - - def "checkOrigin with specific allowed origins allows given origin"() { - given: "a websocket servlet with allow all origins" - def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).allowedOrigins(List.of("http://localhost:8080")).build()) - - when: "we check origin http://localhost:8080" - def allowed = servlet.checkOrigin("http://localhost:8080") - - then: - allowed - } - - def "checkOrigin with specific allowed origins allows given origin with trailing slash"() { - given: "a websocket servlet with allow all origins" - def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).allowedOrigins(List.of("http://localhost:8080")).build()) - - when: "we check origin http://localhost:8080/" - def allowed = servlet.checkOrigin("http://localhost:8080/") - - then: - allowed - } - - def "checkOrigin with specific allowed origins with trailing slash allows given origin without trailing slash"() { - given: "a websocket servlet with allow all origins" - def servlet = new GraphQLWebsocketServlet(GraphQLConfiguration.with(TestUtils.createGraphQlSchema()).allowedOrigins(List.of("http://localhost:8080/")).build()) - - when: "we check origin http://localhost:8080" - def allowed = servlet.checkOrigin("http://localhost:8080") - - then: - allowed - } -} From ebbd81406995b9ac54b303ec4e753f06a8e879c4 Mon Sep 17 00:00:00 2001 From: Michiel Oliemans Date: Wed, 10 May 2023 14:30:39 +0200 Subject: [PATCH 62/62] feat: limit scope of servlet-api libs fixes #490 --- graphql-java-servlet/build.gradle | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/graphql-java-servlet/build.gradle b/graphql-java-servlet/build.gradle index e53ddf86..27b2ffce 100644 --- a/graphql-java-servlet/build.gradle +++ b/graphql-java-servlet/build.gradle @@ -16,9 +16,9 @@ dependencies { api(project(':graphql-java-kickstart')) // Servlet - api 'jakarta.servlet:jakarta.servlet-api:6.0.0' - api 'jakarta.websocket:jakarta.websocket-api:2.1.0' - api 'jakarta.websocket:jakarta.websocket-client-api:2.1.0' + compileOnly 'jakarta.servlet:jakarta.servlet-api:6.0.0' + compileOnly 'jakarta.websocket:jakarta.websocket-api:2.1.0' + compileOnly 'jakarta.websocket:jakarta.websocket-client-api:2.1.0' implementation "org.slf4j:slf4j-api:$LIB_SLF4J_VER" // OSGi @@ -40,4 +40,7 @@ dependencies { testImplementation 'org.springframework:spring-test:6.0.8' testRuntimeOnly 'org.springframework:spring-web:6.0.8' testImplementation 'com.google.guava:guava:31.1-jre' + testImplementation 'jakarta.servlet:jakarta.servlet-api:6.0.0' + testImplementation 'jakarta.websocket:jakarta.websocket-api:2.1.0' + testImplementation 'jakarta.websocket:jakarta.websocket-client-api:2.1.0' }