diff --git a/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java b/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java index 77b05c6fe5..704d1b67cc 100644 --- a/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java +++ b/src/main/java/graphql/incremental/IncrementalExecutionResultImpl.java @@ -10,6 +10,7 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.function.Consumer; import java.util.stream.Collectors; @ExperimentalApi @@ -52,6 +53,13 @@ public static Builder fromExecutionResult(ExecutionResult executionResult) { return new Builder().from(executionResult); } + @Override + public IncrementalExecutionResult transform(Consumer> builderConsumer) { + var builder = fromExecutionResult(this); + builderConsumer.accept(builder); + return builder.build(); + } + @Override public Map toSpecification() { Map map = new LinkedHashMap<>(super.toSpecification()); diff --git a/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy b/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy index 9bf954cb63..b40bfd8712 100644 --- a/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy +++ b/src/test/groovy/graphql/incremental/IncrementalExecutionResultTest.groovy @@ -1,9 +1,7 @@ package graphql.incremental import graphql.execution.ResultPath -import groovy.json.JsonOutput import io.reactivex.Flowable -import org.reactivestreams.Publisher import spock.lang.Specification import static graphql.incremental.DeferPayload.newDeferredItem @@ -120,4 +118,18 @@ class IncrementalExecutionResultTest extends Specification { newIncrementalExecutionResult.hasNext() == incrementalExecutionResult.hasNext() newIncrementalExecutionResult.toSpecification() == incrementalExecutionResult.toSpecification() } + + def "transform returns IncrementalExecutionResult"() { + when: + def initial = newIncrementalExecutionResult().hasNext(true).build() + + then: + def transformed = initial.transform { b -> + b.addExtension("ext-key", "ext-value") + b.hasNext(false) + } + transformed instanceof IncrementalExecutionResult + transformed.extensions == ["ext-key": "ext-value"] + transformed.hasNext == false + } }