package graphql; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; @Internal public class ExecutionResultImpl implements ExecutionResult { private final List<GraphQLError> errors = new ArrayList<>(); private Object data; private Map<Object,Object> extensions = null; public ExecutionResultImpl(List<? extends GraphQLError> errors) { this(null,errors,null); } public ExecutionResultImpl(Object data, List<? extends GraphQLError> errors) { this(data,errors,null); } public ExecutionResultImpl(Object data, List<? extends GraphQLError> errors, Map<Object,Object> extensions) { this.data = data; if (errors != null && !errors.isEmpty()) { this.errors.addAll(errors); } if (extensions != null && !extensions.isEmpty()) { this.extensions = new HashMap<>(extensions); } } public void addErrors(List<? extends GraphQLError> errors) { this.errors.addAll(errors); } public void addExtensions(Map<Object, Object> extensions) { this.extensions.putAll(extensions); } @Override public <T> T getData() { //noinspection unchecked return (T) data; } public void setData(Object result) { this.data = result; } @Override public List<GraphQLError> getErrors() { return new ArrayList<>(errors); } @Override public Map<Object, Object> getExtensions() { return extensions == null ? null : new HashMap<>(extensions); } }