private Builder(InterfaceTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.name = existing.getName(); this.description = existing.getDescription(); this.directives = existing.getDirectives(); this.definitions = existing.getFieldDefinitions(); this.ignoredChars = existing.getIgnoredChars(); }
@Override public InterfaceTypeDefinition deepCopy() { return new InterfaceTypeDefinition(name, deepCopy(definitions), deepCopy(directives), description, getSourceLocation(), getComments(), getIgnoredChars() ); }
@SuppressWarnings("unchecked") InterfaceTypeDefinition createInterface(Map<String, Object> input) { assertTrue(input.get("kind").equals("INTERFACE"), "wrong input"); InterfaceTypeDefinition.Builder interfaceTypeDefinition = InterfaceTypeDefinition.newInterfaceTypeDefinition().name((String) input.get("name")); interfaceTypeDefinition.comments(toComment((String) input.get("description"))); List<Map<String, Object>> fields = (List<Map<String, Object>>) input.get("fields"); interfaceTypeDefinition.definitions(createFields(fields)); return interfaceTypeDefinition.build(); }
@Override public TraversalControl visitInterfaceTypeDefinition(InterfaceTypeDefinition node, TraverserContext<Node> context) { InterfaceTypeDefinition changedNode = node.transform(builder -> { builder.directives(sort(node.getDirectives(), comparing(Directive::getName))); builder.definitions(sort(node.getFieldDefinitions(), comparing(FieldDefinition::getName))); }); return changeNode(context, changedNode); }
builder.name(typeDefinition.getName()); builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); buildDirectives(typeDefinition.getDirectives(), directivesOf(extensions), OBJECT, buildCtx.getDirectiveDefinitions()) ); typeDefinition.getFieldDefinitions().forEach(fieldDef -> { FieldDefAndDirectiveParams fieldAndParams = buildField(buildCtx, typeDefinition, fieldDef); builder.field(fieldAndParams.fieldDefinition);
private NodePrinter<InterfaceTypeDefinition> interfaceTypeDefinition() { return (out, node) -> { out.printf("%s", comments(node)); out.printf("%s", spaced( "interface", node.getName(), directives(node.getDirectives()), block(node.getFieldDefinitions()) ) ); }; }
private void checkInterfaceType(DiffCtx ctx, InterfaceTypeDefinition oldDef, InterfaceTypeDefinition newDef) { Map<String, FieldDefinition> oldFields = sortedMap(oldDef.getFieldDefinitions(), FieldDefinition::getName); Map<String, FieldDefinition> newFields = sortedMap(newDef.getFieldDefinitions(), FieldDefinition::getName); checkFields(ctx, oldDef, oldFields, newDef, newFields); checkDirectives(ctx, oldDef, newDef); }
private List<InterfaceTypeExtensionDefinition> interfaceTypeExtensions(InterfaceTypeDefinition typeDefinition, BuildContext buildCtx) { return nvl(buildCtx.typeRegistry.interfaceTypeExtensions().get(typeDefinition.getName())); }
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(); }
public InterfaceTypeDefinition build() { InterfaceTypeDefinition interfaceTypeDefinition = new InterfaceTypeDefinition(name, definitions, directives, description, sourceLocation, comments, ignoredChars); return interfaceTypeDefinition; } }
} else if (descriptionHolder instanceof GraphQLInterfaceType) { GraphQLInterfaceType type = (GraphQLInterfaceType) descriptionHolder; return descriptionAndComments(type::getDescription, type::getDefinition, () -> type.getDefinition().getDescription()); } else if (descriptionHolder instanceof GraphQLScalarType) { GraphQLScalarType type = (GraphQLScalarType) descriptionHolder;
builder.name(typeDefinition.getName()); builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription())); buildDirectives(typeDefinition.getDirectives(), directivesOf(extensions), OBJECT, buildCtx.getDirectiveDefinitions()) ); typeDefinition.getFieldDefinitions().forEach(fieldDef -> { FieldDefAndDirectiveParams fieldAndParams = buildField(buildCtx, typeDefinition, fieldDef); builder.field(fieldAndParams.fieldDefinition);
private NodePrinter<InterfaceTypeDefinition> interfaceTypeDefinition() { return (out, node) -> { out.printf("%s", comments(node)); out.printf("%s", spaced( "interface", node.getName(), directives(node.getDirectives()), block(node.getFieldDefinitions()) ) ); }; }
@Override public TraversalControl visitInterfaceTypeDefinition(InterfaceTypeDefinition node, TraverserContext<Node> context) { InterfaceTypeDefinition changedNode = node.transform(builder -> { builder.directives(sort(node.getDirectives(), comparing(Directive::getName))); builder.definitions(sort(node.getFieldDefinitions(), comparing(FieldDefinition::getName))); }); return changeNode(context, changedNode); }
List<FieldDefinition> fields = interfaceType.getFieldDefinitions();
/** * Returns the list of object types that implement the given interface type * * @param targetInterface the target to search for * * @return the list of object types that implement the given interface type */ public List<ObjectTypeDefinition> getImplementationsOf(InterfaceTypeDefinition targetInterface) { List<ObjectTypeDefinition> objectTypeDefinitions = getTypes(ObjectTypeDefinition.class); return objectTypeDefinitions.stream().filter(objectTypeDefinition -> { List<Type> implementsList = objectTypeDefinition.getImplements(); for (Type iFace : implementsList) { Optional<InterfaceTypeDefinition> interfaceTypeDef = getType(iFace, InterfaceTypeDefinition.class); if (interfaceTypeDef.isPresent()) { boolean equals = interfaceTypeDef.get().getName().equals(targetInterface.getName()); if (equals) { return true; } } } return false; }).collect(Collectors.toList()); }
public InterfaceTypeDefinition build() { InterfaceTypeDefinition interfaceTypeDefinition = new InterfaceTypeDefinition(name, definitions, directives, description, sourceLocation, comments, ignoredChars); return interfaceTypeDefinition; } }
} else if (descriptionHolder instanceof GraphQLInterfaceType) { GraphQLInterfaceType type = (GraphQLInterfaceType) descriptionHolder; return descriptionAndComments(type::getDescription, type::getDefinition, () -> type.getDefinition().getDescription()); } else if (descriptionHolder instanceof GraphQLScalarType) { GraphQLScalarType type = (GraphQLScalarType) descriptionHolder;
private Builder(InterfaceTypeDefinition existing) { this.sourceLocation = existing.getSourceLocation(); this.comments = existing.getComments(); this.name = existing.getName(); this.description = existing.getDescription(); this.directives = existing.getDirectives(); this.definitions = existing.getFieldDefinitions(); this.ignoredChars = existing.getIgnoredChars(); }
@Override public InterfaceTypeDefinition deepCopy() { return new InterfaceTypeDefinition(name, deepCopy(definitions), deepCopy(directives), description, getSourceLocation(), getComments(), getIgnoredChars() ); }