diff --git a/build.gradle.kts b/build.gradle.kts index 5416b2781..396251bf0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -53,6 +53,7 @@ allprojects { // as dependencies. e.g. KOTLIN_VERSION extra["sb.version"] = "4.0.0" extra["kotlin.version"] = Versions.KOTLIN_VERSION + extra["json-path.version"] = "3.0.0" } val internalBomModules by extra( listOf( diff --git a/dependencies.lock b/dependencies.lock index e3b16d83c..1b88a8db7 100644 --- a/dependencies.lock +++ b/dependencies.lock @@ -113,21 +113,123 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.intellij.deps:trove4j": { + "locked": "1.0.20200330" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.1.0" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.1.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "1.6.10" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.1.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.1.0" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.6.4" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.1.0" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.intellij.deps:trove4j": { + "locked": "1.0.20200330" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.1.0" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.1.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "1.6.10" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.1.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.1.0" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.6.4" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { diff --git a/dgs-starter-test/dependencies.lock b/dgs-starter-test/dependencies.lock index b948d2410..cd9a682d4 100644 --- a/dgs-starter-test/dependencies.lock +++ b/dgs-starter-test/dependencies.lock @@ -36,7 +36,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -62,7 +62,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -119,7 +119,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -154,7 +154,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -183,7 +183,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ @@ -195,7 +195,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -311,21 +311,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -348,7 +444,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -406,7 +502,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ @@ -415,7 +511,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -444,7 +540,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ @@ -453,7 +549,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -482,7 +578,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ @@ -494,7 +590,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" diff --git a/dgs-starter/build.gradle.kts b/dgs-starter/build.gradle.kts index f3e0cfd03..9cb56e280 100644 --- a/dgs-starter/build.gradle.kts +++ b/dgs-starter/build.gradle.kts @@ -20,4 +20,5 @@ dependencies { api(project(":graphql-dgs-reactive")) api(project(":graphql-error-types")) api("org.springframework.boot:spring-boot-starter-graphql") + api("tools.jackson.module:jackson-module-kotlin") } diff --git a/dgs-starter/dependencies.lock b/dgs-starter/dependencies.lock index 63ceabe90..5d88ade65 100644 --- a/dgs-starter/dependencies.lock +++ b/dgs-starter/dependencies.lock @@ -2,7 +2,6 @@ "apiDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -15,12 +14,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -31,10 +37,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -70,6 +84,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -79,12 +94,14 @@ }, "org.springframework.boot:spring-boot-starter-graphql": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "compileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -97,12 +114,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -113,10 +137,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -152,6 +184,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -160,19 +193,21 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" }, "org.springframework.boot:spring-boot-starter-graphql": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "implementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -185,12 +220,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -201,10 +243,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -240,6 +290,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -248,13 +299,16 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" }, "org.springframework.boot:spring-boot-starter-graphql": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "jmh": { @@ -271,7 +325,6 @@ "jmhApiDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -284,12 +337,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -300,10 +360,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -339,6 +407,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -348,12 +417,14 @@ }, "org.springframework.boot:spring-boot-starter-graphql": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "jmhCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -366,12 +437,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -382,10 +460,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -421,6 +507,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -429,7 +516,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -445,12 +532,14 @@ }, "org.springframework.boot:spring-boot-starter-graphql": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "jmhImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -463,12 +552,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -479,10 +575,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -518,6 +622,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -526,7 +631,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -542,6 +647,9 @@ }, "org.springframework.boot:spring-boot-starter-graphql": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "jmhRuntimeClasspath": { @@ -553,40 +661,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -596,12 +674,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -613,10 +698,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -653,7 +746,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -677,6 +770,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -687,7 +781,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -701,12 +796,13 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -730,6 +826,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -777,6 +874,9 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -832,21 +932,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -858,40 +1054,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -901,12 +1067,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -918,10 +1091,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -979,6 +1160,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -989,7 +1171,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1003,17 +1186,19 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1058,6 +1243,9 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "swiftExportClasspathResolvable": { @@ -1068,7 +1256,6 @@ "testCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1081,11 +1268,19 @@ ], "locked": "25.0" }, - "com.jayway.jsonpath:json-path": { + "com.graphql-java:java-dataloader": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" ], - "locked": "2.9.0" + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -1096,10 +1291,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1126,7 +1329,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1138,6 +1341,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1146,7 +1350,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1162,12 +1366,14 @@ }, "org.springframework.boot:spring-boot-starter-test": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1180,11 +1386,19 @@ ], "locked": "25.0" }, - "com.jayway.jsonpath:json-path": { + "com.graphql-java:java-dataloader": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs" ], - "locked": "2.9.0" + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -1195,10 +1409,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1225,7 +1447,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1237,6 +1459,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1245,7 +1468,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1261,6 +1484,9 @@ }, "org.springframework.boot:spring-boot-starter-test": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "testRuntimeClasspath": { @@ -1272,40 +1498,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1315,12 +1511,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -1332,10 +1535,18 @@ "com.netflix.graphql.dgs:graphql-dgs-client": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1372,7 +1583,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -1396,6 +1607,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1406,7 +1618,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1420,12 +1633,13 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1440,6 +1654,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1487,6 +1702,9 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs-client/build.gradle.kts b/graphql-dgs-client/build.gradle.kts index df5e1f548..b0e764f5d 100644 --- a/graphql-dgs-client/build.gradle.kts +++ b/graphql-dgs-client/build.gradle.kts @@ -17,20 +17,33 @@ dependencies { api("com.jayway.jsonpath:json-path") api("io.projectreactor:reactor-core") - api("com.fasterxml.jackson.core:jackson-annotations") + api(project(":graphql-dgs-json-api")) api(project(":graphql-dgs-subscription-types")) compileOnly("org.springframework:spring-webflux") + // Jackson 3 — app provides at runtime + compileOnly("tools.jackson.core:jackson-databind") + compileOnly("tools.jackson.module:jackson-module-kotlin") + + // Jackson 2 — app provides at runtime (annotations come transitively from :graphql-dgs-subscription-types) + compileOnly("com.fasterxml.jackson.module:jackson-module-kotlin") + compileOnly("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") + compileOnly("com.fasterxml.jackson.module:jackson-module-parameter-names") + compileOnly("com.fasterxml.jackson.datatype:jackson-datatype-jdk8") + implementation("org.springframework:spring-web") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin") - implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") - implementation("com.fasterxml.jackson.module:jackson-module-parameter-names") - implementation("com.fasterxml.jackson.datatype:jackson-datatype-jdk8") implementation("com.graphql-java:graphql-java") implementation("org.jetbrains:annotations:26.1.0") + testImplementation("tools.jackson.core:jackson-databind") + testImplementation("tools.jackson.module:jackson-module-kotlin") + testImplementation("com.fasterxml.jackson.module:jackson-module-kotlin") + testImplementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") + testImplementation("com.fasterxml.jackson.module:jackson-module-parameter-names") + testImplementation("com.fasterxml.jackson.datatype:jackson-datatype-jdk8") + testImplementation("org.springframework.boot:spring-boot-starter-web") testImplementation("org.springframework.boot:spring-boot-starter-graphql") testImplementation("org.springframework:spring-test") diff --git a/graphql-dgs-client/dependencies.lock b/graphql-dgs-client/dependencies.lock index ea169d43f..8fe41f510 100644 --- a/graphql-dgs-client/dependencies.lock +++ b/graphql-dgs-client/dependencies.lock @@ -13,10 +13,17 @@ "locked": "25.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "project": true @@ -29,6 +36,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.2.20" @@ -60,10 +68,17 @@ "locked": "25.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "project": true @@ -76,12 +91,13 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -91,20 +107,15 @@ }, "org.springframework:spring-webflux": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "compileOnlyDependenciesMetadata": { - "org.springframework:spring-webflux": { - "locked": "7.0.1" - } - }, - "implementationDependenciesMetadata": { - "com.fasterxml.jackson.core:jackson-annotations": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-subscription-types" - ], - "locked": "2.20" - }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { "locked": "2.20.1" }, @@ -117,6 +128,23 @@ "com.fasterxml.jackson.module:jackson-module-parameter-names": { "locked": "2.20.1" }, + "org.springframework:spring-webflux": { + "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" + } + }, + "implementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" @@ -124,10 +152,17 @@ "locked": "25.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "project": true @@ -140,12 +175,13 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -179,10 +215,17 @@ "locked": "25.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "project": true @@ -195,6 +238,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.2.20" @@ -226,10 +270,17 @@ "locked": "25.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "project": true @@ -242,12 +293,13 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -266,20 +318,15 @@ }, "org.springframework:spring-webflux": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "jmhCompileOnlyDependenciesMetadata": { - "org.springframework:spring-webflux": { - "locked": "7.0.1" - } - }, - "jmhImplementationDependenciesMetadata": { - "com.fasterxml.jackson.core:jackson-annotations": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-subscription-types" - ], - "locked": "2.20" - }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { "locked": "2.20.1" }, @@ -292,6 +339,23 @@ "com.fasterxml.jackson.module:jackson-module-parameter-names": { "locked": "2.20.1" }, + "org.springframework:spring-webflux": { + "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" + } + }, + "jmhImplementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" @@ -299,10 +363,17 @@ "locked": "25.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "project": true @@ -315,12 +386,13 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -347,38 +419,20 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], "locked": "2.20.1" }, "com.graphql-java:graphql-java": { @@ -402,9 +456,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -420,7 +475,8 @@ }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "project": true }, @@ -430,12 +486,20 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -492,7 +556,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -521,6 +585,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -534,7 +599,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -550,6 +616,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -558,7 +625,7 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -584,6 +651,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -670,6 +738,15 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -725,21 +802,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -749,18 +922,6 @@ ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" @@ -768,10 +929,17 @@ "locked": "25.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "project": true @@ -784,18 +952,21 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.0.17" @@ -818,7 +989,6 @@ "testCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -855,9 +1025,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -883,12 +1054,20 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -937,7 +1116,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -954,6 +1133,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -965,7 +1145,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1002,12 +1182,20 @@ }, "org.springframework:spring-web": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1044,9 +1232,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1072,12 +1261,20 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1126,7 +1323,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1143,6 +1340,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1154,7 +1352,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1191,6 +1389,15 @@ }, "org.springframework:spring-web": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testRuntimeClasspath": { @@ -1202,38 +1409,20 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], "locked": "2.20.1" }, "com.graphql-java:graphql-java": { @@ -1257,9 +1446,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1275,7 +1465,8 @@ }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "project": true }, @@ -1285,12 +1476,20 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1347,7 +1546,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -1376,6 +1575,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1389,7 +1589,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1405,6 +1606,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1413,7 +1615,7 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1430,6 +1632,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1516,6 +1719,15 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/CustomGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/CustomGraphQLClient.kt index 7a38f8c9c..4c21a298e 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/CustomGraphQLClient.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/CustomGraphQLClient.kt @@ -18,12 +18,17 @@ package com.netflix.graphql.dgs.client import com.fasterxml.jackson.databind.ObjectMapper import org.intellij.lang.annotations.Language +import org.springframework.http.HttpStatusCode /** * Blocking implementation of a GraphQL client. * The user is responsible for doing the actual HTTP request, making this pluggable with any HTTP client. * For a more convenient option, use [WebClientGraphQLClient] instead. */ +@Deprecated( + "Tied to Jackson 2. Migrate to DgsCustomGraphQLClient, which accepts any DgsJsonMapper (defaulting to Jackson 3). This class will be removed in a future release.", + ReplaceWith("DgsCustomGraphQLClient", "com.netflix.graphql.dgs.client.DgsCustomGraphQLClient"), +) class CustomGraphQLClient( private val url: String, private val requestExecutor: RequestExecutor, @@ -60,6 +65,11 @@ class CustomGraphQLClient( ) val response = requestExecutor.execute(url, GraphQLClients.defaultHeaders, serializedRequest) - return GraphQLClients.handleResponse(response, serializedRequest, url, mapper) + + if (HttpStatusCode.valueOf(response.statusCode).isError) { + throw GraphQLClientException(response.statusCode, url, response.body ?: "", serializedRequest) + } + + return GraphQLResponse(response.body ?: "", response.headers, mapper) } } diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/CustomMonoGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/CustomMonoGraphQLClient.kt index 58b2c9252..44d3be0f3 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/CustomMonoGraphQLClient.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/CustomMonoGraphQLClient.kt @@ -18,6 +18,7 @@ package com.netflix.graphql.dgs.client import com.fasterxml.jackson.databind.ObjectMapper import org.intellij.lang.annotations.Language +import org.springframework.http.HttpStatusCode import reactor.core.publisher.Mono /** @@ -25,6 +26,10 @@ import reactor.core.publisher.Mono * The user is responsible for doing the actual HTTP request, making this pluggable with any HTTP client. * For a more convenient option, use [WebClientGraphQLClient] instead. */ +@Deprecated( + "Tied to Jackson 2. Migrate to DgsCustomMonoGraphQLClient, which accepts any DgsJsonMapper (defaulting to Jackson 3). This class will be removed in a future release.", + ReplaceWith("DgsCustomMonoGraphQLClient", "com.netflix.graphql.dgs.client.DgsCustomMonoGraphQLClient"), +) class CustomMonoGraphQLClient( private val url: String, private val monoRequestExecutor: MonoRequestExecutor, @@ -60,7 +65,10 @@ class CustomMonoGraphQLClient( GraphQLClients.toRequestMap(query = query, operationName = operationName, variables = variables), ) return monoRequestExecutor.execute(url, GraphQLClients.defaultHeaders, serializedRequest).map { response -> - GraphQLClients.handleResponse(response, serializedRequest, url, mapper) + if (HttpStatusCode.valueOf(response.statusCode).isError) { + throw GraphQLClientException(response.statusCode, url, response.body ?: "", serializedRequest) + } + GraphQLResponse(response.body ?: "", response.headers, mapper) } } } diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DefaultDgsGraphQLResponse.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DefaultDgsGraphQLResponse.kt new file mode 100644 index 000000000..48609355a --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DefaultDgsGraphQLResponse.kt @@ -0,0 +1,25 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.client + +import com.jayway.jsonpath.DocumentContext +import com.jayway.jsonpath.JsonPath +import com.netflix.graphql.dgs.json.DgsJsonMapper +import org.intellij.lang.annotations.Language + +class DefaultDgsGraphQLResponse( + @Language("json") override val json: String, + override val headers: Map>, + private val mapper: DgsJsonMapper, +) : DgsGraphQLResponse { + override val parsed: DocumentContext = JsonPath.using(mapper.jsonPathConfiguration()).parse(json) + + override val data: Map = parsed.read("data") ?: emptyMap() + override val errors: List = parsed.read("errors", jsonTypeRef>()) ?: emptyList() + + override fun dataAsObject(clazz: Class): T = mapper.convertValue(data, clazz) +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsCustomGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsCustomGraphQLClient.kt new file mode 100644 index 000000000..bf20c4384 --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsCustomGraphQLClient.kt @@ -0,0 +1,57 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.client + +import com.netflix.graphql.dgs.json.DgsJsonMapper +import org.intellij.lang.annotations.Language +import org.springframework.http.HttpStatusCode + +/** + * Blocking GraphQL client that delegates the HTTP call to a user-supplied [RequestExecutor]. + * + * The no-arg convenience constructor uses Jackson 3 under the hood. Callers on Jackson 2 + * must pass [Jackson2DgsJsonMapperAdapter] explicitly. + */ +class DgsCustomGraphQLClient( + private val url: String, + private val requestExecutor: RequestExecutor, + private val mapper: DgsJsonMapper, +) : DgsGraphQLClient { + constructor( + url: String, + requestExecutor: RequestExecutor, + ) : this(url, requestExecutor, Jackson3DgsJsonMapperAdapter.default()) + + constructor(url: String, requestExecutor: RequestExecutor, options: DgsGraphQLRequestOptions) : + this(url, requestExecutor, Jackson3DgsJsonMapperAdapter.fromOptions(options)) + + override fun executeQuery( + @Language("graphql") query: String, + ): DgsGraphQLResponse = executeQuery(query, emptyMap(), null) + + override fun executeQuery( + @Language("graphql") query: String, + variables: Map, + ): DgsGraphQLResponse = executeQuery(query, variables, null) + + override fun executeQuery( + @Language("graphql") query: String, + variables: Map, + operationName: String?, + ): DgsGraphQLResponse { + val serializedRequest = + mapper.writeValueAsString( + GraphQLClients.toRequestMap(query = query, operationName = operationName, variables = variables), + ) + + val response = requestExecutor.execute(url, GraphQLClients.defaultHeaders, serializedRequest) + if (HttpStatusCode.valueOf(response.statusCode).isError) { + throw GraphQLClientException(response.statusCode, url, response.body ?: "", serializedRequest) + } + return DefaultDgsGraphQLResponse(json = response.body ?: "", headers = response.headers, mapper) + } +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsCustomMonoGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsCustomMonoGraphQLClient.kt new file mode 100644 index 000000000..f18ae2df8 --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsCustomMonoGraphQLClient.kt @@ -0,0 +1,58 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.client + +import com.netflix.graphql.dgs.json.DgsJsonMapper +import org.intellij.lang.annotations.Language +import org.springframework.http.HttpStatusCode +import reactor.core.publisher.Mono + +/** + * Reactive GraphQL client that delegates the HTTP call to a user-supplied [MonoRequestExecutor]. + * + * The no-arg convenience constructor uses Jackson 3 under the hood. Callers on Jackson 2 + * must pass [Jackson2DgsJsonMapperAdapter] explicitly. + */ +class DgsCustomMonoGraphQLClient( + private val url: String, + private val monoRequestExecutor: MonoRequestExecutor, + private val mapper: DgsJsonMapper, +) : DgsMonoGraphQLClient { + constructor( + url: String, + monoRequestExecutor: MonoRequestExecutor, + ) : this(url, monoRequestExecutor, Jackson3DgsJsonMapperAdapter.default()) + + constructor(url: String, monoRequestExecutor: MonoRequestExecutor, options: DgsGraphQLRequestOptions) : + this(url, monoRequestExecutor, Jackson3DgsJsonMapperAdapter.fromOptions(options)) + + override fun reactiveExecuteQuery( + @Language("graphql") query: String, + ): Mono = reactiveExecuteQuery(query, emptyMap(), null) + + override fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + ): Mono = reactiveExecuteQuery(query, variables, null) + + override fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + operationName: String?, + ): Mono { + val serializedRequest = + mapper.writeValueAsString( + GraphQLClients.toRequestMap(query = query, operationName = operationName, variables = variables), + ) + return monoRequestExecutor.execute(url, GraphQLClients.defaultHeaders, serializedRequest).map { response -> + if (HttpStatusCode.valueOf(response.statusCode).isError) { + throw GraphQLClientException(response.statusCode, url, response.body ?: "", serializedRequest) + } + DefaultDgsGraphQLResponse(json = response.body ?: "", headers = response.headers, mapper) + } + } +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphQLClient.kt new file mode 100644 index 000000000..9f8351de7 --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphQLClient.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.netflix.graphql.dgs.client + +import org.intellij.lang.annotations.Language + +/** + * Jackson-agnostic blocking GraphQL client contract. Implemented by the new `Dgs*` client + * classes and (for back-compat) by the deprecated [GraphQLClient]. + */ +interface DgsGraphQLClient { + fun executeQuery( + @Language("graphql") query: String, + ): DgsGraphQLResponse + + fun executeQuery( + @Language("graphql") query: String, + variables: Map, + ): DgsGraphQLResponse + + fun executeQuery( + @Language("graphql") query: String, + variables: Map, + operationName: String?, + ): DgsGraphQLResponse +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphQLRequestOptions.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphQLRequestOptions.kt new file mode 100644 index 000000000..80dacf3d5 --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphQLRequestOptions.kt @@ -0,0 +1,21 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.client + +import graphql.GraphQLContext +import graphql.schema.Coercing + +/** + * Jackson-agnostic request options for DGS GraphQL clients. Consumed by adapters + * (e.g. [Jackson3DgsJsonMapperAdapter.fromOptions]) to build a [com.netflix.graphql.dgs.json.DgsJsonMapper]. + */ +class DgsGraphQLRequestOptions + @JvmOverloads + constructor( + val scalars: Map, Coercing<*, *>> = emptyMap(), + val graphQLContext: GraphQLContext = GraphQLContext.getDefault(), + ) diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphQLResponse.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphQLResponse.kt new file mode 100644 index 000000000..f62b095b5 --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphQLResponse.kt @@ -0,0 +1,99 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.netflix.graphql.dgs.client + +import com.jayway.jsonpath.DocumentContext +import com.jayway.jsonpath.TypeRef +import org.slf4j.LoggerFactory + +/** + * Canonical response contract for the DGS GraphQL client. Jackson-version-agnostic — + * program against this type and your code survives Jackson upgrades. + * + * Concrete implementations: + * - [DefaultDgsGraphQLResponse] — default impl backed by any [com.netflix.graphql.dgs.json.DgsJsonMapper]. Construct directly when you need a response instance (e.g. in tests). + * - [GraphQLResponse] (deprecated, Jackson 2) — kept for back-compat during the transition; will be removed in a future release + */ +interface DgsGraphQLResponse { + val json: String + + val headers: Map> + + val parsed: DocumentContext + + val data: Map + + val errors: List + + fun dataAsObject(clazz: Class): T + + /** + * Extract a value at [path]. Returns whatever type the caller binds to — for JSON objects + * this is a Map. Use [extractValueAsObject] to deserialize into a specific class instead. + */ + fun extractValue(path: String): T { + val dataPath = getDataPath(path) + try { + return parsed.read(dataPath) + } catch (ex: Exception) { + logger.warn("Error extracting path '$path' from data: '$data'") + throw ex + } + } + + fun extractValueAsObject( + path: String, + clazz: Class, + ): T { + val dataPath = getDataPath(path) + try { + return parsed.read(dataPath, clazz) + } catch (ex: Exception) { + logger.warn("Error extracting path '$path' from data: '$data'") + throw ex + } + } + + /** Use this overload for generic types like `List`. */ + fun extractValueAsObject( + path: String, + typeRef: TypeRef, + ): T { + val dataPath = getDataPath(path) + try { + return parsed.read(dataPath, typeRef) + } catch (ex: Exception) { + logger.warn("Error extracting path '$path' from data: '$data'") + throw ex + } + } + + fun getRequestDetails(): RequestDetails? = extractValueAsObject("gatewayRequestDetails", RequestDetails::class.java) + + fun hasErrors(): Boolean = errors.isNotEmpty() + + companion object { + private val logger = LoggerFactory.getLogger(DgsGraphQLResponse::class.java) + + fun getDataPath(path: String): String = + if (path == "data" || path.startsWith("data.")) { + path + } else { + "data.$path" + } + } +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphqlSSESubscriptionGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphqlSSESubscriptionGraphQLClient.kt new file mode 100644 index 000000000..ac938c206 --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsGraphqlSSESubscriptionGraphQLClient.kt @@ -0,0 +1,80 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.client + +import com.netflix.graphql.dgs.json.DgsJsonMapper +import com.netflix.graphql.types.subscription.QueryPayload +import org.intellij.lang.annotations.Language +import org.springframework.http.HttpHeaders +import org.springframework.http.MediaType +import org.springframework.web.reactive.function.client.WebClient +import org.springframework.web.reactive.function.client.toEntityFlux +import reactor.core.publisher.Flux +import reactor.core.publisher.Sinks +import reactor.core.scheduler.Schedulers + +/** + * Client for servers following the graphql-sse spec + * (https://github.com/graphql/graphql-over-http/blob/d51ae80d62b5fd8802a3383793f01bdf306e8290/rfcs/GraphQLOverSSE.md). + * + * The no-arg-mapper convenience constructor uses Jackson 3 under the hood. Callers on Jackson 2 + * must pass [Jackson2DgsJsonMapperAdapter] explicitly. + */ +class DgsGraphqlSSESubscriptionGraphQLClient( + private val url: String, + private val webClient: WebClient, + private val mapper: DgsJsonMapper, +) : DgsReactiveGraphQLClient { + constructor(url: String, webClient: WebClient) : + this(url, webClient, Jackson3DgsJsonMapperAdapter.default()) + + constructor(url: String, webClient: WebClient, options: DgsGraphQLRequestOptions) : + this(url, webClient, Jackson3DgsJsonMapperAdapter.fromOptions(options)) + + override fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + ): Flux = reactiveExecuteQuery(query, variables, null) + + override fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + operationName: String?, + ): Flux { + val queryPayload = QueryPayload(variables, emptyMap(), operationName, query) + val jsonPayload = mapper.writeValueAsString(queryPayload) + val sink = Sinks.many().unicast().onBackpressureBuffer() + + val dis = + webClient + .post() + .uri(url) + .contentType(MediaType.APPLICATION_JSON) + .bodyValue(jsonPayload) + .accept(MediaType.TEXT_EVENT_STREAM) + .retrieve() + .toEntityFlux() + .flatMapMany { + val headers = it.headers.toMap() + it.body + ?.filter { sse -> sse.isNotBlank() } + ?.map { sse -> + sink.tryEmitNext(DefaultDgsGraphQLResponse(json = sse, headers = headers, mapper)) + } ?: Flux.empty() + }.onErrorResume { Flux.just(sink.tryEmitError(it)) } + .doFinally { sink.tryEmitComplete() } + .subscribeOn(Schedulers.boundedElastic()) + .subscribe() + return sink.asFlux().publishOn(Schedulers.single()).doFinally { dis.dispose() } + } +} + +private fun HttpHeaders.toMap(): Map> { + val result = mutableMapOf>() + this.forEach { key, values -> result[key] = values } + return result +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsMonoGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsMonoGraphQLClient.kt new file mode 100644 index 000000000..a2facf844 --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsMonoGraphQLClient.kt @@ -0,0 +1,41 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.netflix.graphql.dgs.client + +import org.intellij.lang.annotations.Language +import reactor.core.publisher.Mono + +/** + * Jackson-agnostic reactive GraphQL client contract. Implemented by the new `Dgs*` client + * classes and (for back-compat) by the deprecated [MonoGraphQLClient]. + */ +interface DgsMonoGraphQLClient { + fun reactiveExecuteQuery( + @Language("graphql") query: String, + ): Mono + + fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + ): Mono + + fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + operationName: String?, + ): Mono +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsReactiveGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsReactiveGraphQLClient.kt new file mode 100644 index 000000000..96e3fe84d --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsReactiveGraphQLClient.kt @@ -0,0 +1,28 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.client + +import org.intellij.lang.annotations.Language +import reactor.core.publisher.Flux + +/** + * Jackson-agnostic reactive GraphQL client contract for clients that produce multiple results + * such as subscriptions. Implemented by the new `Dgs*` subscription clients and (for back-compat) + * by the deprecated [ReactiveGraphQLClient]. + */ +interface DgsReactiveGraphQLClient { + fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + ): Flux + + fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + operationName: String?, + ): Flux +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsRestClientGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsRestClientGraphQLClient.kt new file mode 100644 index 000000000..b2a3d04fa --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsRestClientGraphQLClient.kt @@ -0,0 +1,83 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.client + +import com.netflix.graphql.dgs.json.DgsJsonMapper +import org.intellij.lang.annotations.Language +import org.springframework.http.HttpHeaders +import org.springframework.web.client.RestClient +import org.springframework.web.client.toEntity +import java.util.function.Consumer + +/** + * RestClient-based blocking DGS client. + * + * The no-arg convenience constructor uses Jackson 3 under the hood. Callers on Jackson 2 + * must pass [Jackson2DgsJsonMapperAdapter] explicitly. + */ +class DgsRestClientGraphQLClient( + private val restClient: RestClient, + private val headersConsumer: Consumer, + private val mapper: DgsJsonMapper, +) : DgsGraphQLClient { + constructor(restClient: RestClient) : this(restClient, Consumer { }) + + constructor(restClient: RestClient, headersConsumer: Consumer) : + this(restClient, headersConsumer, Jackson3DgsJsonMapperAdapter.default()) + + constructor(restClient: RestClient, options: DgsGraphQLRequestOptions) : + this(restClient, Consumer { }, Jackson3DgsJsonMapperAdapter.fromOptions(options)) + + override fun executeQuery( + @Language("graphql") query: String, + ): DgsGraphQLResponse = executeQuery(query, emptyMap(), null) + + override fun executeQuery( + @Language("graphql") query: String, + variables: Map, + ): DgsGraphQLResponse = executeQuery(query, variables, null) + + override fun executeQuery( + @Language("graphql") query: String, + variables: Map, + operationName: String?, + ): DgsGraphQLResponse { + val serializedRequest = + mapper.writeValueAsString( + GraphQLClients.toRequestMap(query = query, operationName = operationName, variables = variables), + ) + + val responseEntity = + restClient + .post() + .headers { headers -> + GraphQLClients.defaultHeaders.forEach { (key, values) -> + headers.addAll(key, values) + } + }.headers(this.headersConsumer) + .body(serializedRequest) + .retrieve() + .toEntity() + + if (!responseEntity.statusCode.is2xxSuccessful) { + throw GraphQLClientException( + statusCode = responseEntity.statusCode.value(), + url = "", + response = responseEntity.body ?: "", + request = serializedRequest, + ) + } + + return DefaultDgsGraphQLResponse(json = responseEntity.body ?: "", headers = responseEntity.headers.toMap(), mapper) + } +} + +private fun HttpHeaders.toMap(): Map> { + val result = mutableMapOf>() + this.forEach { key, values -> result[key] = values } + return result +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsWebClientGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsWebClientGraphQLClient.kt new file mode 100644 index 000000000..97b19bdef --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/DgsWebClientGraphQLClient.kt @@ -0,0 +1,114 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.client + +import com.netflix.graphql.dgs.json.DgsJsonMapper +import org.intellij.lang.annotations.Language +import org.springframework.http.HttpHeaders +import org.springframework.http.ResponseEntity +import org.springframework.web.reactive.function.client.WebClient +import org.springframework.web.reactive.function.client.WebClient.RequestBodySpec +import org.springframework.web.reactive.function.client.toEntity +import reactor.core.publisher.Mono +import java.util.function.Consumer + +/** + * WebClient-based reactive DGS client. + * + * The no-arg convenience constructor uses Jackson 3 under the hood. Callers on Jackson 2 + * must pass [Jackson2DgsJsonMapperAdapter] explicitly. + */ +class DgsWebClientGraphQLClient( + private val webclient: WebClient, + private val headersConsumer: Consumer, + private val mapper: DgsJsonMapper, +) : DgsMonoGraphQLClient { + constructor(webclient: WebClient) : this(webclient, Consumer {}) + + constructor(webclient: WebClient, headersConsumer: Consumer) : + this(webclient, headersConsumer, Jackson3DgsJsonMapperAdapter.default()) + + constructor(webclient: WebClient, options: DgsGraphQLRequestOptions) : + this(webclient, Consumer {}, Jackson3DgsJsonMapperAdapter.fromOptions(options)) + + constructor(webclient: WebClient, headersConsumer: Consumer, options: DgsGraphQLRequestOptions) : + this(webclient, headersConsumer, Jackson3DgsJsonMapperAdapter.fromOptions(options)) + + override fun reactiveExecuteQuery( + @Language("graphql") query: String, + ): Mono = reactiveExecuteQuery(query, emptyMap(), null) + + override fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + ): Mono = reactiveExecuteQuery(query, variables, null) + + override fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + operationName: String?, + ): Mono = reactiveExecuteQuery(query, variables, operationName, REQUEST_BODY_URI_CUSTOMIZER_IDENTITY) + + fun reactiveExecuteQuery( + @Language("graphql") query: String, + requestBodyUriCustomizer: RequestBodyUriCustomizer, + ): Mono = reactiveExecuteQuery(query, emptyMap(), null, requestBodyUriCustomizer) + + fun reactiveExecuteQuery( + @Language("graphql") query: String, + variables: Map, + operationName: String?, + requestBodyUriCustomizer: RequestBodyUriCustomizer, + ): Mono { + val serializedRequest = + mapper.writeValueAsString( + GraphQLClients.toRequestMap(query = query, operationName = operationName, variables = variables), + ) + + return requestBodyUriCustomizer + .apply(webclient.post()) + .headers { headers -> + GraphQLClients.defaultHeaders.forEach { (key, values) -> + headers.addAll(key, values) + } + }.headers(this.headersConsumer) + .bodyValue(serializedRequest) + .retrieve() + .toEntity() + .map { httpResponse -> handleResponse(httpResponse, serializedRequest) } + } + + private fun handleResponse( + response: ResponseEntity, + requestBody: String, + ): DgsGraphQLResponse { + if (!response.statusCode.is2xxSuccessful) { + throw GraphQLClientException( + statusCode = response.statusCode.value(), + url = webclient.toString(), + response = response.body ?: "", + request = requestBody, + ) + } + return DefaultDgsGraphQLResponse(json = response.body ?: "", headers = response.headers.toMap(), mapper) + } + + @FunctionalInterface + fun interface RequestBodyUriCustomizer { + fun apply(spec: WebClient.RequestBodyUriSpec): RequestBodySpec + } + + companion object { + private val REQUEST_BODY_URI_CUSTOMIZER_IDENTITY = RequestBodyUriCustomizer { it } + } +} + +private fun HttpHeaders.toMap(): Map> { + val result = mutableMapOf>() + this.forEach { key, values -> result[key] = values } + return result +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLClient.kt index d75cfe2d7..cebdd944d 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLClient.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLClient.kt @@ -22,13 +22,18 @@ import org.intellij.lang.annotations.Language /** * GraphQL client interface for blocking clients. */ -interface GraphQLClient { +@Deprecated( + "Tied to Jackson 2 through GraphQLResponse. Program against DgsGraphQLClient instead. " + + "This interface will be removed in a future release.", + ReplaceWith("DgsGraphQLClient", "com.netflix.graphql.dgs.client.DgsGraphQLClient"), +) +interface GraphQLClient : DgsGraphQLClient { /** * A blocking call to execute a query and parse its result. * @param query The query string. Note that you can use [code generation](https://netflix.github.io/dgs/generating-code-from-schema/#generating-query-apis-for-external-services) for a type safe query! * @return [GraphQLResponse] parses the response and gives easy access to data and errors. */ - fun executeQuery( + override fun executeQuery( @Language("graphql") query: String, ): GraphQLResponse @@ -38,7 +43,7 @@ interface GraphQLClient { * @param variables A map of input variables * @return [GraphQLResponse] parses the response and gives easy access to data and errors. */ - fun executeQuery( + override fun executeQuery( @Language("graphql") query: String, variables: Map, ): GraphQLResponse @@ -50,7 +55,7 @@ interface GraphQLClient { * @param operationName Name of the operation * @return [GraphQLResponse] parses the response and gives easy access to data and errors. */ - fun executeQuery( + override fun executeQuery( @Language("graphql") query: String, variables: Map, operationName: String?, diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLClients.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLClients.kt index 89e503612..83233ccb8 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLClients.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLClients.kt @@ -16,67 +16,15 @@ package com.netflix.graphql.dgs.client -import com.fasterxml.jackson.databind.ObjectMapper -import com.fasterxml.jackson.module.kotlin.KotlinFeature -import com.fasterxml.jackson.module.kotlin.KotlinModule -import org.springframework.http.HttpStatusCode import org.springframework.http.MediaType -import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder internal object GraphQLClients { - @Deprecated(message = "Use GraphQLRequestOptions.createCustomObjectMapper instead") - internal val objectMapper: ObjectMapper = - Jackson2ObjectMapperBuilder - .json() - .modulesToInstall( - KotlinModule - .Builder() - .enable(KotlinFeature.NullIsSameAsDefault) - .build(), - ).build() - internal val defaultHeaders: Map> = mapOf( "Accept" to listOf(MediaType.APPLICATION_JSON.toString()), "Content-Type" to listOf(MediaType.APPLICATION_JSON.toString()), ) - fun handleResponse( - response: HttpResponse, - requestBody: String, - url: String, - ): GraphQLResponse = handleResponse(response, requestBody, url, null) - - fun handleResponse( - response: HttpResponse, - requestBody: String, - url: String, - mapper: ObjectMapper, - ): GraphQLResponse { - val statusCode = response.statusCode - val body = response.body - if (HttpStatusCode.valueOf(response.statusCode).isError) { - throw GraphQLClientException(statusCode, url, body ?: "", requestBody) - } - - return GraphQLResponse(body ?: "", response.headers, mapper) - } - - fun handleResponse( - response: HttpResponse, - requestBody: String, - url: String, - options: GraphQLRequestOptions? = null, - ): GraphQLResponse { - val statusCode = response.statusCode - val body = response.body - if (HttpStatusCode.valueOf(response.statusCode).isError) { - throw GraphQLClientException(statusCode, url, body ?: "", requestBody) - } - - return GraphQLResponse(body ?: "", response.headers, options) - } - internal fun toRequestMap( query: String, operationName: String?, diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLRequestOptions.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLRequestOptions.kt index 9699f52c3..989b803d1 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLRequestOptions.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLRequestOptions.kt @@ -39,6 +39,12 @@ import java.util.Locale * Options for GraphQL requests, including custom scalars and GraphQL context and providing unified * ObjectMapper for marshalling and unmarshalling. */ +@Deprecated( + "Tied to Jackson 2 via createCustomObjectMapper() and the nested scalar serializers. " + + "Use DgsGraphQLRequestOptions, which is Jackson-agnostic. " + + "This class will be removed in a future release.", + ReplaceWith("DgsGraphQLRequestOptions", "com.netflix.graphql.dgs.client.DgsGraphQLRequestOptions"), +) class GraphQLRequestOptions( val scalars: Map, Coercing<*, *>> = emptyMap(), val graphQLContext: GraphQLContext = GraphQLContext.getDefault(), diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLResponse.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLResponse.kt index 316263a7a..afc75314e 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLResponse.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphQLResponse.kt @@ -41,15 +41,20 @@ import org.slf4j.LoggerFactory * Representation of a GraphQL response, which may contain GraphQL errors. * This class gives convenient JSON parsing methods to get data out of the response. */ +@Deprecated( + "Tied to Jackson 2. Program against the DgsGraphQLResponse interface instead; the new " + + "Dgs* client classes return it. This class will be removed in a future release.", + ReplaceWith("DgsGraphQLResponse", "com.netflix.graphql.dgs.client.DgsGraphQLResponse"), +) data class GraphQLResponse( - @Language("json") val json: String, - val headers: Map>, + @Language("json") override val json: String, + override val headers: Map>, private val mapper: ObjectMapper, -) { +) : DgsGraphQLResponse { /** * A JsonPath DocumentContext. Typically, only used internally. */ - val parsed: DocumentContext = + override val parsed: DocumentContext = JsonPath .using( Configuration @@ -64,8 +69,8 @@ data class GraphQLResponse( * Map representation of data */ - val data: Map = parsed.read("data") ?: emptyMap() - val errors: List = parsed.read("errors", jsonTypeRef>()) ?: emptyList() + override val data: Map = parsed.read("data") ?: emptyMap() + override val errors: List = parsed.read("errors", jsonTypeRef>()) ?: emptyList() constructor( @Language("json") json: String, @@ -94,14 +99,14 @@ data class GraphQLResponse( * Deserialize data into the given class. * The class may need Jackson annotations for correct mapping. */ - fun dataAsObject(clazz: Class): T = mapper.convertValue(data, clazz) + override fun dataAsObject(clazz: Class): T = mapper.convertValue(data, clazz) /** * Extract values given a JsonPath. The return type will be whatever type you expect. * Although this looks type safe, it really isn't. Make sure values map to the expected type. * For JSON objects, a Map is returned. If you want to deserialize to a class, use #extractValueAsObject instead. */ - fun extractValue(path: String): T { + override fun extractValue(path: String): T { val dataPath = getDataPath(path) try { @@ -115,7 +120,7 @@ data class GraphQLResponse( /** * Extract values given a JsonPath and deserialize into the given class. */ - fun extractValueAsObject( + override fun extractValueAsObject( path: String, clazz: Class, ): T { @@ -133,7 +138,7 @@ data class GraphQLResponse( * Extract values given a JsonPath and deserialize into the given TypeRef. * Use this for Lists of a specific type. */ - fun extractValueAsObject( + override fun extractValueAsObject( path: String, typeRef: TypeRef, ): T { @@ -151,9 +156,9 @@ data class GraphQLResponse( * Extracts RequestDetails from the response if available. * Returns null otherwise. */ - fun getRequestDetails(): RequestDetails? = extractValueAsObject("gatewayRequestDetails", RequestDetails::class.java) + override fun getRequestDetails(): RequestDetails? = extractValueAsObject("gatewayRequestDetails", RequestDetails::class.java) - fun hasErrors(): Boolean = errors.isNotEmpty() + override fun hasErrors(): Boolean = errors.isNotEmpty() companion object { private val logger: Logger = LoggerFactory.getLogger(GraphQLResponse::class.java) @@ -168,12 +173,11 @@ data class GraphQLResponse( enable(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE) } - fun getDataPath(path: String): String = - if (path == "data" || path.startsWith("data.")) { - path - } else { - "data.$path" - } + @Deprecated( + "Use DgsGraphQLResponse.getDataPath instead", + ReplaceWith("DgsGraphQLResponse.getDataPath(path)", "com.netflix.graphql.dgs.client.DgsGraphQLResponse"), + ) + fun getDataPath(path: String): String = DgsGraphQLResponse.getDataPath(path) } } diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphqlSSESubscriptionGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphqlSSESubscriptionGraphQLClient.kt index a3bc0a80e..566c02480 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphqlSSESubscriptionGraphQLClient.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/GraphqlSSESubscriptionGraphQLClient.kt @@ -30,6 +30,14 @@ import reactor.core.scheduler.Schedulers * This client can be used for servers which are following the graphql-sse specification, which can be found here: * https://github.com/graphql/graphql-over-http/blob/d51ae80d62b5fd8802a3383793f01bdf306e8290/rfcs/GraphQLOverSSE.md */ +@Deprecated( + "Tied to Jackson 2. Migrate to DgsGraphqlSSESubscriptionGraphQLClient, which accepts any " + + "DgsJsonMapper (defaulting to Jackson 3). This class will be removed in a future release.", + ReplaceWith( + "DgsGraphqlSSESubscriptionGraphQLClient", + "com.netflix.graphql.dgs.client.DgsGraphqlSSESubscriptionGraphQLClient", + ), +) class GraphqlSSESubscriptionGraphQLClient( private val url: String, private val webClient: WebClient, diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/Jackson2DgsJsonMapperAdapter.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/Jackson2DgsJsonMapperAdapter.kt new file mode 100644 index 000000000..db3f69aac --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/Jackson2DgsJsonMapperAdapter.kt @@ -0,0 +1,121 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.client + +import com.fasterxml.jackson.core.JsonGenerator +import com.fasterxml.jackson.core.JsonParser +import com.fasterxml.jackson.databind.DeserializationContext +import com.fasterxml.jackson.databind.DeserializationFeature +import com.fasterxml.jackson.databind.JsonDeserializer +import com.fasterxml.jackson.databind.JsonNode +import com.fasterxml.jackson.databind.JsonSerializer +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.databind.SerializerProvider +import com.fasterxml.jackson.databind.module.SimpleModule +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule +import com.fasterxml.jackson.module.kotlin.KotlinFeature +import com.fasterxml.jackson.module.kotlin.kotlinModule +import com.fasterxml.jackson.module.paramnames.ParameterNamesModule +import com.jayway.jsonpath.Configuration +import com.jayway.jsonpath.Option +import com.jayway.jsonpath.spi.json.JacksonJsonProvider +import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider +import com.netflix.graphql.dgs.json.DgsJsonMapper +import graphql.GraphQLContext +import graphql.schema.Coercing +import java.util.Locale + +/** + * Adapts a Jackson 2 [ObjectMapper] to [DgsJsonMapper]. Requires `com.fasterxml.jackson.databind` + * on the runtime classpath; will fail to load with [NoClassDefFoundError] on a Jackson-3-only + * classpath. + */ +class Jackson2DgsJsonMapperAdapter( + val objectMapper: ObjectMapper, +) : DgsJsonMapper { + override fun writeValueAsString(value: Any): String = objectMapper.writeValueAsString(value) + + override fun readValue( + content: String, + clazz: Class, + ): T = objectMapper.readValue(content, clazz) + + override fun convertValue( + fromValue: Any, + toClass: Class, + ): T = objectMapper.convertValue(fromValue, toClass) + + override fun jsonPathConfiguration(): Configuration = + Configuration + .builder() + .jsonProvider(JacksonJsonProvider(objectMapper)) + .mappingProvider(JacksonMappingProvider(objectMapper)) + .build() + .addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL) + + companion object { + @JvmStatic + @JvmOverloads + fun fromOptions(options: DgsGraphQLRequestOptions? = null): Jackson2DgsJsonMapperAdapter = + Jackson2DgsJsonMapperAdapter(buildObjectMapper(options)) + + @JvmStatic + fun default(): Jackson2DgsJsonMapperAdapter = fromOptions(null) + + private fun buildObjectMapper(options: DgsGraphQLRequestOptions?): ObjectMapper { + val mapper = + ObjectMapper() + .registerModule(kotlinModule { enable(KotlinFeature.NullIsSameAsDefault) }) + .registerModule(JavaTimeModule()) + .registerModule(ParameterNamesModule()) + .registerModule(Jdk8Module()) + .enable(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + + options?.scalars?.forEach { (clazz, coercing) -> + val module = SimpleModule() + @Suppress("UNCHECKED_CAST") + module.addSerializer( + clazz as Class, + Jackson2CustomScalarSerializer(coercing, options.graphQLContext), + ) + module.addDeserializer(clazz, Jackson2CustomScalarDeserializer(coercing, options.graphQLContext)) + mapper.registerModule(module) + } + return mapper + } + } +} + +internal class Jackson2CustomScalarSerializer( + private val coercing: Coercing<*, *>, + private val graphQLContext: GraphQLContext, +) : JsonSerializer() { + override fun serialize( + value: T, + gen: JsonGenerator, + serializers: SerializerProvider, + ) { + val serializedValue = coercing.serialize(value as Any, graphQLContext, Locale.getDefault()) + gen.writeString(serializedValue.toString()) + } +} + +internal class Jackson2CustomScalarDeserializer( + private val coercing: Coercing<*, *>, + private val graphQLContext: GraphQLContext, +) : JsonDeserializer() { + @Suppress("UNCHECKED_CAST") + override fun deserialize( + p: JsonParser, + ctxt: DeserializationContext, + ): T { + val value = p.readValueAsTree() + return coercing.parseValue(value.asText(), graphQLContext, Locale.getDefault()) as T + } +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/Jackson3DgsJsonMapperAdapter.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/Jackson3DgsJsonMapperAdapter.kt new file mode 100644 index 000000000..2f535b08b --- /dev/null +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/Jackson3DgsJsonMapperAdapter.kt @@ -0,0 +1,116 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.client + +import com.jayway.jsonpath.Configuration +import com.jayway.jsonpath.Option +import com.jayway.jsonpath.spi.json.Jackson3JsonProvider +import com.jayway.jsonpath.spi.mapper.Jackson3MappingProvider +import com.netflix.graphql.dgs.json.DgsJsonMapper +import graphql.GraphQLContext +import graphql.schema.Coercing +import tools.jackson.core.JsonGenerator +import tools.jackson.core.JsonParser +import tools.jackson.databind.DeserializationContext +import tools.jackson.databind.DeserializationFeature +import tools.jackson.databind.JsonNode +import tools.jackson.databind.SerializationContext +import tools.jackson.databind.ValueDeserializer +import tools.jackson.databind.ValueSerializer +import tools.jackson.databind.cfg.EnumFeature +import tools.jackson.databind.json.JsonMapper +import tools.jackson.databind.module.SimpleModule +import tools.jackson.module.kotlin.KotlinFeature +import tools.jackson.module.kotlin.KotlinModule +import java.util.Locale + +/** + * Adapts a Jackson 3 [JsonMapper] to the Jackson-agnostic [DgsJsonMapper] contract. + */ +class Jackson3DgsJsonMapperAdapter( + val jsonMapper: JsonMapper, +) : DgsJsonMapper { + override fun writeValueAsString(value: Any): String = jsonMapper.writeValueAsString(value) + + override fun readValue( + content: String, + clazz: Class, + ): T = jsonMapper.readValue(content, clazz) + + override fun convertValue( + fromValue: Any, + toClass: Class, + ): T = jsonMapper.convertValue(fromValue, toClass) + + override fun jsonPathConfiguration(): Configuration = + Configuration + .builder() + .jsonProvider(Jackson3JsonProvider(jsonMapper)) + .mappingProvider(Jackson3MappingProvider(jsonMapper)) + .build() + .addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL) + + companion object { + @JvmStatic + @JvmOverloads + fun fromOptions(options: DgsGraphQLRequestOptions? = null): Jackson3DgsJsonMapperAdapter = + Jackson3DgsJsonMapperAdapter(buildJsonMapper(options)) + + @JvmStatic + fun default(): Jackson3DgsJsonMapperAdapter = fromOptions(null) + + private fun buildJsonMapper(options: DgsGraphQLRequestOptions?): JsonMapper { + val builder = + JsonMapper + .builder() + .addModule(KotlinModule.Builder().enable(KotlinFeature.NullIsSameAsDefault).build()) + .enable(EnumFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES) + + options?.scalars?.forEach { (clazz, coercing) -> + val module = SimpleModule() + @Suppress("UNCHECKED_CAST") + module.addSerializer( + clazz as Class, + Jackson3CustomScalarSerializer(coercing, options.graphQLContext), + ) + module.addDeserializer(clazz, Jackson3CustomScalarDeserializer(coercing, options.graphQLContext)) + builder.addModule(module) + } + return builder.build() + } + } +} + +internal class Jackson3CustomScalarSerializer( + private val coercing: Coercing<*, *>, + private val graphQLContext: GraphQLContext, +) : ValueSerializer() { + override fun serialize( + value: T & Any, + gen: JsonGenerator, + serializers: SerializationContext, + ) { + val serializedValue = coercing.serialize(value as Any, graphQLContext, Locale.getDefault()) + gen.writeString(serializedValue.toString()) + } +} + +internal class Jackson3CustomScalarDeserializer( + private val coercing: Coercing<*, *>, + private val graphQLContext: GraphQLContext, +) : ValueDeserializer() { + @Suppress("UNCHECKED_CAST") + override fun deserialize( + p: JsonParser, + ctxt: DeserializationContext, + ): T { + val value = p.readValueAsTree() + return coercing.parseValue(value.asText(), graphQLContext, Locale.getDefault()) as T + } +} diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/MonoGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/MonoGraphQLClient.kt index e3b639b83..731198b26 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/MonoGraphQLClient.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/MonoGraphQLClient.kt @@ -26,14 +26,19 @@ import java.util.function.Consumer /** * GraphQL client interface for reactive clients. */ -interface MonoGraphQLClient { +@Deprecated( + "Tied to Jackson 2 through GraphQLResponse. Program against DgsMonoGraphQLClient instead. " + + "This interface will be removed in a future release.", + ReplaceWith("DgsMonoGraphQLClient", "com.netflix.graphql.dgs.client.DgsMonoGraphQLClient"), +) +interface MonoGraphQLClient : DgsMonoGraphQLClient { /** * A reactive call to execute a query and parse its result. * Don't forget to subscribe() to actually send the query! * @param query The query string. Note that you can use [code generation](https://netflix.github.io/dgs/generating-code-from-schema/#generating-query-apis-for-external-services) for a type safe query! * @return A [Mono] of [GraphQLResponse] parses the response and gives easy access to data and errors. */ - fun reactiveExecuteQuery( + override fun reactiveExecuteQuery( @Language("graphql") query: String, ): Mono @@ -44,7 +49,7 @@ interface MonoGraphQLClient { * @param variables A map of input variables * @return A [Mono] of [GraphQLResponse] parses the response and gives easy access to data and errors. */ - fun reactiveExecuteQuery( + override fun reactiveExecuteQuery( @Language("graphql") query: String, variables: Map, ): Mono @@ -57,7 +62,7 @@ interface MonoGraphQLClient { * @param operationName Name of the operation * @return A [Mono] of [GraphQLResponse] parses the response and gives easy access to data and errors. */ - fun reactiveExecuteQuery( + override fun reactiveExecuteQuery( @Language("graphql") query: String, variables: Map, operationName: String?, diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/ReactiveGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/ReactiveGraphQLClient.kt index 84029b9aa..357dc93e3 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/ReactiveGraphQLClient.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/ReactiveGraphQLClient.kt @@ -22,13 +22,18 @@ import reactor.core.publisher.Flux /** * GraphQL client interface for reactive clients that support multiple results such as subscriptions. */ -interface ReactiveGraphQLClient { +@Deprecated( + "Tied to Jackson 2 through GraphQLResponse. Program against DgsReactiveGraphQLClient instead. " + + "This interface will be removed in a future release.", + ReplaceWith("DgsReactiveGraphQLClient", "com.netflix.graphql.dgs.client.DgsReactiveGraphQLClient"), +) +interface ReactiveGraphQLClient : DgsReactiveGraphQLClient { /** * @param query The query string. Note that you can use [code generation](https://netflix.github.io/dgs/generating-code-from-schema/#generating-query-apis-for-external-services) for a type safe query! * @param variables A map of input variables * @return A [Flux] of [GraphQLResponse]. [GraphQLResponse] parses the response and gives easy access to data and errors. */ - fun reactiveExecuteQuery( + override fun reactiveExecuteQuery( @Language("graphql") query: String, variables: Map, ): Flux @@ -39,7 +44,7 @@ interface ReactiveGraphQLClient { * @param operationName Operation name * @return A [Flux] of [GraphQLResponse]. [GraphQLResponse] parses the response and gives easy access to data and errors. */ - fun reactiveExecuteQuery( + override fun reactiveExecuteQuery( @Language("graphql") query: String, variables: Map, operationName: String?, diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/RestClientGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/RestClientGraphQLClient.kt index d09e70e29..e508735e1 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/RestClientGraphQLClient.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/RestClientGraphQLClient.kt @@ -39,6 +39,10 @@ import java.util.function.Consumer * } * ``` */ +@Deprecated( + "Tied to Jackson 2. Migrate to DgsRestClientGraphQLClient, which accepts any DgsJsonMapper (defaulting to Jackson 3). This class will be removed in a future release.", + ReplaceWith("DgsRestClientGraphQLClient", "com.netflix.graphql.dgs.client.DgsRestClientGraphQLClient"), +) class RestClientGraphQLClient( private val restClient: RestClient, private val headersConsumer: Consumer, diff --git a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/WebClientGraphQLClient.kt b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/WebClientGraphQLClient.kt index 0461a0200..5d3ec50e9 100644 --- a/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/WebClientGraphQLClient.kt +++ b/graphql-dgs-client/src/main/kotlin/com/netflix/graphql/dgs/client/WebClientGraphQLClient.kt @@ -40,6 +40,10 @@ import java.util.function.Consumer * message.subscribe(); * ``` */ +@Deprecated( + "Tied to Jackson 2. Migrate to DgsWebClientGraphQLClient, which accepts any DgsJsonMapper (defaulting to Jackson 3). This class will be removed in a future release.", + ReplaceWith("DgsWebClientGraphQLClient", "com.netflix.graphql.dgs.client.DgsWebClientGraphQLClient"), +) class WebClientGraphQLClient( private val webclient: WebClient, private val headersConsumer: Consumer, diff --git a/graphql-dgs-example-jackson-both/build.gradle.kts b/graphql-dgs-example-jackson-both/build.gradle.kts new file mode 100644 index 000000000..ba8c34d40 --- /dev/null +++ b/graphql-dgs-example-jackson-both/build.gradle.kts @@ -0,0 +1,19 @@ +/* + * Mixed Jackson example — proves DGS works when both Jackson 2 and Jackson 3 + * are on the classpath simultaneously. This is the expected state for Netflix + * internal apps that pull in graphql-dgs-jackson2 alongside the default starter. + * + * Jackson 2 wins via DgsJackson2AutoConfiguration (runs before Jackson 3 autoconfig). + * Both Jackson 2 and Jackson 3 client classes are usable. + */ + +dependencies { + implementation(project(":graphql-dgs-spring-graphql-starter")) + implementation(project(":graphql-dgs-jackson2")) + implementation("org.springframework.boot:spring-boot-starter-web") + + testImplementation("org.springframework.boot:spring-boot-starter-test") + testImplementation("org.springframework.boot:spring-boot-webmvc-test") + testImplementation("org.springframework.boot:spring-boot-starter-webflux") + testImplementation(project(":graphql-dgs-client")) +} diff --git a/graphql-dgs-example-jackson-both/dependencies.lock b/graphql-dgs-example-jackson-both/dependencies.lock new file mode 100644 index 000000000..533237223 --- /dev/null +++ b/graphql-dgs-example-jackson-both/dependencies.lock @@ -0,0 +1,1982 @@ +{ + "apiDependenciesMetadata": { + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + } + }, + "compileClasspath": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "implementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "jmh": { + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + } + }, + "jmhApiDependenciesMetadata": { + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + } + }, + "jmhCompileClasspath": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "jmhImplementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "jmhRuntimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.2.0" + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor.kotlin:reactor-kotlin-extensions": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "locked": "1.3.0" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit.platform:junit-platform-launcher": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + }, + "org.springframework.graphql:spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "2.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-websocket": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "kotlinBouncyCastleConfiguration": { + "org.bouncycastle:bcpg-jdk18on": { + "locked": "1.80" + }, + "org.bouncycastle:bcpkix-jdk18on": { + "locked": "1.80" + } + }, + "kotlinCompilerClasspath": { + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathJmh": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathMain": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathTest": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinInternalAbiValidation": { + "org.jetbrains.kotlin:abi-tools": { + "locked": "2.2.20" + } + }, + "kotlinKlibCommonizerClasspath": { + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { + "locked": "2.2.20" + } + }, + "ktlint": { + "com.pinterest.ktlint:ktlint-cli": { + "locked": "1.5.0" + }, + "io.github.detekt.sarif4k:sarif4k": { + "locked": "0.5.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + } + }, + "ktlintBaselineReporter": { + "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "ktlintReporter": { + "io.github.detekt.sarif4k:sarif4k": { + "locked": "0.5.0" + }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-ruleset-standard": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "runtimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.2.0" + }, + "io.projectreactor.kotlin:reactor-kotlin-extensions": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "locked": "1.3.0" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.graphql:spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "2.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-websocket": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "swiftExportClasspathResolvable": { + "org.jetbrains.kotlin:swift-export-embeddable": { + "locked": "2.2.20" + } + }, + "testCompileClasspath": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "testImplementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "testRuntimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.2.0" + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor.kotlin:reactor-kotlin-extensions": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "locked": "1.3.0" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit.platform:junit-platform-launcher": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + }, + "org.springframework.graphql:spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "2.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-websocket": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + } +} \ No newline at end of file diff --git a/graphql-dgs-example-jackson-both/src/main/kotlin/com/netflix/graphql/dgs/example/jacksonboth/JacksonBothApp.kt b/graphql-dgs-example-jackson-both/src/main/kotlin/com/netflix/graphql/dgs/example/jacksonboth/JacksonBothApp.kt new file mode 100644 index 000000000..4a2f339d3 --- /dev/null +++ b/graphql-dgs-example-jackson-both/src/main/kotlin/com/netflix/graphql/dgs/example/jacksonboth/JacksonBothApp.kt @@ -0,0 +1,22 @@ +package com.netflix.graphql.dgs.example.jacksonboth + +import com.netflix.graphql.dgs.DgsComponent +import com.netflix.graphql.dgs.DgsQuery +import com.netflix.graphql.dgs.InputArgument +import org.springframework.boot.autoconfigure.SpringBootApplication +import org.springframework.boot.runApplication + +@SpringBootApplication +open class JacksonBothApp + +fun main(args: Array) { + runApplication(*args) +} + +@DgsComponent +class HelloDataFetcher { + @DgsQuery + fun hello( + @InputArgument name: String?, + ): String = "hello, ${name ?: "stranger"}!" +} diff --git a/graphql-dgs-example-jackson-both/src/main/resources/schema/schema.graphqls b/graphql-dgs-example-jackson-both/src/main/resources/schema/schema.graphqls new file mode 100644 index 000000000..49ac23376 --- /dev/null +++ b/graphql-dgs-example-jackson-both/src/main/resources/schema/schema.graphqls @@ -0,0 +1,3 @@ +type Query { + hello(name: String): String +} diff --git a/graphql-dgs-example-jackson-both/src/test/kotlin/com/netflix/graphql/dgs/example/jacksonboth/JacksonBothTest.kt b/graphql-dgs-example-jackson-both/src/test/kotlin/com/netflix/graphql/dgs/example/jacksonboth/JacksonBothTest.kt new file mode 100644 index 000000000..6542800ed --- /dev/null +++ b/graphql-dgs-example-jackson-both/src/test/kotlin/com/netflix/graphql/dgs/example/jacksonboth/JacksonBothTest.kt @@ -0,0 +1,80 @@ +package com.netflix.graphql.dgs.example.jacksonboth + +import com.netflix.graphql.dgs.client.DgsGraphQLResponse +import com.netflix.graphql.dgs.client.DgsRestClientGraphQLClient +import com.netflix.graphql.dgs.client.RestClientGraphQLClient +import com.netflix.graphql.dgs.json.DgsJsonMapper +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.boot.test.web.server.LocalServerPort +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc +import org.springframework.http.MediaType +import org.springframework.test.web.servlet.MockMvc +import org.springframework.test.web.servlet.post +import org.springframework.web.client.RestClient + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@AutoConfigureMockMvc +class JacksonBothTest { + @Autowired + lateinit var mockMvc: MockMvc + + @Autowired + lateinit var dgsJsonMapper: DgsJsonMapper + + @LocalServerPort + var port: Int = 0 + + @Test + fun `both Jackson 2 and Jackson 3 are on the classpath`() { + val jackson2 = Class.forName("com.fasterxml.jackson.databind.ObjectMapper") + val jackson3 = Class.forName("tools.jackson.databind.json.JsonMapper") + assertThat(jackson2).isNotNull() + assertThat(jackson3).isNotNull() + } + + @Test + fun `Jackson 2 wins autoconfiguration when jackson2 module is present`() { + assertThat(dgsJsonMapper.javaClass.simpleName).isEqualTo("Jackson2DgsJsonMapper") + } + + @Test + fun `GraphQL endpoint works`() { + mockMvc + .post("/graphql") { + content = """{"query":"{ hello(name: \"Both\") }"}""" + contentType = MediaType.APPLICATION_JSON + accept = MediaType.APPLICATION_JSON + }.andExpect { + status { isOk() } + jsonPath("$.data.hello") { value("hello, Both!") } + } + } + + @Suppress("DEPRECATION") + @Test + fun `Jackson 2 client classes work`() { + val restClient = RestClient.builder().baseUrl("http://localhost:$port/graphql").build() + val client = RestClientGraphQLClient(restClient) + + val response = client.executeQuery("{ hello(name: \"Jackson2Client\") }") + + assertThat(response).isInstanceOf(DgsGraphQLResponse::class.java) + assertThat(response.hasErrors()).isFalse() + assertThat(response.extractValue("hello")).isEqualTo("hello, Jackson2Client!") + } + + @Test + fun `Jackson 3 client classes work`() { + val restClient = RestClient.builder().baseUrl("http://localhost:$port/graphql").build() + val client = DgsRestClientGraphQLClient(restClient) + + val response = client.executeQuery("{ hello(name: \"Jackson3Client\") }") + + assertThat(response).isInstanceOf(DgsGraphQLResponse::class.java) + assertThat(response.hasErrors()).isFalse() + assertThat(response.extractValue("hello")).isEqualTo("hello, Jackson3Client!") + } +} diff --git a/graphql-dgs-example-jackson2-only/build.gradle.kts b/graphql-dgs-example-jackson2-only/build.gradle.kts new file mode 100644 index 000000000..1e9f6423b --- /dev/null +++ b/graphql-dgs-example-jackson2-only/build.gradle.kts @@ -0,0 +1,35 @@ +/* + * Jackson 2 only example — proves DGS works with only Jackson 2 on the classpath. + * Jackson 3 is excluded from ALL configurations (compile + runtime), following the Spring Boot 4 pattern: + * https://github.com/spring-projects/spring-boot/blob/v4.0.5/smoke-test/spring-boot-smoke-test-jackson2-only/build.gradle + */ + +dependencies { + implementation(project(":graphql-dgs-spring-graphql-starter")) + implementation(project(":graphql-dgs-jackson2")) + implementation("org.springframework.boot:spring-boot-jackson2") + implementation("org.springframework.boot:spring-boot-starter-web") { + exclude(module = "spring-boot-starter-jackson") + } + + testImplementation("org.springframework.boot:spring-boot-starter-test") + testImplementation("org.springframework.boot:spring-boot-webmvc-test") + testImplementation("org.springframework.boot:spring-boot-starter-webflux") + testImplementation(project(":graphql-dgs-client")) +} + +// Exclude Jackson 3 from all standard configurations +afterEvaluate { + val jackson3Excludes = + listOf( + mapOf("group" to "tools.jackson.core"), + mapOf("group" to "tools.jackson.module"), + mapOf("group" to "tools.jackson.datatype"), + mapOf("module" to "spring-boot-starter-jackson"), + ) + configurations.filter { it.isCanBeResolved }.forEach { config -> + jackson3Excludes.forEach { exclude -> + config.exclude(exclude) + } + } +} diff --git a/graphql-dgs-example-jackson2-only/dependencies.lock b/graphql-dgs-example-jackson2-only/dependencies.lock new file mode 100644 index 000000000..5a07b5ac6 --- /dev/null +++ b/graphql-dgs-example-jackson2-only/dependencies.lock @@ -0,0 +1,1955 @@ +{ + "apiDependenciesMetadata": { + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + } + }, + "compileClasspath": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-jackson2": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + } + }, + "implementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-jackson2": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + } + }, + "jmh": { + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + } + }, + "jmhApiDependenciesMetadata": { + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + } + }, + "jmhCompileClasspath": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-jackson2": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + } + }, + "jmhImplementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-jackson2": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + } + }, + "jmhRuntimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.2.0" + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor.kotlin:reactor-kotlin-extensions": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "locked": "1.3.0" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit.platform:junit-platform-launcher": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-jackson2": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + }, + "org.springframework.graphql:spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "2.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-websocket": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "7.0.1" + } + }, + "kotlinBouncyCastleConfiguration": { + "org.bouncycastle:bcpg-jdk18on": { + "locked": "1.80" + }, + "org.bouncycastle:bcpkix-jdk18on": { + "locked": "1.80" + } + }, + "kotlinCompilerClasspath": { + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathJmh": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathMain": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathTest": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinInternalAbiValidation": { + "org.jetbrains.kotlin:abi-tools": { + "locked": "2.2.20" + } + }, + "kotlinKlibCommonizerClasspath": { + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { + "locked": "2.2.20" + } + }, + "ktlint": { + "com.pinterest.ktlint:ktlint-cli": { + "locked": "1.5.0" + }, + "io.github.detekt.sarif4k:sarif4k": { + "locked": "0.5.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + } + }, + "ktlintBaselineReporter": { + "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "ktlintReporter": { + "io.github.detekt.sarif4k:sarif4k": { + "locked": "0.5.0" + }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-ruleset-standard": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "runtimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.2.0" + }, + "io.projectreactor.kotlin:reactor-kotlin-extensions": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "locked": "1.3.0" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-jackson2": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.graphql:spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "2.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-websocket": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "7.0.1" + } + }, + "swiftExportClasspathResolvable": { + "org.jetbrains.kotlin:swift-export-embeddable": { + "locked": "2.2.20" + } + }, + "testCompileClasspath": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-jackson2": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + } + }, + "testImplementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-jackson2": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + } + }, + "testRuntimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-jackson2": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.2.0" + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor.kotlin:reactor-kotlin-extensions": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "locked": "1.3.0" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit.platform:junit-platform-launcher": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-jackson2", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-jackson2": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + }, + "org.springframework.graphql:spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "2.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-websocket": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "7.0.1" + } + } +} \ No newline at end of file diff --git a/graphql-dgs-example-jackson2-only/src/main/kotlin/com/netflix/graphql/dgs/example/jackson2/Jackson2OnlyApp.kt b/graphql-dgs-example-jackson2-only/src/main/kotlin/com/netflix/graphql/dgs/example/jackson2/Jackson2OnlyApp.kt new file mode 100644 index 000000000..1ae5d657a --- /dev/null +++ b/graphql-dgs-example-jackson2-only/src/main/kotlin/com/netflix/graphql/dgs/example/jackson2/Jackson2OnlyApp.kt @@ -0,0 +1,22 @@ +package com.netflix.graphql.dgs.example.jackson2 + +import com.netflix.graphql.dgs.DgsComponent +import com.netflix.graphql.dgs.DgsQuery +import com.netflix.graphql.dgs.InputArgument +import org.springframework.boot.autoconfigure.SpringBootApplication +import org.springframework.boot.runApplication + +@SpringBootApplication +open class Jackson2OnlyApp + +fun main(args: Array) { + runApplication(*args) +} + +@DgsComponent +class HelloDataFetcher { + @DgsQuery + fun hello( + @InputArgument name: String?, + ): String = "hello, ${name ?: "stranger"}!" +} diff --git a/graphql-dgs-example-jackson2-only/src/main/resources/schema/schema.graphqls b/graphql-dgs-example-jackson2-only/src/main/resources/schema/schema.graphqls new file mode 100644 index 000000000..49ac23376 --- /dev/null +++ b/graphql-dgs-example-jackson2-only/src/main/resources/schema/schema.graphqls @@ -0,0 +1,3 @@ +type Query { + hello(name: String): String +} diff --git a/graphql-dgs-example-jackson2-only/src/test/kotlin/com/netflix/graphql/dgs/example/jackson2/Jackson2OnlyTest.kt b/graphql-dgs-example-jackson2-only/src/test/kotlin/com/netflix/graphql/dgs/example/jackson2/Jackson2OnlyTest.kt new file mode 100644 index 000000000..f0930eb26 --- /dev/null +++ b/graphql-dgs-example-jackson2-only/src/test/kotlin/com/netflix/graphql/dgs/example/jackson2/Jackson2OnlyTest.kt @@ -0,0 +1,118 @@ +package com.netflix.graphql.dgs.example.jackson2 + +import com.netflix.graphql.dgs.client.CustomGraphQLClient +import com.netflix.graphql.dgs.client.DgsGraphQLResponse +import com.netflix.graphql.dgs.client.RestClientGraphQLClient +import com.netflix.graphql.dgs.client.WebClientGraphQLClient +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.boot.test.web.server.LocalServerPort +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc +import org.springframework.http.HttpHeaders +import org.springframework.http.MediaType +import org.springframework.test.web.servlet.MockMvc +import org.springframework.test.web.servlet.post +import org.springframework.web.client.RestClient +import org.springframework.web.reactive.function.client.WebClient + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@AutoConfigureMockMvc +class Jackson2OnlyTest { + @Autowired + lateinit var mockMvc: MockMvc + + @LocalServerPort + var port: Int = 0 + + @Test + fun `Jackson 3 is NOT on the classpath`() { + val result = + runCatching { + Class.forName("tools.jackson.databind.json.JsonMapper") + } + assertThat(result.isFailure) + .withFailMessage("Expected Jackson 3 JsonMapper to NOT be on classpath, but it was found") + .isTrue() + } + + @Test + fun `Jackson 2 IS on the classpath`() { + val clazz = Class.forName("com.fasterxml.jackson.databind.ObjectMapper") + assertThat(clazz).isNotNull() + } + + @Test + fun `GraphQL query works with Jackson 2 only`() { + mockMvc + .post("/graphql") { + content = """{"query":"{ hello(name: \"Jackson2\") }"}""" + contentType = MediaType.APPLICATION_JSON + accept = MediaType.APPLICATION_JSON + }.andExpect { + status { isOk() } + jsonPath("$.data.hello") { value("hello, Jackson2!") } + } + } + + @Suppress("DEPRECATION") + @Test + fun `RestClientGraphQLClient works with Jackson 2`() { + val restClient = RestClient.builder().baseUrl("http://localhost:$port/graphql").build() + val client = RestClientGraphQLClient(restClient) + + val response = client.executeQuery("{ hello(name: \"RestClient\") }") + + assertThat(response).isInstanceOf(DgsGraphQLResponse::class.java) + assertThat(response.hasErrors()).isFalse() + assertThat(response.extractValue("hello")).isEqualTo("hello, RestClient!") + } + + @Suppress("DEPRECATION") + @Test + fun `WebClientGraphQLClient works with Jackson 2`() { + val webClient = WebClient.create("http://localhost:$port/graphql") + val client = WebClientGraphQLClient(webClient) + + val response = client.reactiveExecuteQuery("{ hello(name: \"WebClient\") }").block()!! + + assertThat(response).isInstanceOf(DgsGraphQLResponse::class.java) + assertThat(response.hasErrors()).isFalse() + assertThat(response.extractValue("hello")).isEqualTo("hello, WebClient!") + } + + @Suppress("DEPRECATION") + @Test + fun `CustomGraphQLClient works with Jackson 2`() { + val client = + CustomGraphQLClient("http://localhost:$port/graphql") { url, headers, body -> + val restClient = RestClient.builder().baseUrl(url).build() + val response = + restClient + .post() + .headers { h -> + headers.forEach { (key, values) -> h.addAll(key, values) } + }.body(body) + .retrieve() + .toEntity(String::class.java) + com.netflix.graphql.dgs.client.HttpResponse( + response.statusCode.value(), + response.body, + response.headers.toMap(), + ) + } + + val response = client.executeQuery("{ hello(name: \"Custom\") }") + + assertThat(response).isInstanceOf(DgsGraphQLResponse::class.java) + assertThat(response.hasErrors()).isFalse() + assertThat(response.extractValue("hello")).isEqualTo("hello, Custom!") + } +} + +private fun HttpHeaders.toMap(): Map> { + val result = mutableMapOf>() + this.forEach { key, values -> result[key] = values } + return result +} diff --git a/graphql-dgs-example-jackson3-only/build.gradle.kts b/graphql-dgs-example-jackson3-only/build.gradle.kts new file mode 100644 index 000000000..20ec38d03 --- /dev/null +++ b/graphql-dgs-example-jackson3-only/build.gradle.kts @@ -0,0 +1,14 @@ +/* + * Jackson 3 only example — proves DGS works with only Jackson 3 on the classpath. + * No Jackson 2 excludes should be necessary — Jackson 2 is not a transitive dependency. + */ + +dependencies { + implementation(project(":graphql-dgs-spring-graphql-starter")) + implementation("org.springframework.boot:spring-boot-starter-web") + + testImplementation("org.springframework.boot:spring-boot-starter-test") + testImplementation("org.springframework.boot:spring-boot-webmvc-test") + testImplementation("org.springframework.boot:spring-boot-starter-webflux") + testImplementation(project(":graphql-dgs-client")) +} diff --git a/graphql-dgs-example-jackson3-only/dependencies.lock b/graphql-dgs-example-jackson3-only/dependencies.lock new file mode 100644 index 000000000..ebd30e029 --- /dev/null +++ b/graphql-dgs-example-jackson3-only/dependencies.lock @@ -0,0 +1,1838 @@ +{ + "apiDependenciesMetadata": { + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + } + }, + "compileClasspath": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "implementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "jmh": { + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + } + }, + "jmhApiDependenciesMetadata": { + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + } + }, + "jmhCompileClasspath": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "jmhImplementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "jmhRuntimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.2.0" + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor.kotlin:reactor-kotlin-extensions": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "locked": "1.3.0" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit.platform:junit-platform-launcher": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + }, + "org.springframework.graphql:spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "2.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-websocket": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "kotlinBouncyCastleConfiguration": { + "org.bouncycastle:bcpg-jdk18on": { + "locked": "1.80" + }, + "org.bouncycastle:bcpkix-jdk18on": { + "locked": "1.80" + } + }, + "kotlinCompilerClasspath": { + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathJmh": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathMain": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathTest": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinInternalAbiValidation": { + "org.jetbrains.kotlin:abi-tools": { + "locked": "2.2.20" + } + }, + "kotlinKlibCommonizerClasspath": { + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { + "locked": "2.2.20" + } + }, + "ktlint": { + "com.pinterest.ktlint:ktlint-cli": { + "locked": "1.5.0" + }, + "io.github.detekt.sarif4k:sarif4k": { + "locked": "0.5.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + } + }, + "ktlintBaselineReporter": { + "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "ktlintReporter": { + "io.github.detekt.sarif4k:sarif4k": { + "locked": "0.5.0" + }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-ruleset-standard": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "runtimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.2.0" + }, + "io.projectreactor.kotlin:reactor-kotlin-extensions": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "locked": "1.3.0" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.graphql:spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "2.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-websocket": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "swiftExportClasspathResolvable": { + "org.jetbrains.kotlin:swift-export-embeddable": { + "locked": "2.2.20" + } + }, + "testCompileClasspath": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "testImplementationDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + }, + "testRuntimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.core:jackson-annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "2.20" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:dgs-starter": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-client": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-reactive": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-subscription-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.2.0" + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "io.projectreactor.kotlin:reactor-kotlin-extensions": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-reactive" + ], + "locked": "1.3.0" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit.platform:junit-platform-launcher": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", + "com.netflix.graphql.dgs:graphql-dgs-subscription-types", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-web": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-webflux": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-webmvc-test": { + "locked": "4.0.0" + }, + "org.springframework.graphql:spring-graphql": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "2.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-websocket": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-subscription-types" + ], + "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" + } + } +} \ No newline at end of file diff --git a/graphql-dgs-example-jackson3-only/src/main/kotlin/com/netflix/graphql/dgs/example/jackson3/Jackson3OnlyApp.kt b/graphql-dgs-example-jackson3-only/src/main/kotlin/com/netflix/graphql/dgs/example/jackson3/Jackson3OnlyApp.kt new file mode 100644 index 000000000..e4ebf4253 --- /dev/null +++ b/graphql-dgs-example-jackson3-only/src/main/kotlin/com/netflix/graphql/dgs/example/jackson3/Jackson3OnlyApp.kt @@ -0,0 +1,22 @@ +package com.netflix.graphql.dgs.example.jackson3 + +import com.netflix.graphql.dgs.DgsComponent +import com.netflix.graphql.dgs.DgsQuery +import com.netflix.graphql.dgs.InputArgument +import org.springframework.boot.autoconfigure.SpringBootApplication +import org.springframework.boot.runApplication + +@SpringBootApplication +open class Jackson3OnlyApp + +fun main(args: Array) { + runApplication(*args) +} + +@DgsComponent +class HelloDataFetcher { + @DgsQuery + fun hello( + @InputArgument name: String?, + ): String = "hello, ${name ?: "stranger"}!" +} diff --git a/graphql-dgs-example-jackson3-only/src/main/resources/schema/schema.graphqls b/graphql-dgs-example-jackson3-only/src/main/resources/schema/schema.graphqls new file mode 100644 index 000000000..49ac23376 --- /dev/null +++ b/graphql-dgs-example-jackson3-only/src/main/resources/schema/schema.graphqls @@ -0,0 +1,3 @@ +type Query { + hello(name: String): String +} diff --git a/graphql-dgs-example-jackson3-only/src/test/kotlin/com/netflix/graphql/dgs/example/jackson3/Jackson3OnlyTest.kt b/graphql-dgs-example-jackson3-only/src/test/kotlin/com/netflix/graphql/dgs/example/jackson3/Jackson3OnlyTest.kt new file mode 100644 index 000000000..307ef3e1e --- /dev/null +++ b/graphql-dgs-example-jackson3-only/src/test/kotlin/com/netflix/graphql/dgs/example/jackson3/Jackson3OnlyTest.kt @@ -0,0 +1,115 @@ +package com.netflix.graphql.dgs.example.jackson3 + +import com.netflix.graphql.dgs.client.DgsCustomGraphQLClient +import com.netflix.graphql.dgs.client.DgsGraphQLResponse +import com.netflix.graphql.dgs.client.DgsRestClientGraphQLClient +import com.netflix.graphql.dgs.client.DgsWebClientGraphQLClient +import org.assertj.core.api.Assertions.assertThat +import org.junit.jupiter.api.Test +import org.springframework.beans.factory.annotation.Autowired +import org.springframework.boot.test.context.SpringBootTest +import org.springframework.boot.test.web.server.LocalServerPort +import org.springframework.boot.webmvc.test.autoconfigure.AutoConfigureMockMvc +import org.springframework.http.HttpHeaders +import org.springframework.http.MediaType +import org.springframework.test.web.servlet.MockMvc +import org.springframework.test.web.servlet.post +import org.springframework.web.client.RestClient +import org.springframework.web.reactive.function.client.WebClient + +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) +@AutoConfigureMockMvc +class Jackson3OnlyTest { + @Autowired + lateinit var mockMvc: MockMvc + + @LocalServerPort + var port: Int = 0 + + @Test + fun `Jackson 2 runtime is NOT on the classpath`() { + val result = + runCatching { + Class.forName("com.fasterxml.jackson.databind.ObjectMapper") + } + assertThat(result.isFailure) + .withFailMessage("Expected Jackson 2 ObjectMapper to NOT be on classpath, but it was found") + .isTrue() + } + + @Test + fun `Jackson 3 IS on the classpath`() { + val clazz = Class.forName("tools.jackson.databind.json.JsonMapper") + assertThat(clazz).isNotNull() + } + + @Test + fun `GraphQL query works with Jackson 3 only`() { + mockMvc + .post("/graphql") { + content = """{"query":"{ hello(name: \"Jackson3\") }"}""" + contentType = MediaType.APPLICATION_JSON + accept = MediaType.APPLICATION_JSON + }.andExpect { + status { isOk() } + jsonPath("$.data.hello") { value("hello, Jackson3!") } + } + } + + @Test + fun `DgsRestClientGraphQLClient works`() { + val restClient = RestClient.builder().baseUrl("http://localhost:$port/graphql").build() + val client = DgsRestClientGraphQLClient(restClient) + + val response = client.executeQuery("{ hello(name: \"RestClient\") }") + + assertThat(response).isInstanceOf(DgsGraphQLResponse::class.java) + assertThat(response.hasErrors()).isFalse() + assertThat(response.extractValue("hello")).isEqualTo("hello, RestClient!") + } + + @Test + fun `DgsWebClientGraphQLClient works`() { + val webClient = WebClient.create("http://localhost:$port/graphql") + val client = DgsWebClientGraphQLClient(webClient) + + val response = client.reactiveExecuteQuery("{ hello(name: \"WebClient\") }").block()!! + + assertThat(response).isInstanceOf(DgsGraphQLResponse::class.java) + assertThat(response.hasErrors()).isFalse() + assertThat(response.extractValue("hello")).isEqualTo("hello, WebClient!") + } + + @Test + fun `DgsCustomGraphQLClient works`() { + val client = + DgsCustomGraphQLClient("http://localhost:$port/graphql") { url, headers, body -> + val restClient = RestClient.builder().baseUrl(url).build() + val response = + restClient + .post() + .headers { h -> + headers.forEach { (key, values) -> h.addAll(key, values) } + }.body(body) + .retrieve() + .toEntity(String::class.java) + com.netflix.graphql.dgs.client.HttpResponse( + response.statusCode.value(), + response.body, + response.headers.toMap(), + ) + } + + val response = client.executeQuery("{ hello(name: \"Custom\") }") + + assertThat(response).isInstanceOf(DgsGraphQLResponse::class.java) + assertThat(response.hasErrors()).isFalse() + assertThat(response.extractValue("hello")).isEqualTo("hello, Custom!") + } +} + +private fun HttpHeaders.toMap(): Map> { + val result = mutableMapOf>() + this.forEach { key, values -> result[key] = values } + return result +} diff --git a/graphql-dgs-example-shared/build.gradle b/graphql-dgs-example-shared/build.gradle index 1894d7da4..110d676a7 100644 --- a/graphql-dgs-example-shared/build.gradle +++ b/graphql-dgs-example-shared/build.gradle @@ -22,6 +22,10 @@ dependencies { implementation("org.springframework:spring-web") implementation("org.springframework:spring-webflux") implementation("com.fasterxml.jackson.core:jackson-databind") + implementation("com.fasterxml.jackson.module:jackson-module-kotlin") + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") + implementation("com.fasterxml.jackson.module:jackson-module-parameter-names") + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jdk8") testImplementation(project(":graphql-dgs-spring-graphql-starter-test")) testImplementation(project(":graphql-dgs-spring-graphql-starter")) testImplementation ('io.projectreactor:reactor-test') diff --git a/graphql-dgs-example-shared/dependencies.lock b/graphql-dgs-example-shared/dependencies.lock index e7830fbad..a7e761930 100644 --- a/graphql-dgs-example-shared/dependencies.lock +++ b/graphql-dgs-example-shared/dependencies.lock @@ -11,6 +11,18 @@ "com.fasterxml.jackson.core:jackson-databind": { "locked": "2.20.1" }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -32,9 +44,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -46,6 +59,12 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -53,6 +72,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -71,13 +91,14 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -96,6 +117,18 @@ "com.fasterxml.jackson.core:jackson-databind": { "locked": "2.20.1" }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -117,9 +150,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -131,6 +165,12 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -138,6 +178,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -156,13 +197,14 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -200,6 +242,18 @@ "com.fasterxml.jackson.core:jackson-databind": { "locked": "2.20.1" }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -221,9 +275,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -235,6 +290,12 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -242,6 +303,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -260,13 +322,14 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -294,6 +357,18 @@ "com.fasterxml.jackson.core:jackson-databind": { "locked": "2.20.1" }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -315,9 +390,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -329,6 +405,12 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -336,6 +418,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -354,13 +437,14 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -393,7 +477,6 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -402,32 +485,15 @@ "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], "locked": "2.20.1" }, "com.graphql-java:graphql-java": { @@ -455,9 +521,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -489,6 +556,13 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -499,6 +573,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -556,7 +631,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -589,6 +664,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -603,7 +679,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -620,6 +697,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -629,7 +707,7 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -656,6 +734,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -745,6 +824,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -800,21 +885,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -827,16 +1008,16 @@ "com.fasterxml.jackson.core:jackson-databind": { "locked": "2.20.1" }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { "locked": "2.20.1" }, "com.graphql-java:graphql-java": { @@ -861,9 +1042,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -875,6 +1057,12 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -882,6 +1070,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -912,6 +1101,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -933,15 +1123,17 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -978,7 +1170,6 @@ "testCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -986,6 +1177,18 @@ "com.fasterxml.jackson.core:jackson-databind": { "locked": "2.20.1" }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1009,9 +1212,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1042,6 +1246,13 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -1052,6 +1263,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -1101,7 +1313,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1122,6 +1334,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -1134,7 +1347,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1174,12 +1387,17 @@ }, "org.springframework:spring-webflux": { "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1187,6 +1405,18 @@ "com.fasterxml.jackson.core:jackson-databind": { "locked": "2.20.1" }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1210,9 +1440,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1243,6 +1474,13 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -1253,6 +1491,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -1302,7 +1541,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1323,6 +1562,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -1335,7 +1575,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1375,6 +1615,12 @@ }, "org.springframework:spring-webflux": { "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testRuntimeClasspath": { @@ -1386,7 +1632,6 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1395,32 +1640,15 @@ "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], "locked": "2.20.1" }, "com.graphql-java:graphql-java": { @@ -1448,9 +1676,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1482,6 +1711,13 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -1492,6 +1728,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -1549,7 +1786,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -1582,6 +1819,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -1596,7 +1834,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1613,6 +1852,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -1622,7 +1862,7 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1640,6 +1880,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -1729,6 +1970,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs-extended-scalars/dependencies.lock b/graphql-dgs-extended-scalars/dependencies.lock index 3b5d1b74b..877ffca88 100644 --- a/graphql-dgs-extended-scalars/dependencies.lock +++ b/graphql-dgs-extended-scalars/dependencies.lock @@ -18,16 +18,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -41,6 +49,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -65,16 +74,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -88,12 +105,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -121,16 +139,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -144,12 +170,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -188,16 +215,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -211,6 +246,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -235,16 +271,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -258,12 +302,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -300,16 +345,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -323,12 +376,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -355,40 +409,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -410,9 +434,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -433,11 +458,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -483,7 +516,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -508,6 +541,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -519,7 +553,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -534,13 +569,14 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -565,6 +601,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -614,6 +651,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -669,21 +712,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -693,18 +832,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -723,16 +850,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -758,6 +893,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -777,13 +913,15 @@ "org.jetbrains:annotations": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" @@ -812,7 +950,6 @@ "testCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -837,9 +974,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -859,11 +997,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -901,7 +1047,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -914,6 +1060,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -923,7 +1070,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -945,12 +1092,17 @@ }, "org.springframework.boot:spring-boot-starter-test": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -975,9 +1127,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -997,11 +1150,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1039,7 +1200,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1052,6 +1213,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1061,7 +1223,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1083,6 +1245,12 @@ }, "org.springframework.boot:spring-boot-starter-test": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testRuntimeClasspath": { @@ -1094,40 +1262,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1149,9 +1287,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1172,11 +1311,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1222,7 +1369,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -1247,6 +1394,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1258,7 +1406,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1273,13 +1422,14 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1295,6 +1445,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1344,6 +1495,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs-extended-validation/dependencies.lock b/graphql-dgs-extended-validation/dependencies.lock index b33539727..39eed787a 100644 --- a/graphql-dgs-extended-validation/dependencies.lock +++ b/graphql-dgs-extended-validation/dependencies.lock @@ -18,16 +18,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -41,6 +49,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -65,16 +74,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -88,12 +105,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -121,16 +139,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -144,12 +170,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -188,16 +215,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -211,6 +246,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -235,16 +271,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -258,12 +302,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -300,16 +345,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -323,12 +376,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -355,40 +409,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -410,9 +434,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -433,11 +458,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -483,7 +516,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -508,6 +541,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -519,7 +553,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -534,13 +569,14 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -565,6 +601,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -614,6 +651,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -669,21 +712,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -693,18 +832,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -723,16 +850,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -758,6 +893,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -777,13 +913,15 @@ "org.jetbrains:annotations": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" @@ -812,7 +950,6 @@ "testCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -837,9 +974,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -859,11 +997,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -901,7 +1047,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -914,6 +1060,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -923,7 +1070,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -945,12 +1092,17 @@ }, "org.springframework.boot:spring-boot-starter-test": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -975,9 +1127,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -997,11 +1150,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1039,7 +1200,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1052,6 +1213,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1061,7 +1223,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1083,6 +1245,12 @@ }, "org.springframework.boot:spring-boot-starter-test": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testRuntimeClasspath": { @@ -1094,40 +1262,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1149,9 +1287,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1172,11 +1311,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1222,7 +1369,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -1247,6 +1394,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1258,7 +1406,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1273,13 +1422,14 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1295,6 +1445,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1344,6 +1495,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs-jackson2/build.gradle.kts b/graphql-dgs-jackson2/build.gradle.kts new file mode 100644 index 000000000..64e39ff76 --- /dev/null +++ b/graphql-dgs-jackson2/build.gradle.kts @@ -0,0 +1,27 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +dependencies { + api(project(":graphql-dgs")) + api(project(":graphql-dgs-json-api")) + + implementation("com.fasterxml.jackson.module:jackson-module-kotlin") + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") + implementation("com.fasterxml.jackson.module:jackson-module-parameter-names") + implementation("com.fasterxml.jackson.datatype:jackson-datatype-jdk8") + + implementation("org.springframework.boot:spring-boot-autoconfigure") +} diff --git a/graphql-dgs-jackson2/dependencies.lock b/graphql-dgs-jackson2/dependencies.lock new file mode 100644 index 000000000..49a3d8eae --- /dev/null +++ b/graphql-dgs-jackson2/dependencies.lock @@ -0,0 +1,1193 @@ +{ + "apiDependenciesMetadata": { + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + } + }, + "compileClasspath": { + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "locked": "4.0.0" + } + }, + "implementationDependenciesMetadata": { + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "locked": "4.0.0" + } + }, + "jmh": { + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + } + }, + "jmhApiDependenciesMetadata": { + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + } + }, + "jmhCompileClasspath": { + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "locked": "4.0.0" + } + }, + "jmhImplementationDependenciesMetadata": { + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "locked": "4.0.0" + } + }, + "jmhRuntimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.2.0" + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit.platform:junit-platform-launcher": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + } + }, + "kotlinBouncyCastleConfiguration": { + "org.bouncycastle:bcpg-jdk18on": { + "locked": "1.80" + }, + "org.bouncycastle:bcpkix-jdk18on": { + "locked": "1.80" + } + }, + "kotlinCompilerClasspath": { + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathJmh": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathMain": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathTest": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinInternalAbiValidation": { + "org.jetbrains.kotlin:abi-tools": { + "locked": "2.2.20" + } + }, + "kotlinKlibCommonizerClasspath": { + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { + "locked": "2.2.20" + } + }, + "ktlint": { + "com.pinterest.ktlint:ktlint-cli": { + "locked": "1.5.0" + }, + "io.github.detekt.sarif4k:sarif4k": { + "locked": "0.5.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + } + }, + "ktlintBaselineReporter": { + "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "ktlintReporter": { + "io.github.detekt.sarif4k:sarif4k": { + "locked": "0.5.0" + }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-ruleset-standard": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "runtimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.2.0" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "locked": "4.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + } + }, + "swiftExportClasspathResolvable": { + "org.jetbrains.kotlin:swift-export-embeddable": { + "locked": "2.2.20" + } + }, + "testCompileClasspath": { + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + } + }, + "testImplementationDependenciesMetadata": { + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + } + }, + "testRuntimeClasspath": { + "com.apollographql.federation:federation-graphql-java-support": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "5.3.0" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-parameter-names": { + "locked": "2.20.1" + }, + "com.graphql-java:graphql-java": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "25.0" + }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, + "com.jayway.jsonpath:json-path": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs": { + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "project": true + }, + "com.netflix.graphql.dgs:graphql-error-types": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, + "io.micrometer:context-propagation": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.2.0" + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit.platform:junit-platform-launcher": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", + "com.netflix.graphql.dgs:graphql-error-types" + ], + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-autoconfigure": { + "locked": "4.0.0" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + }, + "org.springframework:spring-context": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + }, + "org.springframework:spring-web": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "7.0.1" + } + } +} \ No newline at end of file diff --git a/graphql-dgs-jackson2/src/main/kotlin/com/netflix/graphql/dgs/jackson2/DgsJackson2AutoConfiguration.kt b/graphql-dgs-jackson2/src/main/kotlin/com/netflix/graphql/dgs/jackson2/DgsJackson2AutoConfiguration.kt new file mode 100644 index 000000000..b5774607e --- /dev/null +++ b/graphql-dgs-jackson2/src/main/kotlin/com/netflix/graphql/dgs/jackson2/DgsJackson2AutoConfiguration.kt @@ -0,0 +1,50 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.netflix.graphql.dgs.jackson2 + +import com.fasterxml.jackson.databind.ObjectMapper +import com.netflix.graphql.dgs.json.DgsJsonMapper +import org.springframework.boot.autoconfigure.AutoConfiguration +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass +import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean +import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty +import org.springframework.context.annotation.Bean + +/** + * Auto-configuration for DGS Jackson 2 support. + * + * When this module is on the classpath, Jackson 2 is used by default. + * Runs BEFORE DgsSpringGraphQLAutoConfiguration so that the Jackson 2 bean + * takes precedence over the Jackson 3 default. + * + * To override and use Jackson 3 even when this module is present, set: + * dgs.graphql.preferred-json-mapper=jackson3 + */ +@AutoConfiguration( + beforeName = ["com.netflix.graphql.dgs.springgraphql.autoconfig.DgsSpringGraphQLAutoConfiguration"], +) +@ConditionalOnClass(ObjectMapper::class) +@ConditionalOnProperty( + name = ["dgs.graphql.preferred-json-mapper"], + havingValue = "jackson2", + matchIfMissing = true, +) +class DgsJackson2AutoConfiguration { + @Bean + @ConditionalOnMissingBean(DgsJsonMapper::class) + fun dgsJsonMapper(): DgsJsonMapper = Jackson2DgsJsonMapper() +} diff --git a/graphql-dgs-jackson2/src/main/kotlin/com/netflix/graphql/dgs/jackson2/Jackson2DgsJsonMapper.kt b/graphql-dgs-jackson2/src/main/kotlin/com/netflix/graphql/dgs/jackson2/Jackson2DgsJsonMapper.kt new file mode 100644 index 000000000..6a3582fb9 --- /dev/null +++ b/graphql-dgs-jackson2/src/main/kotlin/com/netflix/graphql/dgs/jackson2/Jackson2DgsJsonMapper.kt @@ -0,0 +1,66 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.netflix.graphql.dgs.jackson2 + +import com.fasterxml.jackson.databind.DeserializationFeature +import com.fasterxml.jackson.databind.ObjectMapper +import com.fasterxml.jackson.datatype.jdk8.Jdk8Module +import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule +import com.fasterxml.jackson.module.kotlin.KotlinFeature +import com.fasterxml.jackson.module.kotlin.kotlinModule +import com.fasterxml.jackson.module.paramnames.ParameterNamesModule +import com.jayway.jsonpath.Configuration +import com.jayway.jsonpath.Option +import com.jayway.jsonpath.spi.json.JacksonJsonProvider +import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider +import com.netflix.graphql.dgs.json.DgsJsonMapper + +/** + * Jackson 2 implementation of [DgsJsonMapper]. + * Used when consumers opt back into Jackson 2 via the `graphql-dgs-jackson2` module`. + */ +internal class Jackson2DgsJsonMapper : DgsJsonMapper { + private val objectMapper: ObjectMapper = + ObjectMapper() + .registerModule(kotlinModule { enable(KotlinFeature.NullIsSameAsDefault) }) + .registerModule(JavaTimeModule()) + .registerModule(ParameterNamesModule()) + .registerModule(Jdk8Module()) + .enable(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES) + + override fun writeValueAsString(value: Any): String = objectMapper.writeValueAsString(value) + + override fun readValue( + content: String, + clazz: Class, + ): T = objectMapper.readValue(content, clazz) + + override fun convertValue( + fromValue: Any, + toClass: Class, + ): T = objectMapper.convertValue(fromValue, toClass) + + override fun jsonPathConfiguration(): Configuration = + Configuration + .builder() + .jsonProvider(JacksonJsonProvider(objectMapper)) + .mappingProvider(JacksonMappingProvider(objectMapper)) + .build() + .addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL) +} diff --git a/graphql-dgs-jackson2/src/main/resources/META-INF/spring/com.netflix.graphql.dgs.test.EnableDgsMockMvcTest.imports b/graphql-dgs-jackson2/src/main/resources/META-INF/spring/com.netflix.graphql.dgs.test.EnableDgsMockMvcTest.imports new file mode 100644 index 000000000..e62f6cefc --- /dev/null +++ b/graphql-dgs-jackson2/src/main/resources/META-INF/spring/com.netflix.graphql.dgs.test.EnableDgsMockMvcTest.imports @@ -0,0 +1 @@ +com.netflix.graphql.dgs.jackson2.DgsJackson2AutoConfiguration diff --git a/graphql-dgs-jackson2/src/main/resources/META-INF/spring/com.netflix.graphql.dgs.test.EnableDgsTest.imports b/graphql-dgs-jackson2/src/main/resources/META-INF/spring/com.netflix.graphql.dgs.test.EnableDgsTest.imports new file mode 100644 index 000000000..e62f6cefc --- /dev/null +++ b/graphql-dgs-jackson2/src/main/resources/META-INF/spring/com.netflix.graphql.dgs.test.EnableDgsTest.imports @@ -0,0 +1 @@ +com.netflix.graphql.dgs.jackson2.DgsJackson2AutoConfiguration diff --git a/graphql-dgs-jackson2/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/graphql-dgs-jackson2/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 000000000..e62f6cefc --- /dev/null +++ b/graphql-dgs-jackson2/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1 @@ +com.netflix.graphql.dgs.jackson2.DgsJackson2AutoConfiguration diff --git a/graphql-dgs-json-api/build.gradle.kts b/graphql-dgs-json-api/build.gradle.kts new file mode 100644 index 000000000..6aef1ff91 --- /dev/null +++ b/graphql-dgs-json-api/build.gradle.kts @@ -0,0 +1,11 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Jackson-agnostic JSON abstraction for DGS. Defines the DgsJsonMapper contract used by + * graphql-dgs, graphql-dgs-jackson2, graphql-dgs-client, and anything else that needs to + * (de)serialize JSON without binding to a specific Jackson major. + */ + +dependencies { + api("com.jayway.jsonpath:json-path") +} diff --git a/graphql-dgs-json-api/dependencies.lock b/graphql-dgs-json-api/dependencies.lock new file mode 100644 index 000000000..f4b870716 --- /dev/null +++ b/graphql-dgs-json-api/dependencies.lock @@ -0,0 +1,440 @@ +{ + "apiDependenciesMetadata": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + } + }, + "compileClasspath": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + } + }, + "implementationDependenciesMetadata": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + } + }, + "jmh": { + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + } + }, + "jmhApiDependenciesMetadata": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + } + }, + "jmhCompileClasspath": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + } + }, + "jmhImplementationDependenciesMetadata": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + } + }, + "jmhRuntimeClasspath": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit.platform:junit-platform-launcher": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.openjdk.jmh:jmh-core": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-annprocess": { + "locked": "1.37" + }, + "org.openjdk.jmh:jmh-generator-bytecode": { + "locked": "1.36" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + } + }, + "kotlinBouncyCastleConfiguration": { + "org.bouncycastle:bcpg-jdk18on": { + "locked": "1.80" + }, + "org.bouncycastle:bcpkix-jdk18on": { + "locked": "1.80" + } + }, + "kotlinCompilerClasspath": { + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathJmh": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathMain": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinCompilerPluginClasspathTest": { + "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { + "locked": "2.2.20" + } + }, + "kotlinInternalAbiValidation": { + "org.jetbrains.kotlin:abi-tools": { + "locked": "2.2.20" + } + }, + "kotlinKlibCommonizerClasspath": { + "org.jetbrains.kotlin:kotlin-klib-commonizer-embeddable": { + "locked": "2.2.20" + } + }, + "ktlint": { + "com.pinterest.ktlint:ktlint-cli": { + "locked": "1.5.0" + }, + "io.github.detekt.sarif4k:sarif4k": { + "locked": "0.5.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + } + }, + "ktlintBaselineReporter": { + "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "ktlintReporter": { + "io.github.detekt.sarif4k:sarif4k": { + "locked": "0.5.0" + }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, + "io.github.oshai:kotlin-logging": { + "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-ruleset-standard": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" + } + }, + "runtimeClasspath": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + } + }, + "swiftExportClasspathResolvable": { + "org.jetbrains.kotlin:swift-export-embeddable": { + "locked": "2.2.20" + } + }, + "testCompileClasspath": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + } + }, + "testImplementationDependenciesMetadata": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + } + }, + "testRuntimeClasspath": { + "com.jayway.jsonpath:json-path": { + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true + }, + "io.mockk:mockk": { + "locked": "1.14.9" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "26.1.0" + }, + "org.junit.jupiter:junit-jupiter": { + "locked": "6.0.1" + }, + "org.junit.platform:junit-platform-launcher": { + "locked": "6.0.1" + }, + "org.junit:junit-bom": { + "locked": "5.13.4" + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.17" + }, + "org.springframework.boot:spring-boot-starter-test": { + "locked": "4.0.0" + } + } +} \ No newline at end of file diff --git a/graphql-dgs-json-api/src/main/kotlin/com/netflix/graphql/dgs/json/DgsJsonMapper.kt b/graphql-dgs-json-api/src/main/kotlin/com/netflix/graphql/dgs/json/DgsJsonMapper.kt new file mode 100644 index 000000000..090e10ae9 --- /dev/null +++ b/graphql-dgs-json-api/src/main/kotlin/com/netflix/graphql/dgs/json/DgsJsonMapper.kt @@ -0,0 +1,36 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.json + +import com.jayway.jsonpath.Configuration + +/** + * Stable, Jackson-agnostic JSON mapping contract used across the DGS framework and its client. + * + * Implementations bind to a specific Jackson major. DGS code and library authors should program + * against this interface; the underlying implementation can be swapped when Jackson majors + * change without breaking callers. + */ +interface DgsJsonMapper { + fun writeValueAsString(value: Any): String + + fun readValue( + content: String, + clazz: Class, + ): T + + fun convertValue( + fromValue: Any, + toClass: Class, + ): T + + /** + * JsonPath configuration backed by this mapper. Used by clients that parse response bodies + * with JsonPath. + */ + fun jsonPathConfiguration(): Configuration +} diff --git a/graphql-dgs-pagination/dependencies.lock b/graphql-dgs-pagination/dependencies.lock index 379083777..8fa372410 100644 --- a/graphql-dgs-pagination/dependencies.lock +++ b/graphql-dgs-pagination/dependencies.lock @@ -15,16 +15,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -38,6 +46,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -59,16 +68,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -82,12 +99,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -112,16 +130,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -135,12 +161,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -176,16 +203,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -199,6 +234,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -220,16 +256,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -243,12 +287,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -282,16 +327,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -305,12 +358,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -335,18 +389,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -362,16 +404,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -389,7 +439,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-reflect": { "firstLevelTransitive": [ @@ -400,6 +450,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -419,9 +470,10 @@ "org.jetbrains:annotations": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -444,6 +496,7 @@ "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" @@ -520,21 +573,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -544,18 +693,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -571,16 +708,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -606,6 +751,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -625,13 +771,15 @@ "org.jetbrains:annotations": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" @@ -673,16 +821,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -694,17 +850,18 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -738,16 +895,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -759,17 +924,18 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -794,18 +960,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -821,16 +975,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -848,7 +1010,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-reflect": { "firstLevelTransitive": [ @@ -859,6 +1021,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -878,9 +1041,10 @@ "org.jetbrains:annotations": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -894,6 +1058,7 @@ "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" diff --git a/graphql-dgs-platform/build.gradle.kts b/graphql-dgs-platform/build.gradle.kts index 1f77f5a0e..6ba0ba8ba 100644 --- a/graphql-dgs-platform/build.gradle.kts +++ b/graphql-dgs-platform/build.gradle.kts @@ -67,7 +67,9 @@ dependencies { } // --- api("com.jayway.jsonpath:json-path") { - version { require("2.9.0") } + version { + strictly("3.0.0") + } } api("io.projectreactor:reactor-core") { version { require("3.6.1") } @@ -97,6 +99,9 @@ val ignoreInternalModules by extra( project(":graphql-dgs-example-shared"), project(":graphql-dgs-spring-graphql-example-java"), project(":graphql-dgs-spring-graphql-example-java-webflux"), + project(":graphql-dgs-example-jackson3-only"), + project(":graphql-dgs-example-jackson2-only"), + project(":graphql-dgs-example-jackson-both"), project(":graphql-dgs-platform-dependencies") ) ) diff --git a/graphql-dgs-reactive/build.gradle.kts b/graphql-dgs-reactive/build.gradle.kts index 8f5231d42..5cadb1d17 100644 --- a/graphql-dgs-reactive/build.gradle.kts +++ b/graphql-dgs-reactive/build.gradle.kts @@ -19,7 +19,6 @@ dependencies { compileOnly("org.springframework.boot:spring-boot-starter") compileOnly("org.springframework:spring-webflux") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core") implementation("io.projectreactor.kotlin:reactor-kotlin-extensions") testImplementation("io.projectreactor:reactor-test") diff --git a/graphql-dgs-reactive/dependencies.lock b/graphql-dgs-reactive/dependencies.lock index e2c63d41e..ef0ed43d6 100644 --- a/graphql-dgs-reactive/dependencies.lock +++ b/graphql-dgs-reactive/dependencies.lock @@ -15,16 +15,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -38,15 +46,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" } }, "compileClasspath": { - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -62,16 +68,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -88,6 +102,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -96,7 +111,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -117,9 +132,6 @@ } }, "implementationDependenciesMetadata": { - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -135,16 +147,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -161,6 +181,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -169,7 +190,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -202,16 +223,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -225,15 +254,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" } }, "jmhCompileClasspath": { - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -249,16 +276,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -275,6 +310,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -283,7 +319,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -313,9 +349,6 @@ } }, "jmhImplementationDependenciesMetadata": { - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -331,16 +364,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -357,6 +398,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -365,7 +407,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -387,18 +429,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -414,16 +444,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -441,7 +479,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "locked": "1.3.0" @@ -458,6 +496,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -477,9 +516,10 @@ "org.jetbrains:annotations": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -502,6 +542,7 @@ "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" @@ -575,21 +616,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -599,18 +736,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -626,16 +751,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -664,6 +797,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -683,13 +817,15 @@ "org.jetbrains:annotations": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" @@ -713,9 +849,6 @@ } }, "testCompileClasspath": { - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -731,16 +864,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -752,7 +893,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "locked": "1.3.0" @@ -763,6 +904,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -771,7 +913,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -787,9 +929,6 @@ } }, "testImplementationDependenciesMetadata": { - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -805,16 +944,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -826,7 +973,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "locked": "1.3.0" @@ -837,6 +984,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -845,7 +993,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -867,18 +1015,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -894,16 +1030,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -921,7 +1065,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "locked": "1.3.0" @@ -938,6 +1082,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -957,9 +1102,10 @@ "org.jetbrains:annotations": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -973,6 +1119,7 @@ "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" diff --git a/graphql-dgs-spring-boot-micrometer/dependencies.lock b/graphql-dgs-spring-boot-micrometer/dependencies.lock index 9391ca142..703a361ba 100644 --- a/graphql-dgs-spring-boot-micrometer/dependencies.lock +++ b/graphql-dgs-spring-boot-micrometer/dependencies.lock @@ -15,16 +15,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -38,6 +46,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -62,16 +71,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -94,12 +111,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -150,16 +168,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -182,12 +208,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -232,16 +259,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -255,6 +290,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -279,16 +315,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -311,12 +355,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -376,16 +421,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -408,12 +461,13 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -449,40 +503,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -504,9 +528,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -527,11 +552,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -586,7 +619,7 @@ "locked": "1.16.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -611,6 +644,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -622,7 +656,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -637,13 +672,14 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -668,6 +704,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -741,6 +778,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -796,21 +839,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -820,18 +959,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -850,16 +977,24 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -894,6 +1029,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -913,13 +1049,15 @@ "org.jetbrains:annotations": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" @@ -957,7 +1095,6 @@ "testCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -982,9 +1119,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1004,11 +1142,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1055,7 +1201,7 @@ "locked": "1.16.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1068,6 +1214,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1077,7 +1224,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1120,12 +1267,17 @@ }, "org.springframework:spring-context-support": { "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1150,9 +1302,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1172,11 +1325,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1223,7 +1384,7 @@ "locked": "1.16.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1236,6 +1397,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1245,7 +1407,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1288,6 +1450,12 @@ }, "org.springframework:spring-context-support": { "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testRuntimeClasspath": { @@ -1299,40 +1467,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -1354,9 +1492,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1377,11 +1516,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1436,7 +1583,7 @@ "locked": "1.16.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -1461,6 +1608,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1472,7 +1620,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1487,13 +1636,14 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1509,6 +1659,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter", @@ -1582,6 +1733,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs-spring-graphql-example-java-webflux/dependencies.lock b/graphql-dgs-spring-graphql-example-java-webflux/dependencies.lock index 24d04c5ba..b4dc0a0ea 100644 --- a/graphql-dgs-spring-graphql-example-java-webflux/dependencies.lock +++ b/graphql-dgs-spring-graphql-example-java-webflux/dependencies.lock @@ -10,7 +10,6 @@ "compileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -35,9 +34,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -47,6 +47,7 @@ }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ], @@ -61,6 +62,13 @@ "com.netflix.graphql.dgs:graphql-dgs-example-shared": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -70,6 +78,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -126,6 +135,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -137,7 +147,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -153,12 +163,17 @@ }, "org.springframework.boot:spring-boot-starter-webflux": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "implementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -183,9 +198,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -195,6 +211,7 @@ }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ], @@ -209,6 +226,13 @@ "com.netflix.graphql.dgs:graphql-dgs-example-shared": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -218,6 +242,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -274,6 +299,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -285,7 +311,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -301,6 +327,12 @@ }, "org.springframework.boot:spring-boot-starter-webflux": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "jmh": { @@ -325,7 +357,6 @@ "jmhCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -350,9 +381,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -362,6 +394,7 @@ }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ], @@ -376,6 +409,13 @@ "com.netflix.graphql.dgs:graphql-dgs-example-shared": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -385,6 +425,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -441,6 +482,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -452,7 +494,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -477,12 +519,17 @@ }, "org.springframework.boot:spring-boot-starter-webflux": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "jmhImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -507,9 +554,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -519,6 +567,7 @@ }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ], @@ -533,6 +582,13 @@ "com.netflix.graphql.dgs:graphql-dgs-example-shared": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -542,6 +598,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -598,6 +655,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -609,7 +667,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -634,6 +692,12 @@ }, "org.springframework.boot:spring-boot-starter-webflux": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "jmhRuntimeClasspath": { @@ -645,7 +709,6 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -658,30 +721,25 @@ }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-parameter-names": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, @@ -707,12 +765,19 @@ ], "locked": "22.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -745,6 +810,13 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-example-shared" @@ -758,6 +830,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -826,7 +899,7 @@ "locked": "1.16.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -860,6 +933,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -873,7 +947,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -890,6 +965,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -898,7 +974,7 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -925,6 +1001,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1016,6 +1093,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -1071,21 +1154,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -1097,7 +1276,6 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1110,30 +1288,25 @@ }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-parameter-names": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, @@ -1159,12 +1332,19 @@ ], "locked": "22.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1197,6 +1377,13 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-example-shared" @@ -1210,6 +1397,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1306,6 +1494,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1319,7 +1508,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1336,6 +1526,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1344,7 +1535,7 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -1353,6 +1544,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1441,6 +1633,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "swiftExportClasspathResolvable": { @@ -1451,7 +1649,6 @@ "testCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1476,9 +1673,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1488,6 +1686,7 @@ }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ], @@ -1502,6 +1701,13 @@ "com.netflix.graphql.dgs:graphql-dgs-example-shared": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -1511,6 +1717,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1553,7 +1760,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" }, "io.projectreactor:reactor-test": { "locked": "3.8.0" @@ -1567,6 +1780,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1578,7 +1792,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1603,12 +1817,17 @@ }, "org.springframework.boot:spring-boot-starter-webflux": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1633,9 +1852,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1645,6 +1865,7 @@ }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ], @@ -1659,6 +1880,13 @@ "com.netflix.graphql.dgs:graphql-dgs-example-shared": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -1668,6 +1896,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1710,7 +1939,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" + }, + "io.projectreactor:reactor-core": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "locked": "3.8.0" }, "io.projectreactor:reactor-test": { "locked": "3.8.0" @@ -1724,6 +1959,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1735,7 +1971,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1760,6 +1996,12 @@ }, "org.springframework.boot:spring-boot-starter-webflux": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testRuntimeClasspath": { @@ -1771,7 +2013,6 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1784,30 +2025,25 @@ }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-parameter-names": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, @@ -1833,12 +2069,19 @@ ], "locked": "22.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1871,6 +2114,13 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-example-shared" @@ -1884,6 +2134,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1952,7 +2203,7 @@ "locked": "1.16.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -1986,6 +2237,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1999,7 +2251,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -2016,6 +2269,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -2024,7 +2278,7 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -2042,6 +2296,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -2133,6 +2388,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs-spring-graphql-example-java/dependencies.lock b/graphql-dgs-spring-graphql-example-java/dependencies.lock index 853e12a5a..31e053b0d 100644 --- a/graphql-dgs-spring-graphql-example-java/dependencies.lock +++ b/graphql-dgs-spring-graphql-example-java/dependencies.lock @@ -10,7 +10,6 @@ "compileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -35,9 +34,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -61,12 +61,20 @@ "com.netflix.graphql.dgs:graphql-dgs-example-shared": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -122,6 +130,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -132,7 +141,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -151,12 +160,17 @@ }, "org.springframework.boot:spring-boot-starter-webflux": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "implementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -181,9 +195,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -207,12 +222,20 @@ "com.netflix.graphql.dgs:graphql-dgs-example-shared": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -268,6 +291,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -278,7 +302,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -297,6 +321,12 @@ }, "org.springframework.boot:spring-boot-starter-webflux": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "jmh": { @@ -321,7 +351,6 @@ "jmhCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -346,9 +375,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -372,12 +402,20 @@ "com.netflix.graphql.dgs:graphql-dgs-example-shared": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -433,6 +471,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -443,7 +482,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -471,12 +510,17 @@ }, "org.springframework.boot:spring-boot-starter-webflux": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "jmhImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -501,9 +545,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -527,12 +572,20 @@ "com.netflix.graphql.dgs:graphql-dgs-example-shared": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -588,6 +641,7 @@ "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", @@ -598,7 +652,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -626,6 +680,12 @@ }, "org.springframework.boot:spring-boot-starter-webflux": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "jmhRuntimeClasspath": { @@ -637,7 +697,6 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -650,30 +709,25 @@ }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-parameter-names": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, @@ -686,6 +740,7 @@ "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" @@ -707,9 +762,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -728,6 +784,7 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "project": true @@ -747,6 +804,13 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-example-shared" @@ -761,6 +825,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -840,7 +905,7 @@ "locked": "1.16.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -875,6 +940,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -890,7 +956,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -908,6 +975,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -918,7 +986,7 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -946,6 +1014,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1077,6 +1146,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -1132,21 +1207,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -1158,7 +1329,6 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1171,30 +1341,25 @@ }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-parameter-names": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, @@ -1229,9 +1394,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1264,6 +1430,13 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-example-shared" @@ -1277,6 +1450,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1373,6 +1547,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1386,7 +1561,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1403,6 +1579,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1411,7 +1588,7 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -1420,6 +1597,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1511,6 +1689,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "swiftExportClasspathResolvable": { @@ -1521,7 +1705,6 @@ "testCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1552,9 +1735,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1572,7 +1756,8 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", "com.netflix.graphql.dgs:graphql-dgs-pagination", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ], "project": true }, @@ -1588,6 +1773,13 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -1599,6 +1791,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1652,7 +1845,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1674,6 +1867,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1687,7 +1881,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1733,12 +1927,17 @@ }, "org.springframework:spring-test": { "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1769,9 +1968,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -1789,7 +1989,8 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", "com.netflix.graphql.dgs:graphql-dgs-pagination", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ], "project": true }, @@ -1805,6 +2006,13 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars": { "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "project": true }, @@ -1816,6 +2024,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1869,7 +2078,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1891,6 +2100,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -1904,7 +2114,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1950,6 +2160,12 @@ }, "org.springframework:spring-test": { "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testRuntimeClasspath": { @@ -1961,7 +2177,6 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1974,30 +2189,25 @@ }, "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-kotlin": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, "com.fasterxml.jackson.module:jackson-module-parameter-names": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-example-shared" ], "locked": "2.20.1" }, @@ -2010,6 +2220,7 @@ "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" @@ -2031,9 +2242,10 @@ "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "firstLevelTransitive": [ @@ -2052,6 +2264,7 @@ "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "project": true @@ -2071,6 +2284,13 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-pagination": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs-example-shared" @@ -2085,6 +2305,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -2164,7 +2385,7 @@ "locked": "1.16.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -2199,6 +2420,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -2214,7 +2436,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -2232,6 +2455,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -2242,7 +2466,7 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -2261,6 +2485,7 @@ "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-example-shared", "com.netflix.graphql.dgs:graphql-dgs-extended-scalars", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-pagination", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer", @@ -2392,6 +2617,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/TestAppTestSlice.java b/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/TestAppTestSlice.java index a4a30a162..9d67812ac 100644 --- a/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/TestAppTestSlice.java +++ b/graphql-dgs-spring-graphql-example-java/src/test/java/com/netflix/graphql/dgs/example/datafetcher/TestAppTestSlice.java @@ -26,6 +26,7 @@ import com.netflix.graphql.dgs.pagination.DgsPaginationAutoConfiguration; import com.netflix.graphql.dgs.scalars.UploadScalar; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; import org.springframework.context.annotation.Import; import java.lang.annotation.*; @@ -42,6 +43,6 @@ ExampleInstrumentationDependingOnContextContributor.class, MyContextBuilder.class }) -@ImportAutoConfiguration({DgsPaginationAutoConfiguration.class, DgsExtendedScalarsAutoConfiguration.class}) +@ImportAutoConfiguration({DgsPaginationAutoConfiguration.class, DgsExtendedScalarsAutoConfiguration.class, JacksonAutoConfiguration.class}) public @interface TestAppTestSlice { } diff --git a/graphql-dgs-spring-graphql-starter-test/dependencies.lock b/graphql-dgs-spring-graphql-starter-test/dependencies.lock index c402a63e8..e0668b1de 100644 --- a/graphql-dgs-spring-graphql-starter-test/dependencies.lock +++ b/graphql-dgs-spring-graphql-starter-test/dependencies.lock @@ -55,7 +55,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -92,7 +92,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -171,7 +171,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -217,7 +217,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -256,7 +256,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ @@ -270,7 +270,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -390,21 +390,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -436,7 +532,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ @@ -505,7 +601,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ @@ -515,7 +611,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -554,7 +650,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ @@ -564,7 +660,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -603,7 +699,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ @@ -617,7 +713,7 @@ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" diff --git a/graphql-dgs-spring-graphql-starter/dependencies.lock b/graphql-dgs-spring-graphql-starter/dependencies.lock index 16cc6e331..94e34eae4 100644 --- a/graphql-dgs-spring-graphql-starter/dependencies.lock +++ b/graphql-dgs-spring-graphql-starter/dependencies.lock @@ -2,7 +2,6 @@ "apiDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -15,12 +14,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -37,11 +43,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -85,6 +99,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -97,12 +112,17 @@ "com.netflix.graphql.dgs:dgs-starter" ], "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "compileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -115,12 +135,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -137,11 +164,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -185,6 +220,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -193,7 +229,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -203,12 +239,17 @@ "com.netflix.graphql.dgs:dgs-starter" ], "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "implementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -221,12 +262,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -243,11 +291,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -291,6 +347,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -299,7 +356,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -309,6 +366,12 @@ "com.netflix.graphql.dgs:dgs-starter" ], "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "jmh": { @@ -325,7 +388,6 @@ "jmhApiDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -338,12 +400,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -360,11 +429,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -408,6 +485,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -420,12 +498,17 @@ "com.netflix.graphql.dgs:dgs-starter" ], "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "jmhCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -438,12 +521,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -460,11 +550,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -508,6 +606,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -516,7 +615,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -535,12 +634,17 @@ "com.netflix.graphql.dgs:dgs-starter" ], "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "jmhImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -553,12 +657,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -575,11 +686,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -623,6 +742,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -631,7 +751,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -650,6 +770,12 @@ "com.netflix.graphql.dgs:dgs-starter" ], "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "jmhRuntimeClasspath": { @@ -661,40 +787,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -704,12 +800,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -727,11 +830,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -773,7 +884,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -798,6 +909,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -808,7 +920,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -823,12 +936,13 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -853,6 +967,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -901,6 +1016,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -956,21 +1077,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -982,40 +1199,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1025,12 +1212,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -1048,11 +1242,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1116,6 +1318,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1126,7 +1329,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1141,18 +1345,20 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1198,6 +1404,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "swiftExportClasspathResolvable": { @@ -1208,7 +1420,6 @@ "testCompileClasspath": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1221,12 +1432,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -1243,11 +1461,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1281,7 +1507,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1294,6 +1520,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1302,7 +1529,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1321,12 +1548,17 @@ }, "org.springframework.boot:spring-boot-starter-test": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" @@ -1339,12 +1571,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -1361,11 +1600,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1399,7 +1646,7 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "firstLevelTransitive": [ @@ -1412,6 +1659,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1420,7 +1668,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1439,6 +1687,12 @@ }, "org.springframework.boot:spring-boot-starter-test": { "locked": "4.0.0" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } }, "testRuntimeClasspath": { @@ -1450,40 +1704,10 @@ }, "com.fasterxml.jackson.core:jackson-annotations": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client", "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "2.20" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jdk8": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client", - "com.netflix.graphql.dgs:graphql-dgs-reactive", - "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-parameter-names": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs-client" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -1493,12 +1717,19 @@ ], "locked": "25.0" }, + "com.graphql-java:java-dataloader": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "locked": "6.0.0" + }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-client" + "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter": { "project": true @@ -1516,11 +1747,19 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-client" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1562,7 +1801,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -1587,6 +1826,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1597,7 +1837,8 @@ "org.jetbrains.kotlinx:kotlinx-coroutines-core": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" + "com.netflix.graphql.dgs:graphql-dgs-reactive", + "com.netflix.graphql.dgs:graphql-dgs-spring-graphql" ], "locked": "1.10.2" }, @@ -1612,12 +1853,13 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1633,6 +1875,7 @@ "com.netflix.graphql.dgs:dgs-starter", "com.netflix.graphql.dgs:graphql-dgs", "com.netflix.graphql.dgs:graphql-dgs-client", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql", "com.netflix.graphql.dgs:graphql-dgs-subscription-types", @@ -1681,6 +1924,12 @@ "com.netflix.graphql.dgs:graphql-dgs-subscription-types" ], "locked": "7.0.1" + }, + "tools.jackson.module:jackson-module-kotlin": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:dgs-starter" + ], + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs-spring-graphql-test/dependencies.lock b/graphql-dgs-spring-graphql-test/dependencies.lock index 89ea70aa1..25358d8fe 100644 --- a/graphql-dgs-spring-graphql-test/dependencies.lock +++ b/graphql-dgs-spring-graphql-test/dependencies.lock @@ -15,7 +15,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -44,7 +44,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -92,7 +92,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -130,7 +130,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -165,13 +165,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -266,21 +266,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -291,7 +387,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -322,13 +418,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -363,13 +459,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -404,13 +500,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" diff --git a/graphql-dgs-spring-graphql/build.gradle.kts b/graphql-dgs-spring-graphql/build.gradle.kts index 1a3e6138b..5084b0e0a 100644 --- a/graphql-dgs-spring-graphql/build.gradle.kts +++ b/graphql-dgs-spring-graphql/build.gradle.kts @@ -22,8 +22,8 @@ dependencies { implementation("org.springframework.boot:spring-boot-autoconfigure") implementation("io.micrometer:context-propagation") implementation("org.springframework.graphql:spring-graphql") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin") - implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") + compileOnly("tools.jackson.core:jackson-databind") + compileOnly("tools.jackson.module:jackson-module-kotlin") implementation("io.micrometer:context-propagation") implementation("org.springframework.boot:spring-boot-starter-graphql") @@ -34,6 +34,8 @@ dependencies { compileOnly("org.springframework:spring-webflux") compileOnly("org.springframework:spring-test") + testImplementation("tools.jackson.core:jackson-databind") + testImplementation("tools.jackson.module:jackson-module-kotlin") testImplementation("org.springframework.boot:spring-boot-starter-graphql") testImplementation("org.springframework.boot:spring-boot-starter-test") testImplementation("org.springframework.boot:spring-boot-starter-web") diff --git a/graphql-dgs-spring-graphql/dependencies.lock b/graphql-dgs-spring-graphql/dependencies.lock index 01afd0dde..e0f59c9c9 100644 --- a/graphql-dgs-spring-graphql/dependencies.lock +++ b/graphql-dgs-spring-graphql/dependencies.lock @@ -8,12 +8,6 @@ } }, "compileClasspath": { - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -32,9 +26,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -42,9 +37,16 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -71,13 +73,17 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "locked": "1.10.2" + }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -102,6 +108,12 @@ }, "org.springframework:spring-webmvc": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "compileOnlyDependenciesMetadata": { @@ -122,15 +134,15 @@ }, "org.springframework:spring-webmvc": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "implementationDependenciesMetadata": { - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -146,9 +158,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -156,9 +169,16 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -179,13 +199,17 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "locked": "1.10.2" + }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -223,12 +247,6 @@ } }, "jmhCompileClasspath": { - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -247,9 +265,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -257,9 +276,16 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -286,13 +312,17 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "locked": "1.10.2" + }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -326,6 +356,12 @@ }, "org.springframework:spring-webmvc": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "jmhCompileOnlyDependenciesMetadata": { @@ -346,15 +382,15 @@ }, "org.springframework:spring-webmvc": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "jmhImplementationDependenciesMetadata": { - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -370,9 +406,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -380,9 +417,16 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -403,13 +447,17 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "locked": "1.10.2" + }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -443,19 +491,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" - ], - "locked": "2.20.1" - }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -474,9 +509,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter-test": { "firstLevelTransitive": [ @@ -490,10 +526,17 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", @@ -526,7 +569,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -544,6 +587,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", @@ -568,12 +612,13 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -597,6 +642,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", @@ -663,6 +709,12 @@ }, "org.springframework:spring-webflux": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -718,21 +770,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -742,19 +890,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" - ], - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", @@ -770,9 +905,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:graphql-dgs": { "firstLevelTransitive": [ @@ -780,9 +916,16 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -818,6 +961,7 @@ "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -839,14 +983,16 @@ "org.jetbrains:annotations": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-error-types" ], @@ -880,12 +1026,6 @@ } }, "testCompileClasspath": { - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -904,9 +1044,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter-test": { "firstLevelTransitive": [ @@ -920,10 +1061,17 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", @@ -953,12 +1101,13 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", @@ -966,8 +1115,11 @@ ], "locked": "2.2.20" }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "locked": "1.10.2" + }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1007,15 +1159,15 @@ }, "org.springframework:spring-webflux": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -1034,9 +1186,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter-test": { "firstLevelTransitive": [ @@ -1050,10 +1203,17 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", @@ -1083,12 +1243,13 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", @@ -1096,8 +1257,11 @@ ], "locked": "2.2.20" }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "locked": "1.10.2" + }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1137,6 +1301,12 @@ }, "org.springframework:spring-webflux": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "testRuntimeClasspath": { @@ -1146,19 +1316,6 @@ ], "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" - ], - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs", - "com.netflix.graphql.dgs:graphql-dgs-reactive" - ], - "locked": "2.20.1" - }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -1177,9 +1334,10 @@ }, "com.jayway.jsonpath:json-path": { "firstLevelTransitive": [ - "com.netflix.graphql.dgs:graphql-dgs" + "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api" ], - "locked": "2.9.0" + "locked": "3.0.0" }, "com.netflix.graphql.dgs:dgs-starter-test": { "firstLevelTransitive": [ @@ -1193,10 +1351,17 @@ ], "project": true }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs" + ], + "project": true + }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", @@ -1229,7 +1394,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor.kotlin:reactor-kotlin-extensions": { "firstLevelTransitive": [ @@ -1247,6 +1412,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", @@ -1271,12 +1437,13 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -1291,6 +1458,7 @@ "firstLevelTransitive": [ "com.netflix.graphql.dgs:dgs-starter-test", "com.netflix.graphql.dgs:graphql-dgs", + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-dgs-reactive", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-starter-test", "com.netflix.graphql.dgs:graphql-dgs-spring-graphql-test", @@ -1357,6 +1525,12 @@ }, "org.springframework:spring-webflux": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/diagnostics/DgsJsonMapperMissingException.kt b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/diagnostics/DgsJsonMapperMissingException.kt new file mode 100644 index 000000000..07a5c6aa0 --- /dev/null +++ b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/diagnostics/DgsJsonMapperMissingException.kt @@ -0,0 +1,9 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.diagnostics + +class DgsJsonMapperMissingException : RuntimeException("No DgsJsonMapper bean found") diff --git a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/diagnostics/DgsMapperFailureAnalyzer.kt b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/diagnostics/DgsMapperFailureAnalyzer.kt new file mode 100644 index 000000000..407391807 --- /dev/null +++ b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/diagnostics/DgsMapperFailureAnalyzer.kt @@ -0,0 +1,22 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + */ + +package com.netflix.graphql.dgs.diagnostics + +import org.springframework.boot.diagnostics.AbstractFailureAnalyzer +import org.springframework.boot.diagnostics.FailureAnalysis + +class DgsMapperFailureAnalyzer : AbstractFailureAnalyzer() { + override fun analyze( + rootFailure: Throwable, + cause: DgsJsonMapperMissingException, + ): FailureAnalysis = + FailureAnalysis( + "No DgsJsonMapper bean found.", + "Add 'tools.jackson.core:jackson-databind' (Jackson 3) or 'graphql-dgs-jackson2' to your classpath.", + cause, + ) +} diff --git a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/SpringGraphQLDgsQueryExecutor.kt b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/SpringGraphQLDgsQueryExecutor.kt index 0804a2e00..b0c5dd67f 100644 --- a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/SpringGraphQLDgsQueryExecutor.kt +++ b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/SpringGraphQLDgsQueryExecutor.kt @@ -18,17 +18,18 @@ package com.netflix.graphql.dgs.springgraphql import com.jayway.jsonpath.DocumentContext import com.jayway.jsonpath.JsonPath +import com.jayway.jsonpath.ParseContext import com.jayway.jsonpath.TypeRef import com.jayway.jsonpath.spi.mapper.MappingException import com.netflix.graphql.dgs.DgsQueryExecutor import com.netflix.graphql.dgs.context.GraphQLContextContributor import com.netflix.graphql.dgs.exceptions.DgsQueryExecutionDataExtractionException import com.netflix.graphql.dgs.exceptions.QueryException -import com.netflix.graphql.dgs.internal.BaseDgsQueryExecutor import com.netflix.graphql.dgs.internal.DefaultDgsGraphQLContextBuilder import com.netflix.graphql.dgs.internal.DgsDataLoaderProvider import com.netflix.graphql.dgs.internal.DgsQueryExecutorRequestCustomizer import com.netflix.graphql.dgs.internal.DgsWebMvcRequestData +import com.netflix.graphql.dgs.json.DgsJsonMapper import graphql.ExecutionResult import org.springframework.graphql.ExecutionGraphQlService import org.springframework.graphql.support.DefaultExecutionGraphQlRequest @@ -41,9 +42,12 @@ class SpringGraphQLDgsQueryExecutor( private val executionService: ExecutionGraphQlService, private val dgsContextBuilder: DefaultDgsGraphQLContextBuilder, private val dgsDataLoaderProvider: DgsDataLoaderProvider, + private val dgsJsonMapper: DgsJsonMapper, private val requestCustomizer: DgsQueryExecutorRequestCustomizer = DgsQueryExecutorRequestCustomizer.DEFAULT_REQUEST_CUSTOMIZER, private val graphQLContextContributors: List, ) : DgsQueryExecutor { + private val parseContext: ParseContext = JsonPath.using(dgsJsonMapper.jsonPathConfiguration()) + override fun execute( query: String, variables: Map, @@ -107,13 +111,13 @@ class SpringGraphQLDgsQueryExecutor( override fun executeAndGetDocumentContext( query: String, variables: MutableMap, - ): DocumentContext = BaseDgsQueryExecutor.parseContext.parse(getJsonResult(query, variables)) + ): DocumentContext = parseContext.parse(getJsonResult(query, variables)) override fun executeAndGetDocumentContext( query: String, variables: MutableMap, headers: HttpHeaders?, - ): DocumentContext = BaseDgsQueryExecutor.parseContext.parse(getJsonResult(query, variables, headers)) + ): DocumentContext = parseContext.parse(getJsonResult(query, variables, headers)) override fun executeAndExtractJsonPathAsObject( query: String, @@ -124,7 +128,7 @@ class SpringGraphQLDgsQueryExecutor( ): T { val jsonResult = getJsonResult(query, variables, headers) return try { - BaseDgsQueryExecutor.parseContext.parse(jsonResult).read(jsonPath, clazz) + parseContext.parse(jsonResult).read(jsonPath, clazz) } catch (ex: MappingException) { throw DgsQueryExecutionDataExtractionException(ex, jsonResult, jsonPath, clazz) } @@ -139,7 +143,7 @@ class SpringGraphQLDgsQueryExecutor( ): T { val jsonResult = getJsonResult(query, variables, headers) return try { - BaseDgsQueryExecutor.parseContext.parse(jsonResult).read(jsonPath, typeRef) + parseContext.parse(jsonResult).read(jsonPath, typeRef) } catch (ex: MappingException) { throw DgsQueryExecutionDataExtractionException(ex, jsonResult, jsonPath, typeRef) } @@ -157,6 +161,6 @@ class SpringGraphQLDgsQueryExecutor( throw QueryException(executionResult.errors) } - return BaseDgsQueryExecutor.objectMapper.writeValueAsString(executionResult.toSpecification()) + return dgsJsonMapper.writeValueAsString(executionResult.toSpecification()) } } diff --git a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/SpringGraphQLDgsReactiveQueryExecutor.kt b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/SpringGraphQLDgsReactiveQueryExecutor.kt index 596f08c60..7962ffba6 100644 --- a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/SpringGraphQLDgsReactiveQueryExecutor.kt +++ b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/SpringGraphQLDgsReactiveQueryExecutor.kt @@ -18,12 +18,13 @@ package com.netflix.graphql.dgs.springgraphql import com.jayway.jsonpath.DocumentContext import com.jayway.jsonpath.JsonPath +import com.jayway.jsonpath.ParseContext import com.jayway.jsonpath.TypeRef import com.jayway.jsonpath.spi.mapper.MappingException import com.netflix.graphql.dgs.exceptions.DgsQueryExecutionDataExtractionException import com.netflix.graphql.dgs.exceptions.QueryException -import com.netflix.graphql.dgs.internal.BaseDgsQueryExecutor import com.netflix.graphql.dgs.internal.DgsDataLoaderProvider +import com.netflix.graphql.dgs.json.DgsJsonMapper import com.netflix.graphql.dgs.reactive.DgsReactiveQueryExecutor import com.netflix.graphql.dgs.reactive.internal.DefaultDgsReactiveGraphQLContextBuilder import com.netflix.graphql.dgs.reactive.internal.DgsReactiveRequestData @@ -40,7 +41,10 @@ class SpringGraphQLDgsReactiveQueryExecutor( private val executionService: ExecutionGraphQlService, private val dgsContextBuilder: DefaultDgsReactiveGraphQLContextBuilder, private val dgsDataLoaderProvider: DgsDataLoaderProvider, + private val dgsJsonMapper: DgsJsonMapper, ) : DgsReactiveQueryExecutor { + private val parseContext: ParseContext = JsonPath.using(dgsJsonMapper.jsonPathConfiguration()) + override fun execute( @Language("graphql") query: String, variables: Map?, @@ -91,7 +95,7 @@ class SpringGraphQLDgsReactiveQueryExecutor( override fun executeAndGetDocumentContext( @Language("graphql") query: String, variables: Map, - ): Mono = getJsonResult(query, variables, null).map(BaseDgsQueryExecutor.parseContext::parse) + ): Mono = getJsonResult(query, variables, null).map(parseContext::parse) override fun executeAndExtractJsonPathAsObject( @Language("graphql") query: String, @@ -100,7 +104,7 @@ class SpringGraphQLDgsReactiveQueryExecutor( clazz: Class, ): Mono = getJsonResult(query, variables, null) - .map(BaseDgsQueryExecutor.parseContext::parse) + .map(parseContext::parse) .map { try { it.read(jsonPath, clazz) @@ -116,7 +120,7 @@ class SpringGraphQLDgsReactiveQueryExecutor( typeRef: TypeRef, ): Mono = getJsonResult(query, variables, null) - .map(BaseDgsQueryExecutor.parseContext::parse) + .map(parseContext::parse) .map { try { it.read(jsonPath, typeRef) @@ -136,7 +140,7 @@ class SpringGraphQLDgsReactiveQueryExecutor( throw QueryException(executionResult.errors) } - BaseDgsQueryExecutor.objectMapper.writeValueAsString(executionResult.toSpecification()) + dgsJsonMapper.writeValueAsString(executionResult.toSpecification()) } } } diff --git a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQLAutoConfiguration.kt b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQLAutoConfiguration.kt index 43608df59..fa6f905f5 100644 --- a/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQLAutoConfiguration.kt +++ b/graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQLAutoConfiguration.kt @@ -36,6 +36,7 @@ import com.netflix.graphql.dgs.context.DgsCustomContextBuilder import com.netflix.graphql.dgs.context.DgsCustomContextBuilderWithRequest import com.netflix.graphql.dgs.context.GraphQLContextContributor import com.netflix.graphql.dgs.context.GraphQLContextContributorInstrumentation +import com.netflix.graphql.dgs.diagnostics.DgsJsonMapperMissingException import com.netflix.graphql.dgs.exceptions.DefaultDataFetcherExceptionHandler import com.netflix.graphql.dgs.internal.DataFetcherResultProcessor import com.netflix.graphql.dgs.internal.DefaultDataLoaderOptionsProvider @@ -51,11 +52,13 @@ import com.netflix.graphql.dgs.internal.EntityFetcherRegistry import com.netflix.graphql.dgs.internal.FlowDataFetcherResultProcessor import com.netflix.graphql.dgs.internal.FluxDataFetcherResultProcessor import com.netflix.graphql.dgs.internal.GraphQLJavaErrorInstrumentation +import com.netflix.graphql.dgs.internal.Jackson3DgsJsonMapper import com.netflix.graphql.dgs.internal.MonoDataFetcherResultProcessor import com.netflix.graphql.dgs.internal.QueryValueCustomizer import com.netflix.graphql.dgs.internal.ReloadableDgsDataLoaderProvider import com.netflix.graphql.dgs.internal.method.ArgumentResolver import com.netflix.graphql.dgs.internal.method.MethodDataFetcherFactory +import com.netflix.graphql.dgs.json.DgsJsonMapper import com.netflix.graphql.dgs.mvc.internal.method.HandlerMethodArgumentResolverAdapter import com.netflix.graphql.dgs.reactive.DgsReactiveCustomContextBuilderWithRequest import com.netflix.graphql.dgs.reactive.DgsReactiveQueryExecutor @@ -103,7 +106,6 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplicat import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.boot.graphql.autoconfigure.GraphQlProperties import org.springframework.boot.graphql.autoconfigure.GraphQlSourceBuilderCustomizer -import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration import org.springframework.boot.system.JavaVersion import org.springframework.context.ApplicationContext import org.springframework.context.annotation.Bean @@ -160,14 +162,18 @@ import java.util.stream.Collectors @Suppress("SpringJavaInjectionPointsAutowiringInspection") @AutoConfiguration( beforeName = ["org.springframework.boot.graphql.autoconfigure.GraphQlAutoConfiguration"], - afterName = ["org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration"], + afterName = [ + "org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration", + "org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration", + "org.springframework.boot.jackson2.autoconfigure.Jackson2AutoConfiguration", + ], ) @EnableConfigurationProperties( DgsSpringGraphQLConfigurationProperties::class, DgsConfigurationProperties::class, DgsDataloaderConfigurationProperties::class, ) -@ImportAutoConfiguration(classes = [JacksonAutoConfiguration::class, DgsInputArgumentConfiguration::class]) +@ImportAutoConfiguration(classes = [DgsInputArgumentConfiguration::class]) open class DgsSpringGraphQLAutoConfiguration( private val configProps: DgsConfigurationProperties, private val dataloaderConfigProps: DgsDataloaderConfigurationProperties, @@ -177,6 +183,23 @@ open class DgsSpringGraphQLAutoConfiguration( private val LOG: Logger = LoggerFactory.getLogger(DgsSpringGraphQLAutoConfiguration::class.java) } + @Configuration(proxyBeanMethods = false) + @ConditionalOnClass(name = ["tools.jackson.databind.json.JsonMapper"]) + @ConditionalOnProperty( + name = ["dgs.graphql.preferred-json-mapper"], + havingValue = "jackson3", + matchIfMissing = true, + ) + internal class Jackson3DgsJsonMapperConfiguration { + @Bean + @ConditionalOnMissingBean(DgsJsonMapper::class) + fun dgsJsonMapper(): DgsJsonMapper = Jackson3DgsJsonMapper() + } + + @Bean + @ConditionalOnMissingBean(DgsJsonMapper::class) + open fun dgsJsonMapperFallback(): DgsJsonMapper = throw DgsJsonMapperMissingException() + @Bean @Order(PriorityOrdered.HIGHEST_PRECEDENCE) open fun graphQLContextContributionInstrumentation( @@ -630,6 +653,7 @@ open class DgsSpringGraphQLAutoConfiguration( executionService: ExecutionGraphQlService, dgsContextBuilder: DefaultDgsGraphQLContextBuilder, dgsDataLoaderProvider: DgsDataLoaderProvider, + dgsJsonMapper: DgsJsonMapper, requestCustomizer: ObjectProvider, graphQLContextContributors: List, ): DgsQueryExecutor = @@ -637,6 +661,7 @@ open class DgsSpringGraphQLAutoConfiguration( executionService, dgsContextBuilder, dgsDataLoaderProvider, + dgsJsonMapper, requestCustomizer = requestCustomizer.getIfAvailable(DgsQueryExecutorRequestCustomizer::DEFAULT_REQUEST_CUSTOMIZER), graphQLContextContributors, ) @@ -740,7 +765,9 @@ open class DgsSpringGraphQLAutoConfiguration( executionService: ExecutionGraphQlService, dgsContextBuilder: DefaultDgsReactiveGraphQLContextBuilder, dgsDataLoaderProvider: DgsDataLoaderProvider, - ): DgsReactiveQueryExecutor = SpringGraphQLDgsReactiveQueryExecutor(executionService, dgsContextBuilder, dgsDataLoaderProvider) + dgsJsonMapper: DgsJsonMapper, + ): DgsReactiveQueryExecutor = + SpringGraphQLDgsReactiveQueryExecutor(executionService, dgsContextBuilder, dgsDataLoaderProvider, dgsJsonMapper) @Bean @ConditionalOnMissingBean diff --git a/graphql-dgs-spring-graphql/src/main/resources/META-INF/spring.factories b/graphql-dgs-spring-graphql/src/main/resources/META-INF/spring.factories index c9402830c..c2a603adf 100644 --- a/graphql-dgs-spring-graphql/src/main/resources/META-INF/spring.factories +++ b/graphql-dgs-spring-graphql/src/main/resources/META-INF/spring.factories @@ -2,4 +2,5 @@ org.springframework.boot.EnvironmentPostProcessor=\ com.netflix.graphql.dgs.springgraphql.autoconfig.DgsSpringGraphQLEnvironmentPostProcessor,\ com.netflix.graphql.dgs.springgraphql.autoconfig.ExcludeAutoConfigurationsEnvironmentPostProcessor org.springframework.boot.diagnostics.FailureAnalyzer=\ - com.netflix.graphql.dgs.diagnostics.SchemaFailureAnalyzer \ No newline at end of file + com.netflix.graphql.dgs.diagnostics.SchemaFailureAnalyzer,\ + com.netflix.graphql.dgs.diagnostics.DgsMapperFailureAnalyzer \ No newline at end of file diff --git a/graphql-dgs-spring-graphql/src/test/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsHeadersSmokeTest.kt b/graphql-dgs-spring-graphql/src/test/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsHeadersSmokeTest.kt index 746382196..4a3ea6d7e 100644 --- a/graphql-dgs-spring-graphql/src/test/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsHeadersSmokeTest.kt +++ b/graphql-dgs-spring-graphql/src/test/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsHeadersSmokeTest.kt @@ -16,7 +16,6 @@ package com.netflix.graphql.dgs.springgraphql.autoconfig -import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.netflix.graphql.dgs.DgsComponent import com.netflix.graphql.dgs.DgsExecutionResult import com.netflix.graphql.dgs.DgsQuery @@ -37,6 +36,7 @@ import org.springframework.http.MediaType import org.springframework.stereotype.Component import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.post +import tools.jackson.module.kotlin.jacksonMapperBuilder import java.util.concurrent.CompletableFuture @SpringBootTest( @@ -71,7 +71,7 @@ class DgsHeadersSmokeTest { mockMvc .post("/graphql") { - content = jacksonObjectMapper().writeValueAsString(GraphQlRequest(query)) + content = jacksonMapperBuilder().build().writeValueAsString(GraphQlRequest(query)) accept = MediaType.APPLICATION_JSON contentType = MediaType.APPLICATION_JSON }.andExpect { diff --git a/graphql-dgs-spring-graphql/src/test/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQlSmokeTest.kt b/graphql-dgs-spring-graphql/src/test/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQlSmokeTest.kt index b7fbf6e14..f3cf0d2dd 100644 --- a/graphql-dgs-spring-graphql/src/test/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQlSmokeTest.kt +++ b/graphql-dgs-spring-graphql/src/test/kotlin/com/netflix/graphql/dgs/springgraphql/autoconfig/DgsSpringGraphQlSmokeTest.kt @@ -16,7 +16,6 @@ package com.netflix.graphql.dgs.springgraphql.autoconfig -import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.netflix.graphql.dgs.DgsComponent import com.netflix.graphql.dgs.DgsQuery import com.netflix.graphql.dgs.InputArgument @@ -40,6 +39,7 @@ import org.springframework.stereotype.Controller import org.springframework.test.web.servlet.MockMvc import org.springframework.test.web.servlet.post import org.springframework.web.reactive.result.method.annotation.RequestMappingHandlerAdapter +import tools.jackson.module.kotlin.jacksonMapperBuilder import java.util.function.Consumer @SpringBootTest( @@ -82,7 +82,7 @@ class DgsSpringGraphQlSmokeTest { mockMvc .post("/graphql") { - content = jacksonObjectMapper().writeValueAsString(GraphQlRequest(query)) + content = jacksonMapperBuilder().build().writeValueAsString(GraphQlRequest(query)) accept = MediaType.APPLICATION_JSON contentType = MediaType.APPLICATION_JSON }.andExpect { diff --git a/graphql-dgs-subscription-types/dependencies.lock b/graphql-dgs-subscription-types/dependencies.lock index 92164b1c1..8e8172eeb 100644 --- a/graphql-dgs-subscription-types/dependencies.lock +++ b/graphql-dgs-subscription-types/dependencies.lock @@ -27,7 +27,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -50,7 +50,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -98,7 +98,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -130,7 +130,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -162,13 +162,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -251,21 +251,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -282,7 +378,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -310,13 +406,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -348,13 +444,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -386,13 +482,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" diff --git a/graphql-dgs/build.gradle.kts b/graphql-dgs/build.gradle.kts index 8fa5032cc..efadb1b5d 100644 --- a/graphql-dgs/build.gradle.kts +++ b/graphql-dgs/build.gradle.kts @@ -16,6 +16,7 @@ dependencies { api(project(":graphql-error-types")) + api(project(":graphql-dgs-json-api")) api("com.graphql-java:graphql-java") api("com.graphql-java:java-dataloader") api("com.jayway.jsonpath:json-path") @@ -31,13 +32,20 @@ dependencies { compileOnly("com.github.ben-manes.caffeine:caffeine") compileOnly("org.jspecify:jspecify") - implementation("com.fasterxml.jackson.module:jackson-module-kotlin") - implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") + compileOnly("tools.jackson.core:jackson-databind") + compileOnly("tools.jackson.module:jackson-module-kotlin") + + // Jackson 2 — compileOnly for deprecated backward-compat fields in BaseDgsQueryExecutor + compileOnly("com.fasterxml.jackson.core:jackson-databind") + compileOnly("com.fasterxml.jackson.module:jackson-module-kotlin") + compileOnly("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") implementation("com.apollographql.federation:federation-graphql-java-support") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor") implementation("io.micrometer:context-propagation") + testImplementation("tools.jackson.core:jackson-databind") + testImplementation("tools.jackson.module:jackson-module-kotlin") testImplementation("org.springframework.security:spring-security-core") testImplementation("io.projectreactor:reactor-core") testImplementation("io.projectreactor:reactor-test") diff --git a/graphql-dgs/dependencies.lock b/graphql-dgs/dependencies.lock index 6962cafed..7361a2f54 100644 --- a/graphql-dgs/dependencies.lock +++ b/graphql-dgs/dependencies.lock @@ -10,10 +10,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -23,6 +30,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -32,6 +40,9 @@ "com.apollographql.federation:federation-graphql-java-support": { "locked": "5.3.0" }, + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.20.1" + }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { "locked": "2.20.1" }, @@ -51,10 +62,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -76,6 +94,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -87,7 +106,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.jspecify:jspecify": { "locked": "1.0.0" @@ -103,9 +122,24 @@ }, "org.springframework:spring-web": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "compileOnlyDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -120,18 +154,18 @@ }, "org.springframework.security:spring-security-core": { "locked": "7.0.0" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "implementationDependenciesMetadata": { "com.apollographql.federation:federation-graphql-java-support": { "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-error-types" @@ -142,10 +176,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -161,6 +202,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -172,7 +214,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -206,10 +248,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -219,6 +268,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -228,6 +278,9 @@ "com.apollographql.federation:federation-graphql-java-support": { "locked": "5.3.0" }, + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.20.1" + }, "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { "locked": "2.20.1" }, @@ -247,10 +300,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -272,6 +332,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -283,7 +344,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.jspecify:jspecify": { "locked": "1.0.0" @@ -308,9 +369,24 @@ }, "org.springframework:spring-web": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "jmhCompileOnlyDependenciesMetadata": { + "com.fasterxml.jackson.core:jackson-databind": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { + "locked": "2.20.1" + }, + "com.fasterxml.jackson.module:jackson-module-kotlin": { + "locked": "2.20.1" + }, "com.github.ben-manes.caffeine:caffeine": { "locked": "3.2.3" }, @@ -325,18 +401,18 @@ }, "org.springframework.security:spring-security-core": { "locked": "7.0.0" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "jmhImplementationDependenciesMetadata": { "com.apollographql.federation:federation-graphql-java-support": { "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-error-types" @@ -347,10 +423,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -366,6 +449,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -377,7 +461,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -402,12 +486,6 @@ "com.apollographql.federation:federation-graphql-java-support": { "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-error-types" @@ -421,10 +499,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -436,7 +521,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "locked": "3.8.0" @@ -449,6 +534,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -464,9 +550,10 @@ }, "org.jetbrains:annotations": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -488,6 +575,7 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" @@ -503,6 +591,12 @@ }, "org.springframework:spring-web": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "kotlinBouncyCastleConfiguration": { @@ -558,33 +652,123 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { "com.apollographql.federation:federation-graphql-java-support": { "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-error-types" @@ -595,10 +779,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -614,6 +805,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -626,12 +818,14 @@ }, "org.jetbrains:annotations": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" @@ -652,12 +846,6 @@ "com.apollographql.federation:federation-graphql-java-support": { "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-error-types" @@ -671,10 +859,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -686,7 +881,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "locked": "3.8.0" @@ -699,6 +894,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -713,7 +909,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -735,18 +931,18 @@ }, "org.springframework:spring-web": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "testImplementationDependenciesMetadata": { "com.apollographql.federation:federation-graphql-java-support": { "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-error-types" @@ -760,10 +956,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -775,7 +978,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "locked": "3.8.0" @@ -788,6 +991,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -802,7 +1006,7 @@ "locked": "1.10.2" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -824,18 +1028,18 @@ }, "org.springframework:spring-web": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } }, "testRuntimeClasspath": { "com.apollographql.federation:federation-graphql-java-support": { "locked": "5.3.0" }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.20.1" - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.20.1" - }, "com.graphql-java:graphql-java": { "firstLevelTransitive": [ "com.netflix.graphql.dgs:graphql-error-types" @@ -849,10 +1053,17 @@ "locked": "6.0.0" }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api" + ], + "locked": "3.0.0" + }, + "com.netflix.graphql.dgs:graphql-dgs-json-api": { + "project": true }, "com.netflix.graphql.dgs:graphql-dgs-platform": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "project": true @@ -864,7 +1075,7 @@ "locked": "1.2.0" }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "io.projectreactor:reactor-core": { "locked": "3.8.0" @@ -877,6 +1088,7 @@ }, "org.jetbrains.kotlin:kotlin-stdlib": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.2.20" @@ -892,9 +1104,10 @@ }, "org.jetbrains:annotations": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -907,6 +1120,7 @@ }, "org.slf4j:slf4j-api": { "firstLevelTransitive": [ + "com.netflix.graphql.dgs:graphql-dgs-json-api", "com.netflix.graphql.dgs:graphql-error-types" ], "locked": "2.0.17" @@ -922,6 +1136,12 @@ }, "org.springframework:spring-web": { "locked": "7.0.1" + }, + "tools.jackson.core:jackson-databind": { + "locked": "3.0.2" + }, + "tools.jackson.module:jackson-module-kotlin": { + "locked": "3.0.2" } } } \ No newline at end of file diff --git a/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/BaseDgsQueryExecutor.kt b/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/BaseDgsQueryExecutor.kt index a5c906f8f..38f8be09f 100644 --- a/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/BaseDgsQueryExecutor.kt +++ b/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/BaseDgsQueryExecutor.kt @@ -16,16 +16,10 @@ package com.netflix.graphql.dgs.internal -import com.fasterxml.jackson.databind.DeserializationFeature -import com.fasterxml.jackson.databind.ObjectMapper -import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule -import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.jayway.jsonpath.Configuration import com.jayway.jsonpath.JsonPath import com.jayway.jsonpath.Option import com.jayway.jsonpath.ParseContext -import com.jayway.jsonpath.spi.json.JacksonJsonProvider -import com.jayway.jsonpath.spi.mapper.JacksonMappingProvider import com.netflix.graphql.dgs.DgsExecutionResult import com.netflix.graphql.dgs.context.DgsContext import com.netflix.graphql.dgs.exceptions.DgsBadRequestException @@ -51,21 +45,56 @@ import java.util.concurrent.CompletionException object BaseDgsQueryExecutor { private val logger: Logger = LoggerFactory.getLogger(BaseDgsQueryExecutor::class.java) - val objectMapper: ObjectMapper = - jacksonObjectMapper() - .registerModule(JavaTimeModule()) - .enable(DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE) - .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) - - val parseContext: ParseContext = - JsonPath.using( - Configuration - .builder() - .jsonProvider(JacksonJsonProvider(jacksonObjectMapper())) - .mappingProvider(JacksonMappingProvider(objectMapper)) - .build() - .addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL), - ) + private val jackson2ObjectMapper: com.fasterxml.jackson.databind.ObjectMapper by lazy { + try { + com.fasterxml.jackson.module.kotlin + .jacksonObjectMapper() + .registerModule( + com.fasterxml.jackson.datatype.jsr310 + .JavaTimeModule(), + ).enable(com.fasterxml.jackson.databind.DeserializationFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE) + .disable(com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + } catch (e: NoClassDefFoundError) { + throw IllegalStateException( + "BaseDgsQueryExecutor.objectMapper requires Jackson 2 on the classpath. " + + "Add the graphql-dgs-jackson2 module or use DgsJsonMapper instead.", + e, + ) + } + } + + @Deprecated( + message = "Use DgsJsonMapper instead. This field requires Jackson 2 on the classpath.", + level = DeprecationLevel.HIDDEN, + ) + val objectMapper: com.fasterxml.jackson.databind.ObjectMapper by lazy { jackson2ObjectMapper } + + @Deprecated( + message = "Use DgsJsonMapper.jsonPathConfiguration() instead. This field requires Jackson 2 on the classpath.", + level = DeprecationLevel.HIDDEN, + ) + val parseContext: ParseContext by lazy { + try { + JsonPath.using( + Configuration + .builder() + .jsonProvider( + com.jayway.jsonpath.spi.json + .JacksonJsonProvider(jackson2ObjectMapper), + ).mappingProvider( + com.jayway.jsonpath.spi.mapper + .JacksonMappingProvider(jackson2ObjectMapper), + ).build() + .addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL), + ) + } catch (e: NoClassDefFoundError) { + throw IllegalStateException( + "BaseDgsQueryExecutor.parseContext requires Jackson 2 on the classpath. " + + "Add the graphql-dgs-jackson2 module or use DgsJsonMapper instead.", + e, + ) + } + } fun baseExecute( @Language("graphql") query: String?, diff --git a/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/Jackson3DgsJsonMapper.kt b/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/Jackson3DgsJsonMapper.kt new file mode 100644 index 000000000..fd8100783 --- /dev/null +++ b/graphql-dgs/src/main/kotlin/com/netflix/graphql/dgs/internal/Jackson3DgsJsonMapper.kt @@ -0,0 +1,63 @@ +/* + * Copyright 2026 Netflix, Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package com.netflix.graphql.dgs.internal + +import com.jayway.jsonpath.Configuration +import com.jayway.jsonpath.Option +import com.jayway.jsonpath.spi.json.Jackson3JsonProvider +import com.jayway.jsonpath.spi.mapper.Jackson3MappingProvider +import com.netflix.graphql.dgs.json.DgsJsonMapper +import tools.jackson.databind.DeserializationFeature +import tools.jackson.databind.cfg.EnumFeature +import tools.jackson.databind.json.JsonMapper +import tools.jackson.module.kotlin.KotlinModule + +/** + * Jackson 3 implementation of [DgsJsonMapper]. + * This is the default implementation used when Jackson 3 is on the classpath. + * Note: Jackson 3 has built-in Java time support, so no separate JavaTimeModule is needed. + */ +class Jackson3DgsJsonMapper : DgsJsonMapper { + private val mapper: JsonMapper = + JsonMapper + .builder() + .addModule(KotlinModule.Builder().build()) + .enable(EnumFeature.READ_UNKNOWN_ENUM_VALUES_USING_DEFAULT_VALUE) + .disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES) + .disable(DeserializationFeature.FAIL_ON_NULL_FOR_PRIMITIVES) + .build() + + override fun writeValueAsString(value: Any): String = mapper.writeValueAsString(value) + + override fun readValue( + content: String, + clazz: Class, + ): T = mapper.readValue(content, clazz) + + override fun convertValue( + fromValue: Any, + toClass: Class, + ): T = mapper.convertValue(fromValue, toClass) + + override fun jsonPathConfiguration(): Configuration = + Configuration + .builder() + .jsonProvider(Jackson3JsonProvider(mapper)) + .mappingProvider(Jackson3MappingProvider(mapper)) + .build() + .addOptions(Option.DEFAULT_PATH_LEAF_TO_NULL) +} diff --git a/graphql-error-types/dependencies.lock b/graphql-error-types/dependencies.lock index 810c3c6c7..4572bef2f 100644 --- a/graphql-error-types/dependencies.lock +++ b/graphql-error-types/dependencies.lock @@ -24,7 +24,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -46,7 +46,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -88,7 +88,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -119,7 +119,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.openjdk.jmh:jmh-core": { "locked": "1.37" @@ -142,13 +142,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -228,21 +228,117 @@ "com.pinterest.ktlint:ktlint-cli-reporter-baseline": { "locked": "1.5.0" }, + "com.pinterest.ktlint:ktlint-cli-reporter-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintReporter": { "io.github.detekt.sarif4k:sarif4k": { "locked": "0.5.0" }, + "io.github.detekt.sarif4k:sarif4k-jvm": { + "locked": "0.5.0" + }, "io.github.oshai:kotlin-logging": { "locked": "5.1.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "ktlintRuleset": { + "com.pinterest.ktlint:ktlint-cli-ruleset-core": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-logger": { + "locked": "1.5.0" + }, + "com.pinterest.ktlint:ktlint-rule-engine-core": { + "locked": "1.5.0" + }, "com.pinterest.ktlint:ktlint-ruleset-standard": { "locked": "1.5.0" + }, + "dev.drewhamilton.poko:poko-annotations": { + "locked": "0.18.0" + }, + "dev.drewhamilton.poko:poko-annotations-jvm": { + "locked": "0.18.0" + }, + "io.github.oshai:kotlin-logging-jvm": { + "locked": "7.0.3" + }, + "org.ec4j.core:ec4j-core": { + "locked": "1.1.0" + }, + "org.jetbrains.kotlin:kotlin-compiler-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-daemon-embeddable": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-script-runtime": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "2.2.20" + }, + "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { + "locked": "1.10.2" + }, + "org.jetbrains:annotations": { + "locked": "13.0" } }, "runtimeClasspath": { @@ -256,7 +352,7 @@ "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.slf4j:slf4j-api": { "locked": "2.0.17" @@ -275,13 +371,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -304,13 +400,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" @@ -333,13 +429,13 @@ "project": true }, "io.mockk:mockk": { - "locked": "1.14.6" + "locked": "1.14.9" }, "org.jetbrains.kotlin:kotlin-stdlib": { "locked": "2.2.20" }, "org.jetbrains:annotations": { - "locked": "26.0.2-1" + "locked": "26.1.0" }, "org.junit.jupiter:junit-jupiter": { "locked": "6.0.1" diff --git a/settings.gradle.kts b/settings.gradle.kts index 3490329e9..c9b12288f 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -27,6 +27,8 @@ gradleEnterprise { rootProject.name = "dgs-framework" include("graphql-dgs") +include("graphql-dgs-json-api") +include("graphql-dgs-jackson2") include("dgs-starter") include("dgs-starter-test") include("graphql-error-types") @@ -46,3 +48,6 @@ include("graphql-dgs-spring-graphql-starter") include("graphql-dgs-spring-graphql-starter-test") include("graphql-dgs-spring-graphql-example-java") include("graphql-dgs-spring-graphql-example-java-webflux") +include("graphql-dgs-example-jackson3-only") +include("graphql-dgs-example-jackson2-only") +include("graphql-dgs-example-jackson-both")