graphql.ParseAndValidateResult Maven / Gradle / Ivy
package graphql;
import graphql.collect.ImmutableKit;
import graphql.execution.instrumentation.DocumentAndVariables;
import graphql.language.Document;
import graphql.parser.InvalidSyntaxException;
import graphql.validation.ValidationError;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.function.Consumer;
/**
* A result object used in {@link graphql.ParseAndValidate} helper that indicates the outcomes of a parse
* and validate operation.
*/
@PublicApi
public class ParseAndValidateResult {
private final Document document;
private final Map variables;
private final InvalidSyntaxException syntaxException;
private final List validationErrors;
private ParseAndValidateResult(Builder builder) {
this.document = builder.document;
this.variables = builder.variables == null ? ImmutableKit.emptyMap() : builder.variables;
this.syntaxException = builder.syntaxException;
this.validationErrors = builder.validationErrors == null ? ImmutableKit.emptyList() : builder.validationErrors;
}
/**
* @return true if there was a parse exception or the validation failed
*/
public boolean isFailure() {
return syntaxException != null || !validationErrors.isEmpty();
}
/**
* @return the parsed document or null if it's syntactically invalid.
*/
public Document getDocument() {
return document;
}
/**
* @return the document variables or null if it's syntactically invalid.
*/
public Map getVariables() {
return variables;
}
/**
* @return the parsed document and variables or null if it's syntactically invalid.
*/
public DocumentAndVariables getDocumentAndVariables() {
if (document != null) {
return DocumentAndVariables.newDocumentAndVariables().document(document).variables(variables).build();
}
return null;
}
/**
* @return the syntax exception or null if it's syntactically valid.
*/
public InvalidSyntaxException getSyntaxException() {
return syntaxException;
}
/**
* @return a list of validation errors, which might be empty if it's syntactically invalid.
*/
public List getValidationErrors() {
return validationErrors;
}
/**
* A list of all the errors (parse and validate) that have occurred
*
* @return the errors that have occurred or empty list if there are none
*/
public List getErrors() {
List errors = new ArrayList<>();
if (syntaxException != null) {
errors.add(syntaxException.toInvalidSyntaxError());
}
errors.addAll(validationErrors);
return errors;
}
public ParseAndValidateResult transform(Consumer builderConsumer) {
Builder builder = new Builder()
.document(document).variables(variables).syntaxException(syntaxException).validationErrors(validationErrors);
builderConsumer.accept(builder);
return builder.build();
}
public static Builder newResult() {
return new Builder();
}
public static class Builder {
private Document document;
private Map variables = ImmutableKit.emptyMap();
private InvalidSyntaxException syntaxException;
private List validationErrors = ImmutableKit.emptyList();
public Builder document(Document document) {
this.document = document;
return this;
}
public Builder variables(Map variables) {
this.variables = variables;
return this;
}
public Builder validationErrors(List validationErrors) {
this.validationErrors = validationErrors;
return this;
}
public Builder syntaxException(InvalidSyntaxException syntaxException) {
this.syntaxException = syntaxException;
return this;
}
public ParseAndValidateResult build() {
return new ParseAndValidateResult(this);
}
}
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy