Prior to this commit, the `DefaultWebClient` would execute the configured `ExchangeFilterFunction` as the reactive pipeline is assembled during subscription. This means that if imperative code is executed in a filter function, it won't be aware of the current observation through the local scope. For example, when automatic context propagation is enabled for Reactor operators, the logger MDC will not know about the current traceId/spanId. This commit ensures that client filter functions execution is deferred during the actual client exchange. Fixes gh-33559
70 lines
3.1 KiB
Groovy
70 lines
3.1 KiB
Groovy
description = "Spring WebFlux"
|
|
|
|
apply plugin: "kotlin"
|
|
apply plugin: "kotlinx-serialization"
|
|
|
|
dependencies {
|
|
api(project(":spring-beans"))
|
|
api(project(":spring-core"))
|
|
api(project(":spring-web"))
|
|
api("io.projectreactor:reactor-core")
|
|
optional(project(":spring-context"))
|
|
optional(project(":spring-context-support")) // for FreeMarker support
|
|
optional("com.fasterxml.jackson.core:jackson-databind")
|
|
optional("com.fasterxml.jackson.dataformat:jackson-dataformat-smile")
|
|
optional("com.google.protobuf:protobuf-java-util")
|
|
optional("io.projectreactor.netty:reactor-netty-http")
|
|
optional("io.projectreactor.netty:reactor-netty5-http")
|
|
optional("io.undertow:undertow-websockets-jsr")
|
|
optional("jakarta.servlet:jakarta.servlet-api")
|
|
optional("jakarta.validation:jakarta.validation-api")
|
|
optional("jakarta.websocket:jakarta.websocket-api")
|
|
optional("jakarta.websocket:jakarta.websocket-client-api")
|
|
optional("org.apache.tomcat:tomcat-websocket") {
|
|
exclude group: "org.apache.tomcat", module: "tomcat-servlet-api"
|
|
exclude group: "org.apache.tomcat", module: "tomcat-websocket-api"
|
|
}
|
|
optional("org.eclipse.jetty.ee10.websocket:jetty-ee10-websocket-jetty-server") {
|
|
exclude group: "jakarta.servlet", module: "jakarta.servlet-api"
|
|
}
|
|
optional("org.freemarker:freemarker")
|
|
optional("org.jetbrains.kotlin:kotlin-reflect")
|
|
optional("org.jetbrains.kotlin:kotlin-stdlib")
|
|
optional("org.jetbrains.kotlinx:kotlinx-coroutines-reactor")
|
|
optional("org.webjars:webjars-locator-core")
|
|
testImplementation(testFixtures(project(":spring-beans")))
|
|
testImplementation(testFixtures(project(":spring-core")))
|
|
testImplementation(testFixtures(project(":spring-web")))
|
|
testImplementation("com.fasterxml:aalto-xml")
|
|
testImplementation("com.squareup.okhttp3:mockwebserver")
|
|
testImplementation("io.micrometer:context-propagation")
|
|
testImplementation("io.micrometer:micrometer-observation-test")
|
|
testImplementation("io.projectreactor:reactor-test")
|
|
testImplementation("io.reactivex.rxjava3:rxjava")
|
|
testImplementation("io.undertow:undertow-core")
|
|
testImplementation("jakarta.xml.bind:jakarta.xml.bind-api")
|
|
testImplementation("jakarta.validation:jakarta.validation-api")
|
|
testImplementation("org.apache.httpcomponents.client5:httpclient5")
|
|
testImplementation("org.apache.httpcomponents.core5:httpcore5-reactive")
|
|
testImplementation("org.apache.tomcat:tomcat-util")
|
|
testImplementation("org.apache.tomcat.embed:tomcat-embed-core")
|
|
testImplementation("org.eclipse.jetty:jetty-reactive-httpclient")
|
|
testImplementation("org.eclipse.jetty:jetty-server")
|
|
testImplementation("org.hibernate:hibernate-validator")
|
|
testImplementation("org.jetbrains.kotlin:kotlin-script-runtime")
|
|
testImplementation("org.jetbrains.kotlinx:kotlinx-serialization-json")
|
|
testRuntimeOnly("com.sun.xml.bind:jaxb-core")
|
|
testRuntimeOnly("com.sun.xml.bind:jaxb-impl")
|
|
testRuntimeOnly("com.sun.activation:jakarta.activation")
|
|
testRuntimeOnly("io.netty:netty5-buffer")
|
|
testRuntimeOnly("org.glassfish:jakarta.el")
|
|
testRuntimeOnly("org.jetbrains.kotlin:kotlin-scripting-jsr223")
|
|
testRuntimeOnly("org.jruby:jruby")
|
|
testRuntimeOnly("org.python:jython-standalone")
|
|
testRuntimeOnly("org.webjars:underscorejs")
|
|
}
|
|
|
|
test {
|
|
maxParallelForks = 4
|
|
}
|