@Override public VariableDefinition deepCopy() { return new VariableDefinition(name, deepCopy(type), deepCopy(defaultValue), getSourceLocation(), getComments(), getIgnoredChars() ); }
private Builder(VariableDefinition existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.name = existing.getName(); this.type = existing.getType(); this.defaultValue = existing.getDefaultValue(); this.ignoredChars = existing.getIgnoredChars(); }
@Override public void leaveOperationDefinition(OperationDefinition operationDefinition) { for (VariableDefinition variableDefinition : variableDefinitions) { if (!usedVariables.contains(variableDefinition.getName())) { String message = String.format("Unused variable %s", variableDefinition.getName()); addError(ValidationErrorType.UnusedVariable, variableDefinition.getSourceLocation(), message); } } }
private NodePrinter<VariableDefinition> variableDefinition() { String nameTypeSep = compactMode ? ":" : ": "; String defaultValueEquals = compactMode ? "=" : " = "; return (out, node) -> out.printf("$%s%s%s%s", node.getName(), nameTypeSep, type(node.getType()), wrap(defaultValueEquals, node.getDefaultValue(), "") ); }
private Object getVariableValue(GraphqlFieldVisibility fieldVisibility, VariableDefinition variableDefinition, GraphQLType variableType, Object value) { if (value == null && variableDefinition.getDefaultValue() != null) { return coerceValueAst(fieldVisibility, variableType, variableDefinition.getDefaultValue(), null); } return coerceValue(fieldVisibility, variableDefinition, variableDefinition.getName(), variableType, value); }
@Override public void checkVariableDefinition(VariableDefinition variableDefinition) { TypeName unmodifiedAstType = getValidationUtil().getUnmodifiedType(variableDefinition.getType()); GraphQLType type = getValidationContext().getSchema().getType(unmodifiedAstType.getName()); if (type == null) return; if (!isInput(type)) { String message = "Wrong type for a variable"; addError(ValidationErrorType.NonInputTypeOnVariable, variableDefinition.getSourceLocation(), message); } } }
@Override public void checkVariableDefinition(VariableDefinition variableDefinition) { GraphQLInputType inputType = getValidationContext().getInputType(); if (inputType == null) return; if (isNonNull(inputType) && variableDefinition.getDefaultValue() != null) { String message = "Missing value for non null type"; addError(ValidationErrorType.DefaultForNonNullArgument, variableDefinition.getSourceLocation(), message); } if (variableDefinition.getDefaultValue() != null && !getValidationUtil().isValidLiteralValue(variableDefinition.getDefaultValue(), inputType, getValidationContext().getSchema())) { String message = String.format("Bad default value %s for type %s", variableDefinition.getDefaultValue(), inputType.getName()); addError(ValidationErrorType.BadValueForDefaultArg, variableDefinition.getSourceLocation(), message); } } }
@Override public void checkVariable(VariableReference variableReference) { VariableDefinition variableDefinition = variableDefinitionMap.get(variableReference.getName()); if (variableDefinition == null) { return; } GraphQLType variableType = TypeFromAST.getTypeFromAST(getValidationContext().getSchema(), variableDefinition.getType()); if (variableType == null) { return; } GraphQLInputType expectedType = getValidationContext().getInputType(); if (expectedType == null) { // we must have a unknown variable say to not have a known type return; } if (!variablesTypesMatcher.doesVariableTypesMatch(variableType, variableDefinition.getDefaultValue(), expectedType)) { GraphQLType effectiveType = variablesTypesMatcher.effectiveType(variableType, variableDefinition.getDefaultValue()); String message = String.format("Variable type '%s' doesn't match expected type '%s'", GraphQLTypeUtil.simplePrint(effectiveType), GraphQLTypeUtil.simplePrint(expectedType)); addError(ValidationErrorType.VariableTypeMismatch, variableReference.getSourceLocation(), message); } }
@Override public void checkVariableDefinition(VariableDefinition variableDefinition) { variableNames.add(variableDefinition.getName()); } }
@Override public VariableDefinition withNewChildren(NodeChildrenContainer newChildren) { return transform(builder -> builder .type(newChildren.getChildOrNull(CHILD_TYPE)) .defaultValue(newChildren.getChildOrNull(CHILD_DEFAULT_VALUE)) ); }
private void enterImpl(VariableDefinition variableDefinition) { GraphQLType type = TypeFromAST.getTypeFromAST(schema, variableDefinition.getType()); addInputType(type instanceof GraphQLInputType ? (GraphQLInputType) type : null); }
public VariableDefinition build() { VariableDefinition variableDefinition = new VariableDefinition( name, type, defaultValue, sourceLocation, comments, ignoredChars ); return variableDefinition; } }
protected VariableDefinition createVariableDefinition(GraphqlParser.VariableDefinitionContext ctx) { VariableDefinition.Builder variableDefinition = VariableDefinition.newVariableDefinition(); addCommonData(variableDefinition, ctx); variableDefinition.name(ctx.variable().name().getText()); if (ctx.defaultValue() != null) { Value value = createValue(ctx.defaultValue().value()); variableDefinition.defaultValue(value); } variableDefinition.type(createType(ctx.type())); return variableDefinition.build(); }
"Variable '" + inputName + "' has an invalid value. " + e.getMessage(), e.getCause(), variableDefinition.getSourceLocation() );
Map<String, Object> coercedValues = new LinkedHashMap<>(); for (VariableDefinition variableDefinition : variableDefinitions) { String variableName = variableDefinition.getName(); GraphQLType variableType = TypeFromAST.getTypeFromAST(schema, variableDefinition.getType()); Value defaultValue = variableDefinition.getDefaultValue(); if (defaultValue != null) { Object coercedValue = coerceValueAst(fieldVisibility, variableType, variableDefinition.getDefaultValue(), null); coercedValues.put(variableName, coercedValue); } else if (isNonNull(variableType)) {
public NonNullableValueCoercedAsNullException(VariableDefinition variableDefinition, GraphQLType graphQLType) { super(format("Variable '%s' has coerced Null value for NonNull type '%s'", variableDefinition.getName(), GraphQLTypeUtil.simplePrint(graphQLType))); this.sourceLocations = Collections.singletonList(variableDefinition.getSourceLocation()); }
private Object getVariableValue(GraphqlFieldVisibility fieldVisibility, VariableDefinition variableDefinition, GraphQLType variableType, Object value) { if (value == null && variableDefinition.getDefaultValue() != null) { return coerceValueAst(fieldVisibility, variableType, variableDefinition.getDefaultValue(), null); } return coerceValue(fieldVisibility, variableDefinition, variableDefinition.getName(), variableType, value); }
@Override public void checkVariableDefinition(VariableDefinition variableDefinition) { TypeName unmodifiedAstType = getValidationUtil().getUnmodifiedType(variableDefinition.getType()); GraphQLType type = getValidationContext().getSchema().getType(unmodifiedAstType.getName()); if (type == null) return; if (!isInput(type)) { String message = "Wrong type for a variable"; addError(ValidationErrorType.NonInputTypeOnVariable, variableDefinition.getSourceLocation(), message); } } }
@Override public void checkVariableDefinition(VariableDefinition variableDefinition) { GraphQLInputType inputType = getValidationContext().getInputType(); if (inputType == null) return; if (isNonNull(inputType) && variableDefinition.getDefaultValue() != null) { String message = "Missing value for non null type"; addError(ValidationErrorType.DefaultForNonNullArgument, variableDefinition.getSourceLocation(), message); } if (variableDefinition.getDefaultValue() != null && !getValidationUtil().isValidLiteralValue(variableDefinition.getDefaultValue(), inputType, getValidationContext().getSchema())) { String message = String.format("Bad default value %s for type %s", variableDefinition.getDefaultValue(), inputType.getName()); addError(ValidationErrorType.BadValueForDefaultArg, variableDefinition.getSourceLocation(), message); } } }