From d43bca76c338cba77924a461d4c4664d347681e0 Mon Sep 17 00:00:00 2001 From: Patrick Strawderman Date: Thu, 1 Aug 2024 12:29:04 -0700 Subject: [PATCH] Remove custom VirtualThreadTaskExecutor Switch to using the VirtualThreadTaskExecutor implementation from Spring, and existing conditional annotations from Spring Boot. --- graphql-dgs-example-java/dependencies.lock | 6 +- .../dependencies.lock | 16 +- .../dgs/autoconfig/DgsAutoConfiguration.kt | 12 +- .../autoconfig/DgsConfigurationProperties.kt | 1 - .../DgsDataloaderConfigurationProperties.kt | 1 - .../DgsInputArgumentConfiguration.kt | 8 +- .../dependencies.lock | 6 +- .../dependencies.lock | 6 +- graphql-dgs/build.gradle.kts | 11 - graphql-dgs/dependencies.lock | 2318 +---------------- .../VirtualThreadTaskExecutor.java | 79 - .../dgs/conditionals/Java21Condition.java | 34 - 12 files changed, 145 insertions(+), 2353 deletions(-) delete mode 100644 graphql-dgs/src/main/java21/com.netflix.graphql.dgs.internal.VirtualThreadTaskExecutor/VirtualThreadTaskExecutor.java delete mode 100644 graphql-dgs/src/main/java21/com/netflix/graphql/dgs/conditionals/Java21Condition.java diff --git a/graphql-dgs-example-java/dependencies.lock b/graphql-dgs-example-java/dependencies.lock index ba874dd03..62017d8c3 100644 --- a/graphql-dgs-example-java/dependencies.lock +++ b/graphql-dgs-example-java/dependencies.lock @@ -1955,7 +1955,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16", + "locked": "1.7.17", "transitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ] @@ -3514,7 +3514,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16", + "locked": "1.7.17", "transitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ] @@ -6105,7 +6105,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16", + "locked": "1.7.17", "transitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ] diff --git a/graphql-dgs-spring-boot-micrometer/dependencies.lock b/graphql-dgs-spring-boot-micrometer/dependencies.lock index 97be674be..ad2913f73 100644 --- a/graphql-dgs-spring-boot-micrometer/dependencies.lock +++ b/graphql-dgs-spring-boot-micrometer/dependencies.lock @@ -273,7 +273,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16" + "locked": "1.7.17" }, "commons-codec:commons-codec": { "locked": "1.16.1" @@ -984,7 +984,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16" + "locked": "1.7.17" }, "commons-codec:commons-codec": { "locked": "1.16.1" @@ -1323,7 +1323,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16" + "locked": "1.7.17" }, "commons-codec:commons-codec": { "locked": "1.16.1" @@ -1907,7 +1907,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16" + "locked": "1.7.17" }, "com.vaadin.external.google:android-json": { "locked": "0.0.20131108.vaadin1", @@ -3052,7 +3052,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16" + "locked": "1.7.17" }, "commons-codec:commons-codec": { "locked": "1.16.1" @@ -3467,7 +3467,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16" + "locked": "1.7.17" }, "com.vaadin.external.google:android-json": { "locked": "0.0.20131108.vaadin1", @@ -4152,7 +4152,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16" + "locked": "1.7.17" }, "com.vaadin.external.google:android-json": { "locked": "0.0.20131108.vaadin1", @@ -4840,7 +4840,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16" + "locked": "1.7.17" }, "com.vaadin.external.google:android-json": { "locked": "0.0.20131108.vaadin1", diff --git a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt index aa80a4604..832f62d14 100644 --- a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt +++ b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsAutoConfiguration.kt @@ -23,7 +23,6 @@ import com.netflix.graphql.dgs.DgsDataLoaderOptionsProvider import com.netflix.graphql.dgs.DgsDefaultPreparsedDocumentProvider import com.netflix.graphql.dgs.DgsFederationResolver import com.netflix.graphql.dgs.DgsQueryExecutor -import com.netflix.graphql.dgs.conditionals.ConditionalOnJava21 import com.netflix.graphql.dgs.context.DgsCustomContextBuilder import com.netflix.graphql.dgs.context.DgsCustomContextBuilderWithRequest import com.netflix.graphql.dgs.context.GraphQLContextContributor @@ -59,11 +58,13 @@ import org.springframework.beans.factory.annotation.Qualifier import org.springframework.boot.autoconfigure.AutoConfiguration import org.springframework.boot.autoconfigure.ImportAutoConfiguration import org.springframework.boot.autoconfigure.condition.ConditionalOnClass +import org.springframework.boot.autoconfigure.condition.ConditionalOnJava import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingClass import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty import org.springframework.boot.autoconfigure.jackson.JacksonAutoConfiguration import org.springframework.boot.context.properties.EnableConfigurationProperties +import org.springframework.boot.system.JavaVersion import org.springframework.context.ApplicationContext import org.springframework.context.annotation.Bean import org.springframework.core.DefaultParameterNameDiscoverer @@ -71,6 +72,7 @@ import org.springframework.core.PriorityOrdered import org.springframework.core.annotation.Order import org.springframework.core.env.Environment import org.springframework.core.task.AsyncTaskExecutor +import org.springframework.core.task.VirtualThreadTaskExecutor import org.springframework.http.HttpHeaders import org.springframework.mock.web.MockHttpServletRequest import org.springframework.web.context.request.NativeWebRequest @@ -84,7 +86,6 @@ import java.util.concurrent.ScheduledExecutorService * Framework auto configuration based on open source Spring only, without Netflix integrations. * This does NOT have logging, tracing, metrics and security integration. */ -@Suppress("SpringJavaInjectionPointsAutowiringInspection") @AutoConfiguration(afterName = ["org.springframework.boot.autoconfigure.task.TaskSchedulingAutoConfiguration"]) @EnableConfigurationProperties(DgsConfigurationProperties::class, DgsDataloaderConfigurationProperties::class) @ImportAutoConfiguration(classes = [JacksonAutoConfiguration::class, DgsInputArgumentConfiguration::class]) @@ -364,13 +365,16 @@ open class DgsAutoConfiguration( */ @Bean @Qualifier("dgsAsyncTaskExecutor") - @ConditionalOnJava21 + @ConditionalOnJava(JavaVersion.TWENTY_ONE) @ConditionalOnMissingBean(name = ["dgsAsyncTaskExecutor"]) @ConditionalOnProperty(name = ["dgs.graphql.virtualthreads.enabled"], havingValue = "true", matchIfMissing = false) open fun virtualThreadsTaskExecutor(contextRegistry: ContextRegistry): AsyncTaskExecutor { LOG.info("Enabling virtual threads for DGS") val contextSnapshotFactory = ContextSnapshotFactory.builder().contextRegistry(contextRegistry).build() - return VirtualThreadTaskExecutor(contextSnapshotFactory) + val executor = VirtualThreadTaskExecutor("dgs-virtual-thread-") + return AsyncTaskExecutor { task -> + executor.submit(contextSnapshotFactory.captureAll().wrap(task)) + } } @Bean diff --git a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsConfigurationProperties.kt b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsConfigurationProperties.kt index 2755f6aed..7e5021b55 100644 --- a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsConfigurationProperties.kt +++ b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsConfigurationProperties.kt @@ -24,7 +24,6 @@ import org.springframework.boot.context.properties.bind.DefaultValue * Configuration properties for DGS framework. */ @ConfigurationProperties(prefix = DgsConfigurationProperties.PREFIX) -@Suppress("ConfigurationProperties") data class DgsConfigurationProperties( /** Location of the GraphQL schema files. */ @DefaultValue(DEFAULT_SCHEMA_LOCATION) val schemaLocations: List, diff --git a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsDataloaderConfigurationProperties.kt b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsDataloaderConfigurationProperties.kt index 74def7b94..f9ad15b9c 100644 --- a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsDataloaderConfigurationProperties.kt +++ b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsDataloaderConfigurationProperties.kt @@ -24,7 +24,6 @@ import java.time.Duration * Configuration properties for DGS framework. */ @ConfigurationProperties(prefix = DgsDataloaderConfigurationProperties.DATALOADER_PREFIX) -@Suppress("ConfigurationProperties") data class DgsDataloaderConfigurationProperties( @DefaultValue("false") val tickerModeEnabled: Boolean, @DefaultValue(DATALOADER_DEFAULT_SCHEDULE_DURATION) val scheduleDuration: Duration diff --git a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsInputArgumentConfiguration.kt b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsInputArgumentConfiguration.kt index e117f76aa..e0b03f882 100644 --- a/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsInputArgumentConfiguration.kt +++ b/graphql-dgs-spring-boot-oss-autoconfigure/src/main/kotlin/com/netflix/graphql/dgs/autoconfig/DgsInputArgumentConfiguration.kt @@ -18,14 +18,18 @@ package com.netflix.graphql.dgs.autoconfig import com.netflix.graphql.dgs.internal.DefaultInputObjectMapper import com.netflix.graphql.dgs.internal.InputObjectMapper -import com.netflix.graphql.dgs.internal.method.* +import com.netflix.graphql.dgs.internal.method.ArgumentResolver +import com.netflix.graphql.dgs.internal.method.ContinuationArgumentResolver +import com.netflix.graphql.dgs.internal.method.DataFetchingEnvironmentArgumentResolver +import com.netflix.graphql.dgs.internal.method.FallbackEnvironmentArgumentResolver +import com.netflix.graphql.dgs.internal.method.InputArgumentResolver import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import org.springframework.core.Ordered import org.springframework.core.annotation.Order -@Configuration +@Configuration(proxyBeanMethods = false) open class DgsInputArgumentConfiguration { @Bean @Order(Ordered.HIGHEST_PRECEDENCE) diff --git a/graphql-dgs-spring-graphql-example-java-webflux/dependencies.lock b/graphql-dgs-spring-graphql-example-java-webflux/dependencies.lock index 1026e975e..300ce2f0b 100644 --- a/graphql-dgs-spring-graphql-example-java-webflux/dependencies.lock +++ b/graphql-dgs-spring-graphql-example-java-webflux/dependencies.lock @@ -2403,7 +2403,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16", + "locked": "1.7.17", "transitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ] @@ -3907,7 +3907,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16", + "locked": "1.7.17", "transitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ] @@ -6556,7 +6556,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16", + "locked": "1.7.17", "transitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ] diff --git a/graphql-dgs-spring-graphql-example-java/dependencies.lock b/graphql-dgs-spring-graphql-example-java/dependencies.lock index f1093c079..9613ef890 100644 --- a/graphql-dgs-spring-graphql-example-java/dependencies.lock +++ b/graphql-dgs-spring-graphql-example-java/dependencies.lock @@ -2541,7 +2541,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16", + "locked": "1.7.17", "transitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ] @@ -4127,7 +4127,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16", + "locked": "1.7.17", "transitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ] @@ -7034,7 +7034,7 @@ ] }, "com.netflix.spectator:spectator-api": { - "locked": "1.7.16", + "locked": "1.7.17", "transitive": [ "com.netflix.graphql.dgs:graphql-dgs-spring-boot-micrometer" ] diff --git a/graphql-dgs/build.gradle.kts b/graphql-dgs/build.gradle.kts index a9755186f..bbb4dd398 100644 --- a/graphql-dgs/build.gradle.kts +++ b/graphql-dgs/build.gradle.kts @@ -13,14 +13,6 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -plugins { - id("me.champeau.mrjar") -} - -multiRelease { - targetVersions(17, 21) -} - dependencies { api(project(":graphql-error-types")) @@ -34,7 +26,6 @@ dependencies { implementation("org.springframework:spring-web") implementation("org.springframework:spring-context") - "java21Implementation"("org.springframework:spring-context") compileOnly("org.springframework.security:spring-security-core") compileOnly("io.projectreactor:reactor-core") @@ -47,8 +38,6 @@ dependencies { implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core") implementation("org.jetbrains.kotlinx:kotlinx-coroutines-reactor") implementation("io.micrometer:context-propagation") - "java21Implementation"("io.micrometer:context-propagation:1.1.1") //Version should come from our BOM, but this doesn't work with the multi release JAR plugin. - testImplementation("org.springframework.security:spring-security-core") testImplementation("io.projectreactor:reactor-core") diff --git a/graphql-dgs/dependencies.lock b/graphql-dgs/dependencies.lock index e43307c87..195694b22 100644 --- a/graphql-dgs/dependencies.lock +++ b/graphql-dgs/dependencies.lock @@ -9,25 +9,63 @@ }, "apiDependenciesMetadata": { "com.graphql-java:graphql-java": { - "locked": "22.1" + "locked": "22.1", + "transitive": [ + "com.netflix.graphql.dgs:graphql-dgs-mocking", + "com.netflix.graphql.dgs:graphql-dgs-platform", + "com.netflix.graphql.dgs:graphql-error-types" + ] }, "com.graphql-java:java-dataloader": { - "locked": "3.3.0" + "locked": "3.3.0", + "transitive": [ + "com.graphql-java:graphql-java", + "com.netflix.graphql.dgs:graphql-dgs-platform" + ] }, "com.jayway.jsonpath:json-path": { - "locked": "2.9.0" + "locked": "2.9.0", + "transitive": [ + "com.netflix.graphql.dgs:graphql-dgs-platform" + ] }, "com.netflix.graphql.dgs:graphql-dgs-mocking": { - "project": true + "project": true, + "transitive": [ + "com.netflix.graphql.dgs:graphql-dgs-platform" + ] }, "com.netflix.graphql.dgs:graphql-dgs-platform": { - "project": true + "project": true, + "transitive": [ + "com.netflix.graphql.dgs:graphql-dgs-mocking", + "com.netflix.graphql.dgs:graphql-error-types" + ] }, "com.netflix.graphql.dgs:graphql-error-types": { - "project": true + "project": true, + "transitive": [ + "com.netflix.graphql.dgs:graphql-dgs-platform" + ] }, "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25" + "locked": "1.9.25", + "transitive": [ + "com.netflix.graphql.dgs:graphql-dgs-mocking", + "com.netflix.graphql.dgs:graphql-error-types" + ] + }, + "org.reactivestreams:reactive-streams": { + "locked": "1.0.4", + "transitive": [ + "com.graphql-java:graphql-java" + ] + }, + "org.slf4j:slf4j-api": { + "locked": "2.0.13", + "transitive": [ + "com.graphql-java:java-dataloader" + ] } }, "compileClasspath": { @@ -490,2171 +528,153 @@ "com.netflix.graphql.dgs:graphql-dgs-mocking": { "project": true, "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.netflix.graphql.dgs:graphql-dgs-platform": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-error-types" - ] - }, - "com.netflix.graphql.dgs:graphql-error-types": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "io.micrometer:context-propagation": { - "locked": "1.1.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "io.micrometer:micrometer-commons": { - "locked": "1.13.2", - "transitive": [ - "io.micrometer:micrometer-observation" - ] - }, - "io.micrometer:micrometer-observation": { - "locked": "1.13.2", - "transitive": [ - "org.springframework:spring-context", - "org.springframework:spring-web" - ] - }, - "io.projectreactor:reactor-core": { - "locked": "3.6.8", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "org.jetbrains.kotlin:kotlin-reflect": { - "locked": "1.9.25", - "transitive": [ - "com.fasterxml.jackson.module:jackson-module-kotlin" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-error-types", - "org.jetbrains.kotlin:kotlin-reflect", - "org.jetbrains.kotlin:kotlin-stdlib-common", - "org.jetbrains.kotlinx:atomicfu", - "org.jetbrains.kotlinx:kotlinx-coroutines-core", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-stdlib", - "org.jetbrains.kotlinx:atomicfu" - ] - }, - "org.jetbrains.kotlinx:atomicfu": { - "locked": "0.23.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-core" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-bom": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom" - ] - }, - "org.reactivestreams:reactive-streams": { - "locked": "1.0.4", - "transitive": [ - "com.graphql-java:graphql-java", - "io.projectreactor:reactor-core", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive" - ] - }, - "org.slf4j:slf4j-api": { - "locked": "2.0.13", - "transitive": [ - "com.apollographql.federation:federation-graphql-java-support", - "com.graphql-java:java-dataloader" - ] - }, - "org.springframework:spring-aop": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-beans": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-aop", - "org.springframework:spring-context", - "org.springframework:spring-web" - ] - }, - "org.springframework:spring-context": { - "locked": "6.1.11" - }, - "org.springframework:spring-core": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-aop", - "org.springframework:spring-beans", - "org.springframework:spring-context", - "org.springframework:spring-expression", - "org.springframework:spring-web" - ] - }, - "org.springframework:spring-expression": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-jcl": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-core" - ] - }, - "org.springframework:spring-web": { - "locked": "6.1.11" - } - }, - "java21ApiDependenciesMetadata": { - "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25" - } - }, - "java21CompileClasspath": { - "io.micrometer:context-propagation": { - "locked": "1.1.1" - }, - "io.micrometer:micrometer-commons": { - "locked": "1.13.2", - "transitive": [ - "io.micrometer:micrometer-observation" - ] - }, - "io.micrometer:micrometer-observation": { - "locked": "1.13.2", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25" - }, - "org.jetbrains:annotations": { - "locked": "13.0", - "transitive": [ - "org.jetbrains.kotlin:kotlin-stdlib" - ] - }, - "org.springframework:spring-aop": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-beans": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-aop", - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-context": { - "locked": "6.1.11" - }, - "org.springframework:spring-core": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-aop", - "org.springframework:spring-beans", - "org.springframework:spring-context", - "org.springframework:spring-expression" - ] - }, - "org.springframework:spring-expression": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-jcl": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-core" - ] - } - }, - "java21ImplementationDependenciesMetadata": { - "io.micrometer:context-propagation": { - "locked": "1.1.1" - }, - "io.micrometer:micrometer-commons": { - "locked": "1.13.2", - "transitive": [ - "io.micrometer:micrometer-observation" - ] - }, - "io.micrometer:micrometer-observation": { - "locked": "1.13.2", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25" - }, - "org.springframework:spring-aop": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-beans": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-aop", - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-context": { - "locked": "6.1.11" - }, - "org.springframework:spring-core": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-aop", - "org.springframework:spring-beans", - "org.springframework:spring-context", - "org.springframework:spring-expression" - ] - }, - "org.springframework:spring-expression": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-jcl": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-core" - ] - } - }, - "java21RuntimeClasspath": { - "io.micrometer:context-propagation": { - "locked": "1.1.1" - }, - "io.micrometer:micrometer-commons": { - "locked": "1.13.2", - "transitive": [ - "io.micrometer:micrometer-observation" - ] - }, - "io.micrometer:micrometer-observation": { - "locked": "1.13.2", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25" - }, - "org.jetbrains:annotations": { - "locked": "13.0", - "transitive": [ - "org.jetbrains.kotlin:kotlin-stdlib" - ] - }, - "org.springframework:spring-aop": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-beans": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-aop", - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-context": { - "locked": "6.1.11" - }, - "org.springframework:spring-core": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-aop", - "org.springframework:spring-beans", - "org.springframework:spring-context", - "org.springframework:spring-expression" - ] - }, - "org.springframework:spring-expression": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-jcl": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-core" - ] - } - }, - "java21TestCompileClasspath": { - "ch.qos.logback:logback-classic": { - "locked": "1.5.6", - "transitive": [ - "org.springframework.boot:spring-boot-starter-logging" - ] - }, - "ch.qos.logback:logback-core": { - "locked": "1.5.6", - "transitive": [ - "ch.qos.logback:logback-classic" - ] - }, - "com.apollographql.federation:federation-graphql-java-support": { - "locked": "5.0.0", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.fasterxml.jackson.core:jackson-annotations": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.core:jackson-databind", - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson.module:jackson-module-kotlin", - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.core:jackson-databind", - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson.module:jackson-module-kotlin", - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson:jackson-bom": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.core:jackson-annotations", - "com.fasterxml.jackson.core:jackson-core", - "com.fasterxml.jackson.core:jackson-databind", - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson.module:jackson-module-kotlin" - ] - }, - "com.google.protobuf:protobuf-java": { - "locked": "4.26.1", - "transitive": [ - "com.apollographql.federation:federation-graphql-java-support" - ] - }, - "com.graphql-java:graphql-java": { - "locked": "22.1", - "transitive": [ - "com.apollographql.federation:federation-graphql-java-support", - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-dgs-platform", - "com.netflix.graphql.dgs:graphql-error-types" - ] - }, - "com.graphql-java:graphql-java-extended-scalars": { - "locked": "22.0", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.graphql-java:java-dataloader": { - "locked": "3.3.0", - "transitive": [ - "com.graphql-java:graphql-java", - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.jayway.jsonpath:json-path": { - "locked": "2.9.0", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "com.netflix.graphql.dgs:graphql-dgs-mocking": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.netflix.graphql.dgs:graphql-dgs-platform": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-error-types" - ] - }, - "com.netflix.graphql.dgs:graphql-error-types": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.vaadin.external.google:android-json": { - "locked": "0.0.20131108.vaadin1", - "transitive": [ - "org.skyscreamer:jsonassert" - ] - }, - "io.micrometer:context-propagation": { - "locked": "1.1.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "io.micrometer:micrometer-commons": { - "locked": "1.13.2", - "transitive": [ - "io.micrometer:micrometer-observation" - ] - }, - "io.micrometer:micrometer-observation": { - "locked": "1.13.2", - "transitive": [ - "org.springframework.security:spring-security-core", - "org.springframework:spring-context", - "org.springframework:spring-web" - ] - }, - "io.mockk:mockk": { - "locked": "1.13.12" - }, - "io.mockk:mockk-agent": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-jvm" - ] - }, - "io.mockk:mockk-agent-api": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-agent-jvm", - "io.mockk:mockk-jvm" - ] - }, - "io.mockk:mockk-agent-api-jvm": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-agent-api" - ] - }, - "io.mockk:mockk-agent-jvm": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-agent" - ] - }, - "io.mockk:mockk-core": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-jvm" - ] - }, - "io.mockk:mockk-core-jvm": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-core" - ] - }, - "io.mockk:mockk-dsl": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-jvm" - ] - }, - "io.mockk:mockk-dsl-jvm": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-dsl" - ] - }, - "io.mockk:mockk-jvm": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk" - ] - }, - "io.projectreactor:reactor-core": { - "locked": "3.6.8", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "io.projectreactor:reactor-test", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "io.projectreactor:reactor-test": { - "locked": "3.6.8", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "jakarta.activation:jakarta.activation-api": { - "locked": "2.1.3", - "transitive": [ - "jakarta.xml.bind:jakarta.xml.bind-api" - ] - }, - "jakarta.annotation:jakarta.annotation-api": { - "locked": "2.1.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter" - ] - }, - "jakarta.xml.bind:jakarta.xml.bind-api": { - "locked": "4.0.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "net.bytebuddy:byte-buddy": { - "locked": "1.14.18", - "transitive": [ - "io.mockk:mockk-agent-jvm", - "org.assertj:assertj-core", - "org.mockito:mockito-core" - ] - }, - "net.bytebuddy:byte-buddy-agent": { - "locked": "1.14.18", - "transitive": [ - "io.mockk:mockk-agent-jvm", - "org.mockito:mockito-core" - ] - }, - "net.minidev:accessors-smart": { - "locked": "2.5.1", - "transitive": [ - "net.minidev:json-smart" - ] - }, - "net.minidev:json-smart": { - "locked": "2.5.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.23.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "org.apache.logging.log4j:log4j-to-slf4j" - ] - }, - "org.apache.logging.log4j:log4j-to-slf4j": { - "locked": "2.23.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "org.springframework.boot:spring-boot-starter-logging" - ] - }, - "org.apiguardian:apiguardian-api": { - "locked": "1.1.2", - "transitive": [ - "org.junit.jupiter:junit-jupiter-api", - "org.junit.jupiter:junit-jupiter-params", - "org.junit.platform:junit-platform-commons" - ] - }, - "org.assertj:assertj-core": { - "locked": "3.25.3", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.awaitility:awaitility": { - "locked": "4.2.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.hamcrest:hamcrest": { - "locked": "2.2", - "transitive": [ - "org.awaitility:awaitility", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.jetbrains.kotlin:kotlin-reflect": { - "locked": "1.9.25", - "transitive": [ - "com.fasterxml.jackson.module:jackson-module-kotlin" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-error-types", - "io.mockk:mockk-agent-api-jvm", - "io.mockk:mockk-agent-jvm", - "io.mockk:mockk-core-jvm", - "io.mockk:mockk-dsl-jvm", - "io.mockk:mockk-jvm", - "org.jetbrains.kotlin:kotlin-reflect", - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-bom": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-core" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-test" - ] - }, - "org.jetbrains:annotations": { - "locked": "23.0.0", - "transitive": [ - "org.jetbrains.kotlin:kotlin-stdlib", - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm" - ] - }, - "org.junit.jupiter:junit-jupiter": { - "locked": "5.10.3", - "transitive": [ - "org.junit:junit-bom", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.junit.jupiter:junit-jupiter-api": { - "locked": "5.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter", - "org.junit.jupiter:junit-jupiter-params", - "org.junit:junit-bom" - ] - }, - "org.junit.jupiter:junit-jupiter-params": { - "locked": "5.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter", - "org.junit:junit-bom" - ] - }, - "org.junit.platform:junit-platform-commons": { - "locked": "1.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter-api", - "org.junit:junit-bom" - ] - }, - "org.junit:junit-bom": { - "locked": "5.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter", - "org.junit.jupiter:junit-jupiter-api", - "org.junit.jupiter:junit-jupiter-params", - "org.junit.platform:junit-platform-commons" - ] - }, - "org.mockito:mockito-core": { - "locked": "5.11.0", - "transitive": [ - "org.mockito:mockito-junit-jupiter", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.mockito:mockito-junit-jupiter": { - "locked": "5.11.0", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.objenesis:objenesis": { - "locked": "3.3", - "transitive": [ - "io.mockk:mockk-agent-jvm" - ] - }, - "org.opentest4j:opentest4j": { - "locked": "1.3.0", - "transitive": [ - "org.junit.jupiter:junit-jupiter-api" - ] - }, - "org.ow2.asm:asm": { - "locked": "9.6", - "transitive": [ - "net.minidev:accessors-smart" - ] - }, - "org.reactivestreams:reactive-streams": { - "locked": "1.0.4", - "transitive": [ - "com.graphql-java:graphql-java", - "io.projectreactor:reactor-core", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive" - ] - }, - "org.skyscreamer:jsonassert": { - "locked": "1.5.3", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.slf4j:jul-to-slf4j": { - "locked": "2.0.13", - "transitive": [ - "org.springframework.boot:spring-boot-starter-logging" - ] - }, - "org.slf4j:slf4j-api": { - "locked": "2.0.13", - "transitive": [ - "ch.qos.logback:logback-classic", - "com.apollographql.federation:federation-graphql-java-support", - "com.graphql-java:java-dataloader", - "org.apache.logging.log4j:log4j-to-slf4j", - "org.slf4j:jul-to-slf4j" - ] - }, - "org.springframework.boot:spring-boot": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-autoconfigure", - "org.springframework.boot:spring-boot-starter", - "org.springframework.boot:spring-boot-test", - "org.springframework.boot:spring-boot-test-autoconfigure" - ] - }, - "org.springframework.boot:spring-boot-autoconfigure": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter", - "org.springframework.boot:spring-boot-test-autoconfigure" - ] - }, - "org.springframework.boot:spring-boot-starter": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.springframework.boot:spring-boot-starter-logging": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter" - ] - }, - "org.springframework.boot:spring-boot-starter-test": { - "locked": "3.3.2" - }, - "org.springframework.boot:spring-boot-test": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test", - "org.springframework.boot:spring-boot-test-autoconfigure" - ] - }, - "org.springframework.boot:spring-boot-test-autoconfigure": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.springframework.security:spring-security-core": { - "locked": "6.3.1" - }, - "org.springframework.security:spring-security-crypto": { - "locked": "6.3.1", - "transitive": [ - "org.springframework.security:spring-security-core" - ] - }, - "org.springframework:spring-aop": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.security:spring-security-core", - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-beans": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.security:spring-security-core", - "org.springframework:spring-aop", - "org.springframework:spring-context", - "org.springframework:spring-web" - ] - }, - "org.springframework:spring-context": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.boot:spring-boot", - "org.springframework.security:spring-security-core" - ] - }, - "org.springframework:spring-core": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.boot:spring-boot", - "org.springframework.boot:spring-boot-starter", - "org.springframework.boot:spring-boot-starter-test", - "org.springframework.security:spring-security-core", - "org.springframework:spring-aop", - "org.springframework:spring-beans", - "org.springframework:spring-context", - "org.springframework:spring-expression", - "org.springframework:spring-test", - "org.springframework:spring-web" - ] - }, - "org.springframework:spring-expression": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.security:spring-security-core", - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-jcl": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-core" - ] - }, - "org.springframework:spring-test": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test", - "org.springframework.boot:spring-boot-test" - ] - }, - "org.springframework:spring-web": { - "locked": "6.1.11" - }, - "org.xmlunit:xmlunit-core": { - "locked": "2.9.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.yaml:snakeyaml": { - "locked": "2.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter" - ] - } - }, - "java21TestImplementationDependenciesMetadata": { - "ch.qos.logback:logback-classic": { - "locked": "1.5.6", - "transitive": [ - "org.springframework.boot:spring-boot-starter-logging" - ] - }, - "ch.qos.logback:logback-core": { - "locked": "1.5.6", - "transitive": [ - "ch.qos.logback:logback-classic" - ] - }, - "com.apollographql.federation:federation-graphql-java-support": { - "locked": "5.0.0", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.fasterxml.jackson.core:jackson-annotations": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.core:jackson-databind", - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson.module:jackson-module-kotlin", - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.core:jackson-databind", - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson.module:jackson-module-kotlin", - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson:jackson-bom": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.core:jackson-annotations", - "com.fasterxml.jackson.core:jackson-core", - "com.fasterxml.jackson.core:jackson-databind", - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson.module:jackson-module-kotlin" - ] - }, - "com.google.protobuf:protobuf-java": { - "locked": "4.26.1", - "transitive": [ - "com.apollographql.federation:federation-graphql-java-support" - ] - }, - "com.graphql-java:graphql-java": { - "locked": "22.1", - "transitive": [ - "com.apollographql.federation:federation-graphql-java-support", - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-dgs-platform", - "com.netflix.graphql.dgs:graphql-error-types" - ] - }, - "com.graphql-java:graphql-java-extended-scalars": { - "locked": "22.0", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.graphql-java:java-dataloader": { - "locked": "3.3.0", - "transitive": [ - "com.graphql-java:graphql-java", - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.jayway.jsonpath:json-path": { - "locked": "2.9.0", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "com.netflix.graphql.dgs:graphql-dgs-mocking": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.netflix.graphql.dgs:graphql-dgs-platform": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-error-types" - ] - }, - "com.netflix.graphql.dgs:graphql-error-types": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.vaadin.external.google:android-json": { - "locked": "0.0.20131108.vaadin1", - "transitive": [ - "org.skyscreamer:jsonassert" - ] - }, - "io.micrometer:context-propagation": { - "locked": "1.1.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "io.micrometer:micrometer-commons": { - "locked": "1.13.2", - "transitive": [ - "io.micrometer:micrometer-observation" - ] - }, - "io.micrometer:micrometer-observation": { - "locked": "1.13.2", - "transitive": [ - "org.springframework.security:spring-security-core", - "org.springframework:spring-context", - "org.springframework:spring-web" - ] - }, - "io.mockk:mockk": { - "locked": "1.13.12" - }, - "io.mockk:mockk-agent": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk" - ] - }, - "io.mockk:mockk-agent-api": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk", - "io.mockk:mockk-agent" - ] - }, - "io.mockk:mockk-core": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk" - ] - }, - "io.mockk:mockk-dsl": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk" - ] - }, - "io.projectreactor:reactor-core": { - "locked": "3.6.8", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "io.projectreactor:reactor-test", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "io.projectreactor:reactor-test": { - "locked": "3.6.8", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "jakarta.activation:jakarta.activation-api": { - "locked": "2.1.3", - "transitive": [ - "jakarta.xml.bind:jakarta.xml.bind-api" - ] - }, - "jakarta.annotation:jakarta.annotation-api": { - "locked": "2.1.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter" - ] - }, - "jakarta.xml.bind:jakarta.xml.bind-api": { - "locked": "4.0.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "net.bytebuddy:byte-buddy": { - "locked": "1.14.18", - "transitive": [ - "org.assertj:assertj-core", - "org.mockito:mockito-core" - ] - }, - "net.bytebuddy:byte-buddy-agent": { - "locked": "1.14.18", - "transitive": [ - "org.mockito:mockito-core" - ] - }, - "net.minidev:accessors-smart": { - "locked": "2.5.1", - "transitive": [ - "net.minidev:json-smart" - ] - }, - "net.minidev:json-smart": { - "locked": "2.5.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.23.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "org.apache.logging.log4j:log4j-to-slf4j" - ] - }, - "org.apache.logging.log4j:log4j-to-slf4j": { - "locked": "2.23.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "org.springframework.boot:spring-boot-starter-logging" - ] - }, - "org.apiguardian:apiguardian-api": { - "locked": "1.1.2", - "transitive": [ - "org.junit.jupiter:junit-jupiter-api", - "org.junit.jupiter:junit-jupiter-params", - "org.junit.platform:junit-platform-commons" - ] - }, - "org.assertj:assertj-core": { - "locked": "3.25.3", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.awaitility:awaitility": { - "locked": "4.2.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.hamcrest:hamcrest": { - "locked": "2.2", - "transitive": [ - "org.awaitility:awaitility", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.jetbrains.kotlin:kotlin-reflect": { - "locked": "1.9.25", - "transitive": [ - "com.fasterxml.jackson.module:jackson-module-kotlin" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-error-types", - "io.mockk:mockk", - "io.mockk:mockk-agent", - "io.mockk:mockk-agent-api", - "io.mockk:mockk-core", - "io.mockk:mockk-dsl", - "org.jetbrains.kotlin:kotlin-reflect", - "org.jetbrains.kotlin:kotlin-stdlib-common", - "org.jetbrains.kotlinx:atomicfu", - "org.jetbrains.kotlinx:kotlinx-coroutines-core", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", - "org.jetbrains.kotlinx:kotlinx-coroutines-test" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib-common": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-stdlib", - "org.jetbrains.kotlinx:atomicfu" - ] - }, - "org.jetbrains.kotlinx:atomicfu": { - "locked": "0.23.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-core", - "org.jetbrains.kotlinx:kotlinx-coroutines-test" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-bom": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", - "org.jetbrains.kotlinx:kotlinx-coroutines-test" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom" - ] - }, - "org.junit.jupiter:junit-jupiter": { - "locked": "5.10.3", - "transitive": [ - "org.junit:junit-bom", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.junit.jupiter:junit-jupiter-api": { - "locked": "5.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter", - "org.junit.jupiter:junit-jupiter-params", - "org.junit:junit-bom" - ] - }, - "org.junit.jupiter:junit-jupiter-params": { - "locked": "5.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter", - "org.junit:junit-bom" - ] - }, - "org.junit.platform:junit-platform-commons": { - "locked": "1.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter-api", - "org.junit:junit-bom" - ] - }, - "org.junit:junit-bom": { - "locked": "5.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter", - "org.junit.jupiter:junit-jupiter-api", - "org.junit.jupiter:junit-jupiter-params", - "org.junit.platform:junit-platform-commons" - ] - }, - "org.mockito:mockito-core": { - "locked": "5.11.0", - "transitive": [ - "org.mockito:mockito-junit-jupiter", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.mockito:mockito-junit-jupiter": { - "locked": "5.11.0", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.opentest4j:opentest4j": { - "locked": "1.3.0", - "transitive": [ - "org.junit.jupiter:junit-jupiter-api" - ] - }, - "org.ow2.asm:asm": { - "locked": "9.6", - "transitive": [ - "net.minidev:accessors-smart" - ] - }, - "org.reactivestreams:reactive-streams": { - "locked": "1.0.4", - "transitive": [ - "com.graphql-java:graphql-java", - "io.projectreactor:reactor-core", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive" - ] - }, - "org.skyscreamer:jsonassert": { - "locked": "1.5.3", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.slf4j:jul-to-slf4j": { - "locked": "2.0.13", - "transitive": [ - "org.springframework.boot:spring-boot-starter-logging" - ] - }, - "org.slf4j:slf4j-api": { - "locked": "2.0.13", - "transitive": [ - "ch.qos.logback:logback-classic", - "com.apollographql.federation:federation-graphql-java-support", - "com.graphql-java:java-dataloader", - "org.apache.logging.log4j:log4j-to-slf4j", - "org.slf4j:jul-to-slf4j" - ] - }, - "org.springframework.boot:spring-boot": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-autoconfigure", - "org.springframework.boot:spring-boot-starter", - "org.springframework.boot:spring-boot-test", - "org.springframework.boot:spring-boot-test-autoconfigure" - ] - }, - "org.springframework.boot:spring-boot-autoconfigure": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter", - "org.springframework.boot:spring-boot-test-autoconfigure" - ] - }, - "org.springframework.boot:spring-boot-starter": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.springframework.boot:spring-boot-starter-logging": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter" - ] - }, - "org.springframework.boot:spring-boot-starter-test": { - "locked": "3.3.2" - }, - "org.springframework.boot:spring-boot-test": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test", - "org.springframework.boot:spring-boot-test-autoconfigure" - ] - }, - "org.springframework.boot:spring-boot-test-autoconfigure": { - "locked": "3.3.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.springframework.security:spring-security-core": { - "locked": "6.3.1" - }, - "org.springframework.security:spring-security-crypto": { - "locked": "6.3.1", - "transitive": [ - "org.springframework.security:spring-security-core" - ] - }, - "org.springframework:spring-aop": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.security:spring-security-core", - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-beans": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.security:spring-security-core", - "org.springframework:spring-aop", - "org.springframework:spring-context", - "org.springframework:spring-web" - ] - }, - "org.springframework:spring-context": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.boot:spring-boot", - "org.springframework.security:spring-security-core" - ] - }, - "org.springframework:spring-core": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.boot:spring-boot", - "org.springframework.boot:spring-boot-starter", - "org.springframework.boot:spring-boot-starter-test", - "org.springframework.security:spring-security-core", - "org.springframework:spring-aop", - "org.springframework:spring-beans", - "org.springframework:spring-context", - "org.springframework:spring-expression", - "org.springframework:spring-test", - "org.springframework:spring-web" - ] - }, - "org.springframework:spring-expression": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.security:spring-security-core", - "org.springframework:spring-context" - ] - }, - "org.springframework:spring-jcl": { - "locked": "6.1.11", - "transitive": [ - "org.springframework:spring-core" - ] - }, - "org.springframework:spring-test": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test", - "org.springframework.boot:spring-boot-test" - ] - }, - "org.springframework:spring-web": { - "locked": "6.1.11" - }, - "org.xmlunit:xmlunit-core": { - "locked": "2.9.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.yaml:snakeyaml": { - "locked": "2.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter" - ] - } - }, - "java21TestRuntimeClasspath": { - "ch.qos.logback:logback-classic": { - "locked": "1.5.6", - "transitive": [ - "org.springframework.boot:spring-boot-starter-logging" - ] - }, - "ch.qos.logback:logback-core": { - "locked": "1.5.6", - "transitive": [ - "ch.qos.logback:logback-classic" - ] - }, - "com.apollographql.federation:federation-graphql-java-support": { - "locked": "5.0.0", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.fasterxml.jackson.core:jackson-annotations": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.core:jackson-databind", - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson.module:jackson-module-kotlin", - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.core:jackson-core": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.core:jackson-databind", - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.core:jackson-databind": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson.module:jackson-module-kotlin", - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson.module:jackson-module-kotlin": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson:jackson-bom" - ] - }, - "com.fasterxml.jackson:jackson-bom": { - "locked": "2.17.2", - "transitive": [ - "com.fasterxml.jackson.core:jackson-annotations", - "com.fasterxml.jackson.core:jackson-core", - "com.fasterxml.jackson.core:jackson-databind", - "com.fasterxml.jackson.datatype:jackson-datatype-jsr310", - "com.fasterxml.jackson.module:jackson-module-kotlin" - ] - }, - "com.github.curious-odd-man:rgxgen": { - "locked": "2.0", - "transitive": [ - "net.datafaker:datafaker" - ] - }, - "com.google.protobuf:protobuf-java": { - "locked": "4.26.1", - "transitive": [ - "com.apollographql.federation:federation-graphql-java-support" - ] - }, - "com.googlecode.libphonenumber:libphonenumber": { - "locked": "8.13.41", - "transitive": [ - "net.datafaker:datafaker" - ] - }, - "com.graphql-java:graphql-java": { - "locked": "22.1", - "transitive": [ - "com.apollographql.federation:federation-graphql-java-support", - "com.graphql-java:graphql-java-extended-scalars", - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-dgs-platform", - "com.netflix.graphql.dgs:graphql-error-types" - ] - }, - "com.graphql-java:graphql-java-extended-scalars": { - "locked": "22.0", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.graphql-java:java-dataloader": { - "locked": "3.3.0", - "transitive": [ - "com.graphql-java:graphql-java", - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.jayway.jsonpath:json-path": { - "locked": "2.9.0", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "com.netflix.graphql.dgs:graphql-dgs-mocking": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.netflix.graphql.dgs:graphql-dgs-platform": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-error-types" - ] - }, - "com.netflix.graphql.dgs:graphql-error-types": { - "project": true, - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "com.vaadin.external.google:android-json": { - "locked": "0.0.20131108.vaadin1", - "transitive": [ - "org.skyscreamer:jsonassert" - ] - }, - "io.micrometer:context-propagation": { - "locked": "1.1.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "io.micrometer:micrometer-commons": { - "locked": "1.13.2", - "transitive": [ - "io.micrometer:micrometer-observation" - ] - }, - "io.micrometer:micrometer-observation": { - "locked": "1.13.2", - "transitive": [ - "org.springframework.security:spring-security-core", - "org.springframework:spring-context", - "org.springframework:spring-web" - ] - }, - "io.mockk:mockk": { - "locked": "1.13.12" - }, - "io.mockk:mockk-agent": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-jvm" - ] - }, - "io.mockk:mockk-agent-api": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-agent-jvm", - "io.mockk:mockk-jvm" - ] - }, - "io.mockk:mockk-agent-api-jvm": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-agent-api" - ] - }, - "io.mockk:mockk-agent-jvm": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-agent" - ] - }, - "io.mockk:mockk-core": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-agent-jvm", - "io.mockk:mockk-dsl-jvm", - "io.mockk:mockk-jvm" - ] - }, - "io.mockk:mockk-core-jvm": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-core" - ] - }, - "io.mockk:mockk-dsl": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-jvm" - ] - }, - "io.mockk:mockk-dsl-jvm": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk-dsl" - ] - }, - "io.mockk:mockk-jvm": { - "locked": "1.13.12", - "transitive": [ - "io.mockk:mockk" - ] - }, - "io.projectreactor:reactor-core": { - "locked": "3.6.8", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "io.projectreactor:reactor-test", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "io.projectreactor:reactor-test": { - "locked": "3.6.8", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform" - ] - }, - "jakarta.activation:jakarta.activation-api": { - "locked": "2.1.3", - "transitive": [ - "jakarta.xml.bind:jakarta.xml.bind-api" - ] - }, - "jakarta.annotation:jakarta.annotation-api": { - "locked": "2.1.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter" - ] - }, - "jakarta.xml.bind:jakarta.xml.bind-api": { - "locked": "4.0.2", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "junit:junit": { - "locked": "4.13.2", - "transitive": [ - "io.mockk:mockk-jvm" - ] - }, - "net.bytebuddy:byte-buddy": { - "locked": "1.14.18", - "transitive": [ - "io.mockk:mockk-agent-jvm", - "org.assertj:assertj-core", - "org.mockito:mockito-core" - ] - }, - "net.bytebuddy:byte-buddy-agent": { - "locked": "1.14.18", - "transitive": [ - "io.mockk:mockk-agent-jvm", - "org.mockito:mockito-core" - ] - }, - "net.datafaker:datafaker": { - "locked": "2.3.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-mocking" - ] - }, - "net.minidev:accessors-smart": { - "locked": "2.5.1", - "transitive": [ - "net.minidev:json-smart" - ] - }, - "net.minidev:json-smart": { - "locked": "2.5.1", - "transitive": [ - "com.jayway.jsonpath:json-path", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.apache.logging.log4j:log4j-api": { - "locked": "2.23.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "org.apache.logging.log4j:log4j-to-slf4j" - ] - }, - "org.apache.logging.log4j:log4j-to-slf4j": { - "locked": "2.23.1", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-platform", - "org.springframework.boot:spring-boot-starter-logging" - ] - }, - "org.assertj:assertj-core": { - "locked": "3.25.3", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.awaitility:awaitility": { - "locked": "4.2.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.hamcrest:hamcrest": { - "locked": "2.2", - "transitive": [ - "org.awaitility:awaitility", - "org.hamcrest:hamcrest-core", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.hamcrest:hamcrest-core": { - "locked": "2.2", - "transitive": [ - "junit:junit" - ] - }, - "org.jetbrains.kotlin:kotlin-reflect": { - "locked": "1.9.25", - "transitive": [ - "com.fasterxml.jackson.module:jackson-module-kotlin", - "io.mockk:mockk-agent-jvm", - "io.mockk:mockk-core-jvm", - "io.mockk:mockk-dsl-jvm", - "io.mockk:mockk-jvm" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25", - "transitive": [ - "com.netflix.graphql.dgs:graphql-dgs-mocking", - "com.netflix.graphql.dgs:graphql-error-types", - "io.mockk:mockk-agent-api-jvm", - "io.mockk:mockk-agent-jvm", - "io.mockk:mockk-core-jvm", - "io.mockk:mockk-dsl-jvm", - "io.mockk:mockk-jvm", - "org.jetbrains.kotlin:kotlin-reflect", - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-bom": { - "locked": "1.8.1", - "transitive": [ - "io.mockk:mockk-dsl-jvm", - "io.mockk:mockk-jvm", - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core": { - "locked": "1.8.1", - "transitive": [ - "io.mockk:mockk-dsl-jvm", - "io.mockk:mockk-jvm", - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor", - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-core" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom" - ] - }, - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm": { - "locked": "1.8.1", - "transitive": [ - "org.jetbrains.kotlinx:kotlinx-coroutines-bom", - "org.jetbrains.kotlinx:kotlinx-coroutines-test" - ] - }, - "org.jetbrains:annotations": { - "locked": "23.0.0", - "transitive": [ - "org.jetbrains.kotlin:kotlin-stdlib", - "org.jetbrains.kotlinx:kotlinx-coroutines-core-jvm", - "org.jetbrains.kotlinx:kotlinx-coroutines-test-jvm" - ] - }, - "org.junit.jupiter:junit-jupiter": { - "locked": "5.10.3", - "transitive": [ - "io.mockk:mockk-jvm", - "org.junit:junit-bom", - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.junit.jupiter:junit-jupiter-api": { - "locked": "5.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter", - "org.junit.jupiter:junit-jupiter-engine", - "org.junit.jupiter:junit-jupiter-params", - "org.junit:junit-bom", - "org.mockito:mockito-junit-jupiter" - ] - }, - "org.junit.jupiter:junit-jupiter-engine": { - "locked": "5.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter", - "org.junit:junit-bom" - ] - }, - "org.junit.jupiter:junit-jupiter-params": { - "locked": "5.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter", - "org.junit:junit-bom" - ] - }, - "org.junit.platform:junit-platform-commons": { - "locked": "1.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter-api", - "org.junit.platform:junit-platform-engine", - "org.junit:junit-bom" - ] - }, - "org.junit.platform:junit-platform-engine": { - "locked": "1.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter-engine", - "org.junit:junit-bom" - ] - }, - "org.junit:junit-bom": { - "locked": "5.10.3", - "transitive": [ - "org.junit.jupiter:junit-jupiter", - "org.junit.jupiter:junit-jupiter-api", - "org.junit.jupiter:junit-jupiter-engine", - "org.junit.jupiter:junit-jupiter-params", - "org.junit.platform:junit-platform-commons", - "org.junit.platform:junit-platform-engine" - ] - }, - "org.mockito:mockito-core": { - "locked": "5.11.0", - "transitive": [ - "org.mockito:mockito-junit-jupiter", - "org.springframework.boot:spring-boot-starter-test" + "com.netflix.graphql.dgs:graphql-dgs-platform" ] }, - "org.mockito:mockito-junit-jupiter": { - "locked": "5.11.0", + "com.netflix.graphql.dgs:graphql-dgs-platform": { + "project": true, "transitive": [ - "org.springframework.boot:spring-boot-starter-test" + "com.netflix.graphql.dgs:graphql-dgs-mocking", + "com.netflix.graphql.dgs:graphql-error-types" ] }, - "org.objenesis:objenesis": { - "locked": "3.3", + "com.netflix.graphql.dgs:graphql-error-types": { + "project": true, "transitive": [ - "io.mockk:mockk-agent-jvm", - "org.mockito:mockito-core" + "com.netflix.graphql.dgs:graphql-dgs-platform" ] }, - "org.opentest4j:opentest4j": { - "locked": "1.3.0", + "io.micrometer:context-propagation": { + "locked": "1.1.1", "transitive": [ - "org.junit.jupiter:junit-jupiter-api", - "org.junit.platform:junit-platform-engine" + "com.netflix.graphql.dgs:graphql-dgs-platform" ] }, - "org.ow2.asm:asm": { - "locked": "9.6", + "io.micrometer:micrometer-commons": { + "locked": "1.13.2", "transitive": [ - "net.minidev:accessors-smart" + "io.micrometer:micrometer-observation" ] }, - "org.reactivestreams:reactive-streams": { - "locked": "1.0.4", + "io.micrometer:micrometer-observation": { + "locked": "1.13.2", "transitive": [ - "com.graphql-java:graphql-java", - "io.projectreactor:reactor-core", - "org.jetbrains.kotlinx:kotlinx-coroutines-reactive" + "org.springframework:spring-context", + "org.springframework:spring-web" ] }, - "org.skyscreamer:jsonassert": { - "locked": "1.5.3", + "io.projectreactor:reactor-core": { + "locked": "3.6.8", "transitive": [ - "org.springframework.boot:spring-boot-starter-test" + "com.netflix.graphql.dgs:graphql-dgs-platform", + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" ] }, - "org.slf4j:jul-to-slf4j": { - "locked": "2.0.13", + "org.jetbrains.kotlin:kotlin-reflect": { + "locked": "1.9.25", "transitive": [ - "org.springframework.boot:spring-boot-starter-logging" + "com.fasterxml.jackson.module:jackson-module-kotlin" ] }, - "org.slf4j:slf4j-api": { - "locked": "2.0.13", + "org.jetbrains.kotlin:kotlin-stdlib": { + "locked": "1.9.25", "transitive": [ - "ch.qos.logback:logback-classic", - "com.apollographql.federation:federation-graphql-java-support", - "com.graphql-java:java-dataloader", - "com.jayway.jsonpath:json-path", "com.netflix.graphql.dgs:graphql-dgs-mocking", - "org.apache.logging.log4j:log4j-to-slf4j", - "org.slf4j:jul-to-slf4j" + "com.netflix.graphql.dgs:graphql-error-types", + "org.jetbrains.kotlin:kotlin-reflect", + "org.jetbrains.kotlin:kotlin-stdlib-common", + "org.jetbrains.kotlinx:atomicfu", + "org.jetbrains.kotlinx:kotlinx-coroutines-core", + "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" ] }, - "org.springframework.boot:spring-boot": { - "locked": "3.3.2", + "org.jetbrains.kotlin:kotlin-stdlib-common": { + "locked": "1.9.25", "transitive": [ - "org.springframework.boot:spring-boot-autoconfigure", - "org.springframework.boot:spring-boot-starter", - "org.springframework.boot:spring-boot-test", - "org.springframework.boot:spring-boot-test-autoconfigure" + "org.jetbrains.kotlin:kotlin-stdlib", + "org.jetbrains.kotlinx:atomicfu" ] }, - "org.springframework.boot:spring-boot-autoconfigure": { - "locked": "3.3.2", + "org.jetbrains.kotlinx:atomicfu": { + "locked": "0.23.1", "transitive": [ - "org.springframework.boot:spring-boot-starter", - "org.springframework.boot:spring-boot-test-autoconfigure" + "org.jetbrains.kotlinx:kotlinx-coroutines-core" ] }, - "org.springframework.boot:spring-boot-starter": { - "locked": "3.3.2", + "org.jetbrains.kotlinx:kotlinx-coroutines-bom": { + "locked": "1.8.1", "transitive": [ - "org.springframework.boot:spring-boot-starter-test" + "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" ] }, - "org.springframework.boot:spring-boot-starter-logging": { - "locked": "3.3.2", + "org.jetbrains.kotlinx:kotlinx-coroutines-core": { + "locked": "1.8.1", "transitive": [ - "org.springframework.boot:spring-boot-starter" + "org.jetbrains.kotlinx:kotlinx-coroutines-bom", + "org.jetbrains.kotlinx:kotlinx-coroutines-reactive", + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" ] }, - "org.springframework.boot:spring-boot-starter-test": { - "locked": "3.3.2" - }, - "org.springframework.boot:spring-boot-test": { - "locked": "3.3.2", + "org.jetbrains.kotlinx:kotlinx-coroutines-reactive": { + "locked": "1.8.1", "transitive": [ - "org.springframework.boot:spring-boot-starter-test", - "org.springframework.boot:spring-boot-test-autoconfigure" + "org.jetbrains.kotlinx:kotlinx-coroutines-bom", + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor" ] }, - "org.springframework.boot:spring-boot-test-autoconfigure": { - "locked": "3.3.2", + "org.jetbrains.kotlinx:kotlinx-coroutines-reactor": { + "locked": "1.8.1", "transitive": [ - "org.springframework.boot:spring-boot-starter-test" + "org.jetbrains.kotlinx:kotlinx-coroutines-bom" ] }, - "org.springframework.security:spring-security-core": { - "locked": "6.3.1" + "org.reactivestreams:reactive-streams": { + "locked": "1.0.4", + "transitive": [ + "com.graphql-java:graphql-java", + "io.projectreactor:reactor-core", + "org.jetbrains.kotlinx:kotlinx-coroutines-reactive" + ] }, - "org.springframework.security:spring-security-crypto": { - "locked": "6.3.1", + "org.slf4j:slf4j-api": { + "locked": "2.0.13", "transitive": [ - "org.springframework.security:spring-security-core" + "com.apollographql.federation:federation-graphql-java-support", + "com.graphql-java:java-dataloader" ] }, "org.springframework:spring-aop": { "locked": "6.1.11", "transitive": [ - "org.springframework.security:spring-security-core", "org.springframework:spring-context" ] }, "org.springframework:spring-beans": { "locked": "6.1.11", "transitive": [ - "org.springframework.security:spring-security-core", "org.springframework:spring-aop", "org.springframework:spring-context", "org.springframework:spring-web" ] }, "org.springframework:spring-context": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.boot:spring-boot", - "org.springframework.security:spring-security-core" - ] + "locked": "6.1.11" }, "org.springframework:spring-core": { "locked": "6.1.11", "transitive": [ - "org.springframework.boot:spring-boot", - "org.springframework.boot:spring-boot-starter", - "org.springframework.boot:spring-boot-starter-test", - "org.springframework.security:spring-security-core", "org.springframework:spring-aop", "org.springframework:spring-beans", "org.springframework:spring-context", "org.springframework:spring-expression", - "org.springframework:spring-test", "org.springframework:spring-web" ] }, "org.springframework:spring-expression": { "locked": "6.1.11", "transitive": [ - "org.springframework.security:spring-security-core", "org.springframework:spring-context" ] }, @@ -2664,28 +684,8 @@ "org.springframework:spring-core" ] }, - "org.springframework:spring-test": { - "locked": "6.1.11", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test", - "org.springframework.boot:spring-boot-test" - ] - }, "org.springframework:spring-web": { "locked": "6.1.11" - }, - "org.xmlunit:xmlunit-core": { - "locked": "2.9.1", - "transitive": [ - "org.springframework.boot:spring-boot-starter-test" - ] - }, - "org.yaml:snakeyaml": { - "locked": "2.2", - "transitive": [ - "net.datafaker:datafaker", - "org.springframework.boot:spring-boot-starter" - ] } }, "jmh": { @@ -3951,96 +1951,6 @@ ] } }, - "kotlinCompilerPluginClasspathJava21": { - "org.jetbrains.kotlin:kotlin-script-runtime": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-scripting-jvm" - ] - }, - "org.jetbrains.kotlin:kotlin-scripting-common": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable", - "org.jetbrains.kotlin:kotlin-scripting-jvm" - ] - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { - "locked": "1.9.25" - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable" - ] - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-scripting-common", - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable", - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable", - "org.jetbrains.kotlin:kotlin-scripting-jvm" - ] - }, - "org.jetbrains:annotations": { - "locked": "13.0", - "transitive": [ - "org.jetbrains.kotlin:kotlin-stdlib" - ] - } - }, - "kotlinCompilerPluginClasspathJava21Test": { - "org.jetbrains.kotlin:kotlin-script-runtime": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-scripting-jvm" - ] - }, - "org.jetbrains.kotlin:kotlin-scripting-common": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable", - "org.jetbrains.kotlin:kotlin-scripting-jvm" - ] - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable": { - "locked": "1.9.25" - }, - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable" - ] - }, - "org.jetbrains.kotlin:kotlin-scripting-jvm": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable" - ] - }, - "org.jetbrains.kotlin:kotlin-stdlib": { - "locked": "1.9.25", - "transitive": [ - "org.jetbrains.kotlin:kotlin-scripting-common", - "org.jetbrains.kotlin:kotlin-scripting-compiler-embeddable", - "org.jetbrains.kotlin:kotlin-scripting-compiler-impl-embeddable", - "org.jetbrains.kotlin:kotlin-scripting-jvm" - ] - }, - "org.jetbrains:annotations": { - "locked": "13.0", - "transitive": [ - "org.jetbrains.kotlin:kotlin-stdlib" - ] - } - }, "kotlinCompilerPluginClasspathJmh": { "org.jetbrains.kotlin:kotlin-script-runtime": { "locked": "1.9.25", diff --git a/graphql-dgs/src/main/java21/com.netflix.graphql.dgs.internal.VirtualThreadTaskExecutor/VirtualThreadTaskExecutor.java b/graphql-dgs/src/main/java21/com.netflix.graphql.dgs.internal.VirtualThreadTaskExecutor/VirtualThreadTaskExecutor.java deleted file mode 100644 index 408670080..000000000 --- a/graphql-dgs/src/main/java21/com.netflix.graphql.dgs.internal.VirtualThreadTaskExecutor/VirtualThreadTaskExecutor.java +++ /dev/null @@ -1,79 +0,0 @@ -/* - * Copyright 2023 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 io.micrometer.context.ContextSnapshot; -import io.micrometer.context.ContextSnapshotFactory; -import org.jetbrains.annotations.NotNull; -import org.springframework.core.task.AsyncTaskExecutor; -import org.springframework.lang.Nullable; - -import java.util.concurrent.Callable; -import java.util.concurrent.Future; -import java.util.concurrent.FutureTask; -import java.util.concurrent.ThreadFactory; - -/** - * AsyncTaskExecutor based on Virtual Threads. - * JDK21+ only. - */ -@SuppressWarnings("unused") -public class VirtualThreadTaskExecutor implements AsyncTaskExecutor { - private final ThreadFactory threadFactory; - - @Nullable - private final ContextSnapshotFactory contextSnapshotFactory; - - public VirtualThreadTaskExecutor(@Nullable ContextSnapshotFactory contextSnapshotFactory) { - this.contextSnapshotFactory = contextSnapshotFactory; - this.threadFactory = Thread.ofVirtual().name("dgs-virtual-thread-", 0).factory(); - } - - @Override - public void execute(@NotNull Runnable task) { - if (contextSnapshotFactory != null) { - ContextSnapshot contextSnapshot = contextSnapshotFactory.captureAll(); - var wrapped = contextSnapshot.wrap(task); - threadFactory.newThread(wrapped).start(); - } else { - threadFactory.newThread(task).start(); - } - } - - @Override - @Deprecated - public void execute(@NotNull Runnable task, long startTimeout) { - var future = new FutureTask<>(task, null); - execute(future); - } - - @NotNull - @Override - public Future submit(@NotNull Runnable task) { - var future = new FutureTask<>(task, null); - execute(future); - return future; - } - - @NotNull - @Override - public Future submit(@NotNull Callable task) { - var future = new FutureTask<>(task); - execute(future); - return future; - } -} \ No newline at end of file diff --git a/graphql-dgs/src/main/java21/com/netflix/graphql/dgs/conditionals/Java21Condition.java b/graphql-dgs/src/main/java21/com/netflix/graphql/dgs/conditionals/Java21Condition.java deleted file mode 100644 index 3f613305a..000000000 --- a/graphql-dgs/src/main/java21/com/netflix/graphql/dgs/conditionals/Java21Condition.java +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2023 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.conditionals; - -import org.jetbrains.annotations.NotNull; -import org.springframework.context.annotation.Condition; -import org.springframework.context.annotation.ConditionContext; -import org.springframework.core.type.AnnotatedTypeMetadata; - -/** - * Condition used in @ConditionalOnJava21. - * This is the JDK 21 version of the condition, which is only loaded on JDK 21+ using the multi-release JAR feature. - */ -@SuppressWarnings("unused") -public class Java21Condition implements Condition { - @Override - public boolean matches(@NotNull ConditionContext context, @NotNull AnnotatedTypeMetadata metadata) { - return true; - } -} \ No newline at end of file