graphql.execution.instrumentation.DocumentAndVariables Maven / Gradle / Ivy
package graphql.execution.instrumentation;
import graphql.PublicApi;
import graphql.collect.ImmutableMapWithNullValues;
import graphql.language.Document;
import java.util.Map;
import java.util.function.Consumer;
import static graphql.Assert.assertNotNull;
@PublicApi
public class DocumentAndVariables {
private final Document document;
private final ImmutableMapWithNullValues variables;
private DocumentAndVariables(Document document, Map variables) {
this.document = assertNotNull(document);
this.variables = ImmutableMapWithNullValues.copyOf(assertNotNull(variables));
}
public Document getDocument() {
return document;
}
public Map getVariables() {
return variables;
}
public DocumentAndVariables transform(Consumer builderConsumer) {
Builder builder = new Builder().document(this.document).variables(this.variables);
builderConsumer.accept(builder);
return builder.build();
}
public static Builder newDocumentAndVariables() {
return new Builder();
}
public static class Builder {
private Document document;
private Map variables;
public Builder document(Document document) {
this.document = document;
return this;
}
public Builder variables(Map variables) {
this.variables = variables;
return this;
}
public DocumentAndVariables build() {
return new DocumentAndVariables(document, variables);
}
}
}