in graphql-dgs-spring-graphql/src/main/kotlin/com/netflix/graphql/dgs/springgraphql/webflux/DgsWebFluxGraphQLInterceptor.kt [34:65]
override fun intercept(
request: WebGraphQlRequest,
chain: WebGraphQlInterceptor.Chain,
): Mono<WebGraphQlResponse> =
Mono
.deferContextual { ctx ->
val webExchange = ServerWebExchangeContextFilter.getExchange(ctx).get()
val serverRequest = ServerRequest.create(webExchange, emptyList())
dgsReactiveGraphQLContextBuilder.build(
DgsReactiveRequestData(
request.extensions,
request.headers,
serverRequest,
),
)
}.flatMap { dgsContext ->
var dataLoaderRegistry: DataLoaderRegistry? = null
request.configureExecutionInput { e, builder ->
dataLoaderRegistry = dgsDataLoaderProvider.buildRegistryWithContextSupplier { e.graphQLContext }
builder
.context(dgsContext)
.graphQLContext(dgsContext)
.dataLoaderRegistry(dataLoaderRegistry)
.build()
}
chain.next(request).doFinally {
if (dataLoaderRegistry is AutoCloseable) {
(dataLoaderRegistry as AutoCloseable).close()
}
}
}