private Optional<OperationTypeDefinition> getOpDef(String opName, SchemaDefinition schemaDef) { return schemaDef.getOperationTypeDefinitions() .stream() .filter(otd -> otd.getName().equals(opName)) .findFirst(); }
private NodePrinter<SchemaDefinition> schemaDefinition() { return (out, node) -> { out.printf("%s", comments(node)); out.printf("%s", spaced( "schema", directives(node.getDirectives()), block(node.getOperationTypeDefinitions()) )); }; }
private void checkSchemaInvariants(List<GraphQLError> errors, TypeDefinitionRegistry typeRegistry) { /* https://github.com/facebook/graphql/pull/90/files#diff-fe406b08746616e2f5f00909488cce66R1000 GraphQL type system definitions can omit the schema definition when the query and mutation root types are named `Query` and `Mutation`, respectively. */ // schema if (!typeRegistry.schemaDefinition().isPresent()) { if (!typeRegistry.getType("Query").isPresent()) { errors.add(new SchemaMissingError()); } } else { SchemaDefinition schemaDefinition = typeRegistry.schemaDefinition().get(); List<OperationTypeDefinition> operationTypeDefinitions = schemaDefinition.getOperationTypeDefinitions(); operationTypeDefinitions .forEach(checkOperationTypesExist(typeRegistry, errors)); operationTypeDefinitions .forEach(checkOperationTypesAreObjects(typeRegistry, errors)); // ensure we have a "query" one Optional<OperationTypeDefinition> query = operationTypeDefinitions.stream().filter(op -> "query".equals(op.getName())).findFirst(); if (!query.isPresent()) { errors.add(new QueryOperationMissingError()); } } }
private Builder(SchemaDefinition existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.directives = existing.getDirectives(); this.operationTypeDefinitions = existing.getOperationTypeDefinitions(); this.ignoredChars = existing.getIgnoredChars(); }
@Override public TraversalControl visitSchemaDefinition(SchemaDefinition node, TraverserContext<Node> context) { SchemaDefinition changedNode = node.transform(builder -> { builder.directives(sort(node.getDirectives(), comparing(Directive::getName))); builder.operationTypeDefinitions(sort(node.getOperationTypeDefinitions(), comparing(OperationTypeDefinition::getName))); }); return changeNode(context, changedNode); }
List<OperationTypeDefinition> operationTypes = schemaDefinition.getOperationTypeDefinitions();
private Optional<OperationTypeDefinition> getOpDef(String opName, SchemaDefinition schemaDef) { return schemaDef.getOperationTypeDefinitions() .stream() .filter(otd -> otd.getName().equals(opName)) .findFirst(); }
private void addImports(Collection<String> imports, SchemaDefinition def) { for ( OperationTypeDefinition fieldDef : def.getOperationTypeDefinitions() ) { addImports(imports, fieldDef.getType()); } }
private List<Field> getFields(SchemaDefinition def) { List<Field> fields = new ArrayList<Field>(); for ( OperationTypeDefinition fieldDef : def.getOperationTypeDefinitions() ) { fields.add(new Field(fieldDef.getName(), toJavaTypeName(fieldDef.getType()))); } return fields; }
private NodePrinter<SchemaDefinition> schemaDefinition() { return (out, node) -> { out.printf("%s", comments(node)); out.printf("%s", spaced( "schema", directives(node.getDirectives()), block(node.getOperationTypeDefinitions()) )); }; }
private void checkSchemaInvariants(List<GraphQLError> errors, TypeDefinitionRegistry typeRegistry) { /* https://github.com/facebook/graphql/pull/90/files#diff-fe406b08746616e2f5f00909488cce66R1000 GraphQL type system definitions can omit the schema definition when the query and mutation root types are named `Query` and `Mutation`, respectively. */ // schema if (!typeRegistry.schemaDefinition().isPresent()) { if (!typeRegistry.getType("Query").isPresent()) { errors.add(new SchemaMissingError()); } } else { SchemaDefinition schemaDefinition = typeRegistry.schemaDefinition().get(); List<OperationTypeDefinition> operationTypeDefinitions = schemaDefinition.getOperationTypeDefinitions(); operationTypeDefinitions .forEach(checkOperationTypesExist(typeRegistry, errors)); operationTypeDefinitions .forEach(checkOperationTypesAreObjects(typeRegistry, errors)); // ensure we have a "query" one Optional<OperationTypeDefinition> query = operationTypeDefinitions.stream().filter(op -> "query".equals(op.getName())).findFirst(); if (!query.isPresent()) { errors.add(new QueryOperationMissingError()); } } }
private Builder(SchemaDefinition existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.directives = existing.getDirectives(); this.operationTypeDefinitions = existing.getOperationTypeDefinitions(); this.ignoredChars = existing.getIgnoredChars(); }
@Override public TraversalControl visitSchemaDefinition(SchemaDefinition node, TraverserContext<Node> context) { SchemaDefinition changedNode = node.transform(builder -> { builder.directives(sort(node.getDirectives(), comparing(Directive::getName))); builder.operationTypeDefinitions(sort(node.getOperationTypeDefinitions(), comparing(OperationTypeDefinition::getName))); }); return changeNode(context, changedNode); }
List<OperationTypeDefinition> operationTypes = schemaDefinition.getOperationTypeDefinitions();