graphql.execution.ExecutionContextBuilder Maven / Gradle / Ivy
package graphql.execution;
import graphql.execution.instrumentation.Instrumentation;
import graphql.execution.instrumentation.InstrumentationState;
import graphql.language.Document;
import graphql.language.FragmentDefinition;
import graphql.language.NodeUtil;
import graphql.language.OperationDefinition;
import graphql.schema.GraphQLSchema;
import java.util.Map;
import static graphql.Assert.assertNotNull;
public class ExecutionContextBuilder {
private ValuesResolver valuesResolver;
private Instrumentation instrumentation;
private ExecutionId executionId;
private InstrumentationState instrumentationState;
private GraphQLSchema graphQLSchema;
private ExecutionStrategy queryStrategy;
private ExecutionStrategy mutationStrategy;
private ExecutionStrategy subscriptionStrategy;
private Object context;
private Object root;
private Document document;
private String operationName;
private Map variables;
public ExecutionContextBuilder valuesResolver(ValuesResolver valuesResolver) {
this.valuesResolver = valuesResolver;
return this;
}
public ExecutionContextBuilder instrumentation(Instrumentation instrumentation) {
this.instrumentation = instrumentation;
return this;
}
public ExecutionContextBuilder instrumentationState(InstrumentationState instrumentationState) {
this.instrumentationState = instrumentationState;
return this;
}
public ExecutionContextBuilder executionId(ExecutionId executionId) {
this.executionId = executionId;
return this;
}
public ExecutionContextBuilder graphQLSchema(GraphQLSchema graphQLSchema) {
this.graphQLSchema = graphQLSchema;
return this;
}
public ExecutionContextBuilder queryStrategy(ExecutionStrategy queryStrategy) {
this.queryStrategy = queryStrategy;
return this;
}
public ExecutionContextBuilder mutationStrategy(ExecutionStrategy mutationStrategy) {
this.mutationStrategy = mutationStrategy;
return this;
}
public ExecutionContextBuilder subscriptionStrategy(ExecutionStrategy subscriptionStrategy) {
this.subscriptionStrategy = subscriptionStrategy;
return this;
}
public ExecutionContextBuilder context(Object context) {
this.context = context;
return this;
}
public ExecutionContextBuilder root(Object root) {
this.root = root;
return this;
}
public ExecutionContextBuilder document(Document document) {
this.document = document;
return this;
}
public ExecutionContextBuilder operationName(String operationName) {
this.operationName = operationName;
return this;
}
public ExecutionContextBuilder variables(Map variables) {
this.variables = variables;
return this;
}
public ExecutionContext build() {
// preconditions
assertNotNull(executionId, "You must provide a query identifier");
NodeUtil.GetOperationResult getOperationResult = NodeUtil.getOperation(document, operationName);
Map fragmentsByName = getOperationResult.fragmentsByName;
OperationDefinition operationDefinition = getOperationResult.operationDefinition;
Map variableValues = valuesResolver.getVariableValues(graphQLSchema, operationDefinition.getVariableDefinitions(), variables);
return new ExecutionContext(
instrumentation,
executionId,
graphQLSchema,
instrumentationState,
queryStrategy,
mutationStrategy,
subscriptionStrategy,
fragmentsByName,
operationDefinition,
variableValues,
context,
root);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy