private NodePrinter<FieldDefinition> fieldDefinition() { final String argSep = compactMode ? "," : ", "; return (out, node) -> { out.printf("%s", comments(node)); String args; if (hasComments(node.getInputValueDefinitions()) && !compactMode) { args = join(node.getInputValueDefinitions(), "\n"); out.printf("%s", node.getName() + wrap("(\n", args, "\n)") + ": " + spaced( type(node.getType()), directives(node.getDirectives()) ) ); } else { args = join(node.getInputValueDefinitions(), argSep); out.printf("%s", node.getName() + wrap("(", args, ")") + ": " + spaced( type(node.getType()), directives(node.getDirectives()) ) ); } }; }
@Override public FieldDefinition deepCopy() { return new FieldDefinition(name, deepCopy(type), deepCopy(inputValueDefinitions), deepCopy(directives), description, getSourceLocation(), getComments(), getIgnoredChars() ); }
private Builder(FieldDefinition existing) { this.sourceLocation = existing.getSourceLocation(); this.name = existing.getName(); this.comments = existing.getComments(); this.type = existing.getType(); this.description = existing.getDescription(); this.inputValueDefinitions = existing.getInputValueDefinitions(); this.directives = existing.getDirectives(); this.ignoredChars = existing.getIgnoredChars(); }
@Override public TraversalControl visitFieldDefinition(FieldDefinition node, TraverserContext<Node> context) { FieldDefinition changedNode = node.transform(builder -> { builder.directives(sort(node.getDirectives(), comparing(Directive::getName))); builder.inputValueDefinitions(sort(node.getInputValueDefinitions(), comparing(InputValueDefinition::getName))); }); return changeNode(context, changedNode); }
public TypeExtensionFieldRedefinitionError(TypeDefinition typeDefinition, FieldDefinition fieldDefinition) { super(typeDefinition, formatMessage(typeDefinition, fieldDefinition.getName(), fieldDefinition)); }
FieldDefinition objectFieldDef = objectFields.get(interfaceFieldDef.getName()); if (objectFieldDef == null) { errors.add(new MissingInterfaceFieldError(typeOfType, objectTypeDef, interfaceTypeDef, interfaceFieldDef)); } else { if (!typeRegistry.isSubTypeOf(objectFieldDef.getType(), interfaceFieldDef.getType())) { String interfaceFieldType = AstPrinter.printAst(interfaceFieldDef.getType()); String objectFieldType = AstPrinter.printAst(objectFieldDef.getType()); errors.add(new InterfaceFieldRedefinitionError(typeOfType, objectTypeDef, interfaceTypeDef, objectFieldDef, objectFieldType, interfaceFieldType)); List<InputValueDefinition> objectArgs = objectFieldDef.getInputValueDefinitions(); List<InputValueDefinition> interfaceArgs = interfaceFieldDef.getInputValueDefinitions(); if (objectArgs.size() != interfaceArgs.size()) { errors.add(new MissingInterfaceFieldArgumentsError(typeOfType, objectTypeDef, interfaceTypeDef, objectFieldDef));
String iri = ((StringValue) field.getDirective("href").getArgument("iri").getValue()).getValue(); contextMap.put(field.getName(), iri); }); if (node.getClass().getSimpleName().equals("FieldDefinition")) { FieldDefinition field = (FieldDefinition) node; String fieldURI = schemaNamespace + typeName + "/" + field.getName(); rdfSchema.insertStringLiteralTriple(fieldURI, HGQL_HAS_NAME, field.getName()); rdfSchema.insertObjectTriple(fieldURI, HGQL_HREF, contextMap.get(field.getName())); String serviceId = ((StringValue) field.getDirective("service").getArgument("id").getValue()).getValue(); String serviceURI = HGQL_SERVICE_NAMESPACE + serviceId; rdfSchema.insertObjectTriple(fieldURI, HGQL_HAS_SERVICE, serviceURI); rdfSchema.insertObjectTriple(serviceURI, RDF_TYPE, HGQL_SERVICE); String outputTypeUri = getOutputType(field.getType()); rdfSchema.insertObjectTriple(fieldURI, HGQL_OUTPUT_TYPE, outputTypeUri);
private void checkFieldsDirectives(List<GraphQLError> errors, TypeDefinitionRegistry typeRegistry, List<FieldDefinition> fieldDefinitions) { fieldDefinitions.forEach(definition -> { checkDirectives(FIELD_DEFINITION, errors, typeRegistry, definition, definition.getName(), definition.getDirectives()); // // and check its arguments definition.getInputValueDefinitions().forEach(arg -> checkDirectives(ARGUMENT_DEFINITION, errors, typeRegistry, arg, arg.getName(), arg.getDirectives())); }); }
private void checkForFieldRedefinition(List<GraphQLError> errors, TypeDefinition typeDefinition, List<FieldDefinition> fieldDefinitions, List<FieldDefinition> referenceFieldDefinitions) { Map<String, FieldDefinition> referenceMap = FpKit.getByName(referenceFieldDefinitions, FieldDefinition::getName, mergeFirst()); fieldDefinitions.forEach(fld -> { FieldDefinition reference = referenceMap.get(fld.getName()); if (referenceMap.containsKey(fld.getName())) { // ok they have the same field but is it the same type if (!isSameType(fld.getType(), reference.getType())) { errors.add(new TypeExtensionFieldRedefinitionError(typeDefinition, fld)); } } }); }
private void checkObjTypeFields(List<GraphQLError> errors, ObjectTypeDefinition typeDefinition, List<FieldDefinition> fieldDefinitions) { // field unique ness checkNamedUniqueness(errors, fieldDefinitions, FieldDefinition::getName, (name, fieldDef) -> new NonUniqueNameError(typeDefinition, fieldDef)); // field arg unique ness fieldDefinitions.forEach(fld -> checkNamedUniqueness(errors, fld.getInputValueDefinitions(), InputValueDefinition::getName, (name, inputValueDefinition) -> new NonUniqueArgumentError(typeDefinition, fld, name))); // directive checks fieldDefinitions.forEach(fld -> checkNamedUniqueness(errors, fld.getDirectives(), Directive::getName, (directiveName, directive) -> new NonUniqueDirectiveError(typeDefinition, fld, directiveName))); fieldDefinitions.forEach(fld -> fld.getDirectives().forEach(directive -> { checkDeprecatedDirective(errors, directive, () -> new InvalidDeprecationDirectiveError(typeDefinition, fld)); checkNamedUniqueness(errors, directive.getArguments(), Argument::getName, (argumentName, argument) -> new NonUniqueArgumentError(typeDefinition, fld, argumentName)); })); }
private void addImports(Collection<String> imports, ObjectTypeDefinition def) { for ( FieldDefinition fieldDef : def.getFieldDefinitions() ) { addImports(imports, fieldDef.getType()); } }
private void checkFieldTypesPresent(TypeDefinitionRegistry typeRegistry, List<GraphQLError> errors, TypeDefinition typeDefinition, List<FieldDefinition> fields) { List<Type> fieldTypes = fields.stream().map(FieldDefinition::getType).collect(Collectors.toList()); fieldTypes.forEach(checkTypeExists("field", typeRegistry, errors, typeDefinition)); List<Type> fieldInputValues = fields.stream() .map(f -> f.getInputValueDefinitions() .stream() .map(InputValueDefinition::getType) .collect(Collectors.toList())) .flatMap(Collection::stream) .collect(Collectors.toList()); fieldInputValues.forEach(checkTypeExists("field input", typeRegistry, errors, typeDefinition)); }
@Override public boolean providesDataFetcher(FieldWiringEnvironment environment) { return environment.getFieldDefinition().getDirective("fromCollection") != null || environment.getFieldDefinition().getDirective("lookupUri") != null || environment.getFieldDefinition().getDirective("rdf") != null || environment.getFieldDefinition().getDirective("uri") != null || environment.getFieldDefinition().getDirective("passThrough") != null || environment.getFieldDefinition().getDirective("related") != null || environment.getFieldDefinition().getDirective("dataSet") != null || environment.getFieldDefinition().getDirective("entityTitle") != null || environment.getFieldDefinition().getDirective("entityDescription") != null || environment.getFieldDefinition().getDirective("entityImage") != null || environment.getFieldDefinition().getDirective("otherDataSets") != null || environment.getFieldDefinition().getDirective("getAllOfPredicate") != null || environment.getFieldDefinition().getDirective("createMutation") != null || environment.getFieldDefinition().getDirective("editMutation") != null || environment.getFieldDefinition().getDirective("deleteMutation") != null || environment.getFieldDefinition().getDirective("persistEntityMutation") != null || environment.getFieldDefinition().getDirective("setCustomProvenanceMutation") != null; }
public FieldDefinition build() { FieldDefinition fieldDefinition = new FieldDefinition(name, type, inputValueDefinitions, directives, description, sourceLocation, comments, ignoredChars); return fieldDefinition; } }
} else if (descriptionHolder instanceof GraphQLFieldDefinition) { GraphQLFieldDefinition type = (GraphQLFieldDefinition) descriptionHolder; return descriptionAndComments(type::getDescription, type::getDefinition, () -> type.getDefinition().getDescription()); } else if (descriptionHolder instanceof GraphQLEnumValueDefinition) { GraphQLEnumValueDefinition type = (GraphQLEnumValueDefinition) descriptionHolder;
public NonUniqueDirectiveError(TypeDefinition typeDefinition, FieldDefinition fieldDefinition, String directiveName) { super(typeDefinition, format("The type '%s' with field '%s' %s has declared a directive with a non unique name '%s'", typeDefinition.getName(), fieldDefinition.getName(), lineCol(typeDefinition), directiveName)); }
private List<Field> getFields(ObjectTypeDefinition def) { List<Field> fields = new ArrayList<Field>(); for ( FieldDefinition fieldDef : def.getFieldDefinitions() ) { Field field = new Field(fieldDef.getName(), toJavaTypeName(fieldDef.getType())); field.graphQLType = toGraphQLType(fieldDef.getType()); field.dataResolver = toDataResolver(fieldDef.getType()); field.args = toArgs(fieldDef.getInputValueDefinitions()); fields.add(field); } return fields; }
String iri = ((StringValue) field.getDirective("href").getArgument("iri").getValue()).getValue(); contextMap.put(field.getName(), iri); }); if (node.getClass().getSimpleName().equals("FieldDefinition")) { FieldDefinition field = (FieldDefinition) node; String fieldURI = schemaNamespace + typeName + "/" + field.getName(); rdfSchema.insertStringLiteralTriple(fieldURI, HGQL_HAS_NAME, field.getName()); rdfSchema.insertObjectTriple(fieldURI, HGQL_HREF, contextMap.get(field.getName())); String serviceId = ((StringValue) field.getDirective("service").getArgument("id").getValue()).getValue(); String serviceURI = HGQL_SERVICE_NAMESPACE + serviceId; rdfSchema.insertObjectTriple(fieldURI, HGQL_HAS_SERVICE, serviceURI); rdfSchema.insertObjectTriple(serviceURI, RDF_TYPE, HGQL_SERVICE); String outputTypeUri = getOutputType(field.getType()); rdfSchema.insertObjectTriple(fieldURI, HGQL_OUTPUT_TYPE, outputTypeUri);
private void checkFieldsDirectives(List<GraphQLError> errors, TypeDefinitionRegistry typeRegistry, List<FieldDefinition> fieldDefinitions) { fieldDefinitions.forEach(definition -> { checkDirectives(FIELD_DEFINITION, errors, typeRegistry, definition, definition.getName(), definition.getDirectives()); // // and check its arguments definition.getInputValueDefinitions().forEach(arg -> checkDirectives(ARGUMENT_DEFINITION, errors, typeRegistry, arg, arg.getName(), arg.getDirectives())); }); }
private void checkForFieldRedefinition(List<GraphQLError> errors, TypeDefinition typeDefinition, List<FieldDefinition> fieldDefinitions, List<FieldDefinition> referenceFieldDefinitions) { Map<String, FieldDefinition> referenceMap = FpKit.getByName(referenceFieldDefinitions, FieldDefinition::getName, mergeFirst()); fieldDefinitions.forEach(fld -> { FieldDefinition reference = referenceMap.get(fld.getName()); if (referenceMap.containsKey(fld.getName())) { // ok they have the same field but is it the same type if (!isSameType(fld.getType(), reference.getType())) { errors.add(new TypeExtensionFieldRedefinitionError(typeDefinition, fld)); } } }); }