private void buildMap(List<GraphQLInputObjectField> fields) { for (GraphQLInputObjectField field : fields) { String name = field.getName(); if (fieldMap.containsKey(name)) throw new AssertException("field " + name + " redefined"); fieldMap.put(name, field); } }
public Builder field(GraphQLInputObjectField field) { assertNotNull(field, "field can't be null"); fields.put(field.getName(), field); return this; }
public NonNullableValueCoercedAsNullException(GraphQLInputObjectField inputTypeField) { super(format("Input field '%s' has coerced Null value for NonNull type '%s'", inputTypeField.getName(), GraphQLTypeUtil.simplePrint(inputTypeField.getType()))); }
private Object coerceValueForInputObjectType(GraphqlFieldVisibility fieldVisibility, VariableDefinition variableDefinition, GraphQLInputObjectType inputObjectType, Map<String, Object> input) { Map<String, Object> result = new LinkedHashMap<>(); List<GraphQLInputObjectField> fields = fieldVisibility.getFieldDefinitions(inputObjectType); List<String> fieldNames = fields.stream().map(GraphQLInputObjectField::getName).collect(Collectors.toList()); for (String inputFieldName : input.keySet()) { if (!fieldNames.contains(inputFieldName)) { throw new InputMapDefinesTooManyFieldsException(inputObjectType, inputFieldName); } } for (GraphQLInputObjectField inputField : fields) { if (input.containsKey(inputField.getName()) || alwaysHasValue(inputField)) { Object value = coerceValue(fieldVisibility, variableDefinition, inputField.getName(), inputField.getType(), input.get(inputField.getName())); result.put(inputField.getName(), value == null ? inputField.getDefaultValue() : value); } } return result; }
@Override public List<GraphQLInputObjectField> getFieldDefinitions(GraphQLInputFieldsContainer fieldsContainer) { return fieldsContainer.getFieldDefinitions().stream() .filter(fieldDefinition -> !block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))) .collect(Collectors.toList()); }
private static Value handleInputObject(Object _value, GraphQLInputObjectType type) { Map mapValue = objToMap(_value); List<GraphQLInputObjectField> fields = type.getFields(); List<ObjectField> fieldNodes = new ArrayList<>(); fields.forEach(field -> { GraphQLInputType fieldType = field.getType(); Value nodeValue = astFromValue(mapValue.get(field.getName()), fieldType); if (nodeValue != null) { fieldNodes.add(ObjectField.newObjectField().name(field.getName()).value(nodeValue).build()); } }); return ObjectValue.newObjectValue().objectFields(fieldNodes).build(); }
private void check(GraphQLInputObjectType type, Set<GraphQLType> seen, List<String> path, SchemaValidationErrorCollector validationErrorCollector) { if (seen.contains(type)) { validationErrorCollector.addError(new SchemaValidationError(SchemaValidationErrorType.UnbrokenInputCycle, getErrorMessage(path))); return; } seen.add(type); for (GraphQLInputObjectField field : type.getFieldDefinitions()) { if (isNonNull(field.getType())) { GraphQLType unwrapped = unwrapNonNull((GraphQLNonNull) field.getType()); if (unwrapped instanceof GraphQLInputObjectType) { path = new ArrayList<>(path); path.add(field.getName() + "!"); check((GraphQLInputObjectType) unwrapped, new LinkedHashSet<>(seen), path, validationErrorCollector); } } } }
@Override public GraphQLInputObjectField getFieldDefinition(GraphQLInputFieldsContainer fieldsContainer, String fieldName) { GraphQLInputObjectField fieldDefinition = fieldsContainer.getFieldDefinition(fieldName); if (fieldDefinition != null) { if (block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))) { fieldDefinition = null; } } return fieldDefinition; }
public Builder(GraphQLInputObjectField existing) { this.name = existing.getName(); this.description = existing.getDescription(); this.defaultValue = existing.getDefaultValue(); this.type = existing.getType(); this.definition = existing.getDefinition(); this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); }
if (inputValueFieldsByName.containsKey(inputTypeField.getName())) { boolean putObjectInMap = true; ObjectField field = inputValueFieldsByName.get(inputTypeField.getName()); Value fieldInputValue = field.getValue(); result.put(inputTypeField.getName(), inputTypeField.getDefaultValue()); } else { assertNonNullInputField(inputTypeField);
private TypePrinter<GraphQLInputObjectType> inputObjectPrinter() { return (out, type, visibility) -> { if (isIntrospectionType(type)) { return; } printComments(out, type, ""); out.format("input %s%s {\n", type.getName(), directivesString(type.getDirectives())); visibility.getFieldDefinitions(type) .stream() .sorted(Comparator.comparing(GraphQLInputObjectField::getName)) .forEach(fd -> { printComments(out, fd, " "); out.format(" %s: %s", fd.getName(), typeString(fd.getType())); Object defaultValue = fd.getDefaultValue(); if (defaultValue != null) { String astValue = printAst(defaultValue, fd.getType()); out.format(" = %s", astValue); } out.format(directivesString(fd.getDirectives())); out.format("\n"); }); out.format("}\n\n"); }; }
private GraphQLInputObjectType buildInputObjectType(BuildContext buildCtx, InputObjectTypeDefinition typeDefinition) { buildCtx.enterNode(typeDefinition); GraphQLInputObjectType.Builder builder = GraphQLInputObjectType.newInputObject(); builder.definition(typeDefinition); builder.name(typeDefinition.getName()); builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); List<InputObjectTypeExtensionDefinition> extensions = inputObjectTypeExtensions(typeDefinition, buildCtx); builder.withDirectives( buildDirectives(typeDefinition.getDirectives(), directivesOf(extensions), INPUT_OBJECT, buildCtx.getDirectiveDefinitions()) ); typeDefinition.getInputValueDefinitions().forEach(inputValue -> builder.field(buildInputField(buildCtx, inputValue))); extensions.forEach(extension -> extension.getInputValueDefinitions().forEach(inputValueDefinition -> { GraphQLInputObjectField inputField = buildInputField(buildCtx, inputValueDefinition); if (!builder.hasField(inputField.getName())) { builder.field(inputField); } })); GraphQLInputObjectType inputObjectType = builder.build(); inputObjectType = directiveBehaviour.onInputObjectType(inputObjectType, buildCtx.mkBehaviourParams()); return buildCtx.exitNode(inputObjectType); }
private void buildMap(List<GraphQLInputObjectField> fields) { for (GraphQLInputObjectField field : fields) { String name = field.getName(); if (fieldMap.containsKey(name)) { throw new AssertException("field " + name + " redefined"); } fieldMap.put(name, field); } }
public Builder field(GraphQLInputObjectField field) { assertNotNull(field, "field can't be null"); fields.put(field.getName(), field); return this; }
private void buildMap(List<GraphQLInputObjectField> fields) { for (GraphQLInputObjectField field : fields) { String name = field.getName(); if (fieldMap.containsKey(name)) throw new AssertException("field " + name + " redefined"); fieldMap.put(name, field); } }
private void buildMap(List<GraphQLInputObjectField> fields) { for (GraphQLInputObjectField field : fields) { String name = field.getName(); if (fieldMap.containsKey(name)) { throw new AssertException("field " + name + " redefined"); } fieldMap.put(name, field); } }
@Override public List<GraphQLInputObjectField> getFieldDefinitions(GraphQLInputFieldsContainer fieldsContainer) { return fieldsContainer.getFieldDefinitions().stream() .filter(fieldDefinition -> !block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))) .collect(Collectors.toList()); }
private static Value handleInputObject(Object _value, GraphQLInputObjectType type) { Map mapValue = objToMap(_value); List<GraphQLInputObjectField> fields = type.getFields(); List<ObjectField> fieldNodes = new ArrayList<>(); fields.forEach(field -> { GraphQLInputType fieldType = field.getType(); Value nodeValue = astFromValue(mapValue.get(field.getName()), fieldType); if (nodeValue != null) { fieldNodes.add(ObjectField.newObjectField().name(field.getName()).value(nodeValue).build()); } }); return ObjectValue.newObjectValue().objectFields(fieldNodes).build(); }
@Override public GraphQLInputObjectField getFieldDefinition(GraphQLInputFieldsContainer fieldsContainer, String fieldName) { GraphQLInputObjectField fieldDefinition = fieldsContainer.getFieldDefinition(fieldName); if (fieldDefinition != null) { if (block(mkFQN(fieldsContainer.getName(), fieldDefinition.getName()))) { fieldDefinition = null; } } return fieldDefinition; }
public Builder(GraphQLInputObjectField existing) { this.name = existing.getName(); this.description = existing.getDescription(); this.defaultValue = existing.getDefaultValue(); this.type = existing.getType(); this.definition = existing.getDefinition(); this.directives.putAll(getByName(existing.getDirectives(), GraphQLDirective::getName)); }