Merge branch '1.3.x'

This commit is contained in:
Brian Clozel
2025-05-02 18:15:18 +02:00
2 changed files with 18 additions and 5 deletions

View File

@@ -92,11 +92,7 @@ class ContextDataFetcherDecorator implements DataFetcher<Object> {
Object value = snapshot.wrap(() -> this.delegate.get(env)).call();
if (value instanceof DataFetcherResult<?> dataFetcherResult) {
Object adapted = updateValue(dataFetcherResult.getData(), snapshot, graphQlContext);
value = DataFetcherResult.newResult()
.data(adapted)
.errors(dataFetcherResult.getErrors())
.localContext(dataFetcherResult.getLocalContext()).build();
value = dataFetcherResult.map((data) -> updateValue(data, snapshot, graphQlContext));
}
else {
value = updateValue(value, snapshot, graphQlContext);

View File

@@ -19,6 +19,7 @@ package org.springframework.graphql.execution;
import java.time.Duration;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.function.BiConsumer;
@@ -366,4 +367,20 @@ class ContextDataFetcherDecoratorTests {
assertThat(dataFetcherCancelled).isTrue();
}
@Test
void testExtensionsAreRetained() throws Exception {
GraphQL graphQl = GraphQlSetup.schemaContent(SCHEMA_CONTENT)
.queryFetcher("greeting", (env) ->
DataFetcherResult.newResult().data("Hello")
.extensions(Map.of("foo", "bar")).build())
.toGraphQl();
ExecutionInput input = ExecutionInput.newExecutionInput().query("{ greeting }").build();
ExecutionResult executionResult = graphQl.executeAsync(input).get();
String greeting = ResponseHelper.forResult(executionResult).toEntity("greeting", String.class);
assertThat(greeting).isEqualTo("Hello");
assertThat(executionResult.getExtensions()).containsEntry("foo", "bar");
}
}