graphql.execution.nextgen.result.ExecutionResultNode Maven / Gradle / Ivy
package graphql.execution.nextgen.result;
import graphql.Assert;
import graphql.GraphQLError;
import graphql.Internal;
import graphql.execution.MergedField;
import graphql.execution.NonNullableFieldWasNullException;
import graphql.execution.nextgen.FetchedValueAnalysis;
import java.util.ArrayList;
import java.util.List;
import java.util.Optional;
import static graphql.Assert.assertNotNull;
@Internal
public abstract class ExecutionResultNode {
private final FetchedValueAnalysis fetchedValueAnalysis;
private final NonNullableFieldWasNullException nonNullableFieldWasNullException;
private final List children;
private final List errors;
protected ExecutionResultNode(FetchedValueAnalysis fetchedValueAnalysis,
NonNullableFieldWasNullException nonNullableFieldWasNullException,
List children,
List errors) {
this.fetchedValueAnalysis = fetchedValueAnalysis;
this.nonNullableFieldWasNullException = nonNullableFieldWasNullException;
this.children = assertNotNull(children);
children.forEach(Assert::assertNotNull);
this.errors = new ArrayList<>(errors);
}
public List getErrors() {
return new ArrayList<>(errors);
}
/*
* can be null for the RootExecutionResultNode
*/
public FetchedValueAnalysis getFetchedValueAnalysis() {
return fetchedValueAnalysis;
}
public MergedField getMergedField() {
return fetchedValueAnalysis.getExecutionStepInfo().getField();
}
public NonNullableFieldWasNullException getNonNullableFieldWasNullException() {
return nonNullableFieldWasNullException;
}
public List getChildren() {
return new ArrayList<>(this.children);
}
public Optional getChildNonNullableException() {
return children.stream()
.filter(executionResultNode -> executionResultNode.getNonNullableFieldWasNullException() != null)
.map(ExecutionResultNode::getNonNullableFieldWasNullException)
.findFirst();
}
/**
* Creates a new ExecutionResultNode of the same specific type with the new set of result children
*
* @param children the new children for this result node
*
* @return a new ExecutionResultNode with the new result children
*/
public abstract ExecutionResultNode withNewChildren(List children);
/**
* Creates a new ExecutionResultNode of the same specific type with the new {@link graphql.execution.nextgen.FetchedValueAnalysis}
*
* @param fetchedValueAnalysis the {@link graphql.execution.nextgen.FetchedValueAnalysis} for this result node
*
* @return a new ExecutionResultNode with the new {@link graphql.execution.nextgen.FetchedValueAnalysis}
*/
public abstract ExecutionResultNode withNewFetchedValueAnalysis(FetchedValueAnalysis fetchedValueAnalysis);
/**
* Creates a new ExecutionResultNode of the same specific type with the new error collection
*
* @param errors the new errors for this result node
*
* @return a new ExecutionResultNode with the new errors
*/
public abstract ExecutionResultNode withNewErrors(List errors);
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy