private Builder(OperationTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.name = existing.getName(); this.typeName = existing.getTypeName(); this.ignoredChars = existing.getIgnoredChars(); }
@Override public OperationTypeDefinition deepCopy() { return new OperationTypeDefinition(name, deepCopy(typeName), getSourceLocation(), getComments(), getIgnoredChars()); }
@Override public OperationTypeDefinition withNewChildren(NodeChildrenContainer newChildren) { return transform(builder -> builder .typeName(newChildren.getChildOrNull(CHILD_TYPE_NAME)) ); }
private NodePrinter<OperationTypeDefinition> operationTypeDefinition() { String nameTypeSep = compactMode ? ":" : ": "; return (out, node) -> out.printf("%s%s%s", node.getName(), nameTypeSep, type(node.getTypeName())); }
public OperationTypesMustBeObjects(OperationTypeDefinition op) { super(op, format("The operation type '%s' MUST have a object type as its definition %s", op.getName(), lineCol(op))); } }
private Optional<OperationTypeDefinition> synthOperationTypeDefinition(Function<Type, Optional<ObjectTypeDefinition>> typeReteriver, String opName) { TypeName type = TypeName.newTypeName().name(capitalize(opName)).build(); Optional<ObjectTypeDefinition> typeDef = typeReteriver.apply(type); return typeDef.map(objectTypeDefinition -> OperationTypeDefinition.newOperationTypeDefinition().name(opName).typeName(type).build()); }
private GraphQLObjectType buildOperation(BuildContext buildCtx, OperationTypeDefinition operation) { Type type = operation.getTypeName(); return buildOutputType(buildCtx, type); }
public OperationTypeDefinition build() { OperationTypeDefinition operationTypeDefinition = new OperationTypeDefinition(name, typeName, sourceLocation, comments, ignoredChars); return operationTypeDefinition; } }
private Consumer<OperationTypeDefinition> checkOperationTypesExist(TypeDefinitionRegistry typeRegistry, List<GraphQLError> errors) { return op -> { TypeName unwrapped = TypeInfo.typeInfo(op.getTypeName()).getTypeName(); if (!typeRegistry.hasType(unwrapped)) { errors.add(new MissingTypeError("operation", op, op.getName(), unwrapped)); } }; }
private Optional<OperationTypeDefinition> getOpDef(String opName, SchemaDefinition schemaDef) { return schemaDef.getOperationTypeDefinitions() .stream() .filter(otd -> otd.getName().equals(opName)) .findFirst(); }
schemaDefinition.operationTypeDefinition(OperationTypeDefinition.newOperationTypeDefinition().name("query").typeName(query).build()); TypeName mutation = TypeName.newTypeName().name((String) mutationType.get("name")).build(); nonDefaultMutationName = !"Mutation".equals(mutation.getName()); schemaDefinition.operationTypeDefinition(OperationTypeDefinition.newOperationTypeDefinition().name("mutation").typeName(mutation).build()); TypeName subscription = TypeName.newTypeName().name(((String) subscriptionType.get("name"))).build(); nonDefaultSubscriptionName = !"Subscription".equals(subscription.getName()); schemaDefinition.operationTypeDefinition(OperationTypeDefinition.newOperationTypeDefinition().name("subscription").typeName(subscription).build());
private Consumer<OperationTypeDefinition> checkOperationTypesAreObjects(TypeDefinitionRegistry typeRegistry, List<GraphQLError> errors) { return op -> { // make sure it is defined as a ObjectTypeDef Type queryType = op.getTypeName(); Optional<TypeDefinition> type = typeRegistry.getType(queryType); type.ifPresent(typeDef -> { if (!(typeDef instanceof ObjectTypeDefinition)) { errors.add(new OperationTypesMustBeObjects(op)); } }); }; }
public OperationTypeDefinition build() { OperationTypeDefinition operationTypeDefinition = new OperationTypeDefinition(name, typeName, sourceLocation, comments, ignoredChars); return operationTypeDefinition; } }
private Builder(OperationTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.name = existing.getName(); this.typeName = existing.getTypeName(); this.ignoredChars = existing.getIgnoredChars(); }
@Override public OperationTypeDefinition deepCopy() { return new OperationTypeDefinition(name, deepCopy(typeName), getSourceLocation(), getComments(), getIgnoredChars()); }
private NodePrinter<OperationTypeDefinition> operationTypeDefinition() { String nameTypeSep = compactMode ? ":" : ": "; return (out, node) -> out.printf("%s%s%s", node.getName(), nameTypeSep, type(node.getTypeName())); }
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()); } } }
protected OperationTypeDefinition createOperationTypeDefinition(GraphqlParser.OperationTypeDefinitionContext ctx) { OperationTypeDefinition.Builder def = OperationTypeDefinition.newOperationTypeDefinition(); def.name(ctx.operationType().getText()); def.typeName(createTypeName(ctx.typeName())); addCommonData(def, ctx); return def.build(); }
OperationTypeDefinition newOpTypeDefinition = newOpTypeDef.get(); Type oldType = oldOpTypeDefinition.getTypeName(); return; checkType(ctx, oldType, newOpTypeDefinition.getTypeName());