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 SchemaDefinition deepCopy() { return new SchemaDefinition(deepCopy(directives), deepCopy(operationTypeDefinitions), getSourceLocation(), getComments(), getIgnoredChars()); }
public Directive getDirective(String directiveName) { return getDirectivesByName().get(directiveName); }
@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); }
private NodePrinter<SchemaDefinition> schemaDefinition() { return (out, node) -> { out.printf("%s", comments(node)); out.printf("%s", spaced( "schema", directives(node.getDirectives()), block(node.getOperationTypeDefinitions()) )); }; }
private Optional<OperationTypeDefinition> getOpDef(String opName, SchemaDefinition schemaDef) { return schemaDef.getOperationTypeDefinitions() .stream() .filter(otd -> otd.getName().equals(opName)) .findFirst(); }
private static List<Directive> getDirectives(Definition def) { if ( def instanceof ObjectTypeDefinition ) { return ((ObjectTypeDefinition)def).getDirectives(); } if ( def instanceof InterfaceTypeDefinition ) { return ((InterfaceTypeDefinition)def).getDirectives(); } if ( def instanceof EnumTypeDefinition ) { return ((EnumTypeDefinition)def).getDirectives(); } if ( def instanceof ScalarTypeDefinition ) { return ((ScalarTypeDefinition)def).getDirectives(); } if ( def instanceof UnionTypeDefinition ) { return ((UnionTypeDefinition)def).getDirectives(); } if ( def instanceof InputObjectTypeDefinition ) { return ((InputObjectTypeDefinition)def).getDirectives(); } if ( def instanceof SchemaDefinition ) { return ((SchemaDefinition)def).getDirectives(); } return Collections.emptyList(); }
protected SchemaDefinition createSchemaDefinition(GraphqlParser.SchemaDefinitionContext ctx) { SchemaDefinition.Builder def = SchemaDefinition.newSchemaDefinition(); addCommonData(def, ctx); def.directives(createDirectives(ctx.directives())); def.operationTypeDefinitions(ctx.operationTypeDefinition().stream() .map(this::createOperationTypeDefinition).collect(toList())); return def.build(); }
@Override public SchemaDefinition withNewChildren(NodeChildrenContainer newChildren) { return transform(builder -> builder .directives(newChildren.getChildren(CHILD_DIRECTIVES)) .operationTypeDefinitions(newChildren.getChildren(CHILD_OPERATION_TYPE_DEFINITIONS)) ); }
public SchemaDefinition build() { SchemaDefinition schemaDefinition = new SchemaDefinition(directives, operationTypeDefinitions, sourceLocation, comments, ignoredChars); return schemaDefinition; } }
@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); }
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()); } } }
boolean nonDefaultQueryName = !"Query".equals(query.getName()); SchemaDefinition.Builder schemaDefinition = SchemaDefinition.newSchemaDefinition(); schemaDefinition.operationTypeDefinition(OperationTypeDefinition.newOperationTypeDefinition().name("query").typeName(query).build());
@Override public SchemaDefinition withNewChildren(NodeChildrenContainer newChildren) { return transform(builder -> builder .directives(newChildren.getChildren(CHILD_DIRECTIVES)) .operationTypeDefinitions(newChildren.getChildren(CHILD_OPERATION_TYPE_DEFINITIONS)) ); }
public SchemaDefinition build() { SchemaDefinition schemaDefinition = new SchemaDefinition(directives, operationTypeDefinitions, sourceLocation, comments, ignoredChars); return schemaDefinition; } }
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 SchemaDefinition deepCopy() { return new SchemaDefinition(deepCopy(directives), deepCopy(operationTypeDefinitions), getSourceLocation(), getComments(), getIgnoredChars()); }
List<OperationTypeDefinition> operationTypes = schemaDefinition.getOperationTypeDefinitions();
protected SchemaDefinition createSchemaDefinition(GraphqlParser.SchemaDefinitionContext ctx) { SchemaDefinition.Builder def = SchemaDefinition.newSchemaDefinition(); addCommonData(def, ctx); def.directives(createDirectives(ctx.directives())); def.operationTypeDefinitions(ctx.operationTypeDefinition().stream() .map(this::createOperationTypeDefinition).collect(toList())); return def.build(); }