private Map<String, ObjectField> fieldMap(ObjectValue objectValue) { Map<String, ObjectField> result = new LinkedHashMap<>(); for (ObjectField objectField : objectValue.getObjectFields()) { result.put(objectField.getName(), objectField); } return result; }
private Map<String, ObjectField> mapObjectValueFieldsByName(ObjectValue inputValue) { Map<String, ObjectField> inputValueFieldsByName = new LinkedHashMap<>(); for (ObjectField objectField : inputValue.getObjectFields()) { inputValueFieldsByName.put(objectField.getName(), objectField); } return inputValueFieldsByName; } }
private Builder(ObjectValue existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.objectFields = existing.getObjectFields(); }
List<ObjectField> fields = objectValue.getObjectFields(); List<InputValueDefinition> inputValueDefinitions = allowedTypeDefinition.getInputValueDefinitions();
public Object buildObjectValue(ObjectValue defaultValue, GraphQLInputObjectType objectType) { Map<String, Object> map = new LinkedHashMap<>(); defaultValue.getObjectFields().forEach(of -> map.put(of.getName(), buildValue(of.getValue(), objectType.getField(of.getName()).getType()))); return map; }
@Override public TraversalControl visitObjectValue(ObjectValue node, TraverserContext<Node> context) { ObjectValue changedNode = node.transform(builder -> { List<ObjectField> objectFields = sort(node.getObjectFields(), comparing(ObjectField::getName)); builder.objectFields(objectFields); }); return changeNode(context, changedNode); }
private String value(Value value) { String argSep = compactMode ? "," : ", "; if (value instanceof IntValue) { return valueOf(((IntValue) value).getValue()); } else if (value instanceof FloatValue) { return valueOf(((FloatValue) value).getValue()); } else if (value instanceof StringValue) { return wrap("\"", valueOf(((StringValue) value).getValue()), "\""); } else if (value instanceof EnumValue) { return valueOf(((EnumValue) value).getName()); } else if (value instanceof BooleanValue) { return valueOf(((BooleanValue) value).isValue()); } else if (value instanceof NullValue) { return "null"; } else if (value instanceof ArrayValue) { return "[" + join(((ArrayValue) value).getValues(), argSep) + "]"; } else if (value instanceof ObjectValue) { return "{" + join(((ObjectValue) value).getObjectFields(), argSep) + "}"; } else if (value instanceof VariableReference) { return "$" + ((VariableReference) value).getName(); } return ""; }
private boolean isValidLiteralValue(Value value, GraphQLInputObjectType type, GraphQLSchema schema) { if (!(value instanceof ObjectValue)) { handleNotObjectError(value, type); return false; } GraphqlFieldVisibility fieldVisibility = schema.getCodeRegistry().getFieldVisibility(); ObjectValue objectValue = (ObjectValue) value; Map<String, ObjectField> objectFieldMap = fieldMap(objectValue); Set<String> missingFields = getMissingFields(type, objectFieldMap, fieldVisibility); if (!missingFields.isEmpty()) { handleMissingFieldsError(value, type, missingFields); return false; } for (ObjectField objectField : objectValue.getObjectFields()) { GraphQLInputObjectField inputObjectField = fieldVisibility.getFieldDefinition(type, objectField.getName()); if (inputObjectField == null) { handleExtraFieldError(value, type, objectField); return false; } if (!isValidLiteralValue(objectField.getValue(), inputObjectField.getType(), schema)) { handleFieldNotValidError(objectField, type); return false; } } return true; }
protected final Optional<ObjectField> getObjectField(ObjectValue objectValue, String fieldName) { return objectValue.getObjectFields().stream() .filter(it -> fieldName.equals(it.getName())) .findFirst(); }
private Map<String, ObjectField> mapObjectValueFieldsByName(ObjectValue inputValue) { Map<String, ObjectField> inputValueFieldsByName = new LinkedHashMap<>(); for (ObjectField objectField : inputValue.getObjectFields()) { inputValueFieldsByName.put(objectField.getName(), objectField); } return inputValueFieldsByName; } }
private Map<String, ObjectField> fieldMap(ObjectValue objectValue) { Map<String, ObjectField> result = new LinkedHashMap<>(); for (ObjectField objectField : objectValue.getObjectFields()) { result.put(objectField.getName(), objectField); } return result; }
private Builder(ObjectValue existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.objectFields = existing.getObjectFields(); }
public Object buildObjectValue(ObjectValue defaultValue, GraphQLInputObjectType objectType) { Map<String, Object> map = new LinkedHashMap<>(); defaultValue.getObjectFields().forEach(of -> map.put(of.getName(), buildValue(of.getValue(), objectType.getField(of.getName()).getType()))); return map; }
@Override public TraversalControl visitObjectValue(ObjectValue node, TraverserContext<Node> context) { ObjectValue changedNode = node.transform(builder -> { List<ObjectField> objectFields = sort(node.getObjectFields(), comparing(ObjectField::getName)); builder.objectFields(objectFields); }); return changeNode(context, changedNode); }
protected Predicate getArgumentPredicate(CriteriaBuilder cb, From<?,?> path, DataFetchingEnvironment environment, Argument argument) { ObjectValue whereValue = getValue(argument); if (whereValue.getChildren().isEmpty()) return cb.disjunction(); Logical logical = Optional.of(argument.getName()) .filter(it -> Arrays.asList("AND", "OR").contains(it)) .map(it -> Logical.valueOf(it)) .orElse(Logical.AND); List<Predicate> predicates = new ArrayList<>(); whereValue.getObjectFields().stream() .filter(it -> Arrays.asList("AND", "OR").contains(it.getName())) .map(it -> getArgumentPredicate(cb, path, new ArgumentEnvironment(environment, argument.getName()), new Argument(it.getName(), it.getValue()))) .forEach(predicates::add); whereValue.getObjectFields().stream() .filter(it -> !Arrays.asList("AND", "OR").contains(it.getName())) .map(it -> getFieldPredicate(it.getName(), cb, path, it, new ArgumentEnvironment(environment, argument.getName()), new Argument(it.getName(), it.getValue()))) .filter(predicate -> predicate != null) .forEach(predicates::add); if (predicates.isEmpty()) predicates.add(cb.disjunction()); return (logical == Logical.OR) ? cb.or(predicates.toArray(new Predicate[predicates.size()])) : cb.and(predicates.toArray(new Predicate[predicates.size()])); }
((ObjectValue) value).getObjectFields().forEach(objectField -> result.add(objectField.getName(), parseJsonValue(objectField.getValue()))); return result;
expressionValue.getObjectFields().stream() .filter(it -> Arrays.asList("AND","OR").contains(it.getName())) .map(it -> getFieldPredicate(fieldName, cb, path, it, expressionValue.getObjectFields().stream() .filter(it -> !Arrays.asList("AND","OR").contains(it.getName())) .map(it -> getPredicateFilter(new ObjectField(fieldName, it.getValue()),
((ObjectValue) value).getObjectFields().forEach(field -> map.put(field.getName(), parseObjectValue(field.getValue(), variables))); return map;
private String value(Value value) { String argSep = compactMode ? "," : ", "; if (value instanceof IntValue) { return valueOf(((IntValue) value).getValue()); } else if (value instanceof FloatValue) { return valueOf(((FloatValue) value).getValue()); } else if (value instanceof StringValue) { return wrap("\"", valueOf(((StringValue) value).getValue()), "\""); } else if (value instanceof EnumValue) { return valueOf(((EnumValue) value).getName()); } else if (value instanceof BooleanValue) { return valueOf(((BooleanValue) value).isValue()); } else if (value instanceof NullValue) { return "null"; } else if (value instanceof ArrayValue) { return "[" + join(((ArrayValue) value).getValues(), argSep) + "]"; } else if (value instanceof ObjectValue) { return "{" + join(((ObjectValue) value).getObjectFields(), argSep) + "}"; } else if (value instanceof VariableReference) { return "$" + ((VariableReference) value).getName(); } return ""; }
private boolean isValidLiteralValue(Value value, GraphQLInputObjectType type, GraphQLSchema schema) { if (!(value instanceof ObjectValue)) { handleNotObjectError(value, type); return false; } GraphqlFieldVisibility fieldVisibility = schema.getCodeRegistry().getFieldVisibility(); ObjectValue objectValue = (ObjectValue) value; Map<String, ObjectField> objectFieldMap = fieldMap(objectValue); Set<String> missingFields = getMissingFields(type, objectFieldMap, fieldVisibility); if (!missingFields.isEmpty()) { handleMissingFieldsError(value, type, missingFields); return false; } for (ObjectField objectField : objectValue.getObjectFields()) { GraphQLInputObjectField inputObjectField = fieldVisibility.getFieldDefinition(type, objectField.getName()); if (inputObjectField == null) { handleExtraFieldError(value, type, objectField); return false; } if (!isValidLiteralValue(objectField.getValue(), inputObjectField.getType(), schema)) { handleFieldNotValidError(objectField, type); return false; } } return true; }