private List<InterfaceTypeExtensionDefinition> interfaceTypeExtensions(InterfaceTypeDefinition typeDefinition, BuildContext buildCtx) { return nvl(buildCtx.typeRegistry.interfaceTypeExtensions().get(typeDefinition.getName())); }
/** * 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 InterfaceFieldRedefinitionError(String typeOfType, ObjectTypeDefinition objectType, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, String objectFieldType, String interfaceFieldType) { super(objectType, format("The %s type '%s' %s has tried to redefine field '%s' defined via interface '%s' %s from '%s' to '%s'", typeOfType, objectType.getName(), lineCol(objectType), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef), interfaceFieldType, objectFieldType)); } }
public MissingInterfaceFieldError(String typeOfType, ObjectTypeDefinition objectType, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition interfaceFieldDef) { super(objectType, format("The %s type '%s' %s does not have a field '%s' required via interface '%s' %s", typeOfType, objectType.getName(), lineCol(objectType), interfaceFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef))); } }
public MissingInterfaceFieldArgumentsError(String typeOfType, ObjectTypeDefinition objectTypeDef, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef) { super(objectTypeDef, format("The %s type '%s' %s field '%s' does not have the same number of arguments as specified via interface '%s' %s", typeOfType, objectTypeDef.getName(), lineCol(objectTypeDef), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef))); } }
public InterfaceFieldArgumentRedefinitionError(String typeOfType, ObjectTypeDefinition objectTypeDef, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, String objectArgStr, String interfaceArgStr) { super(objectTypeDef, format("The %s type '%s' %s has tried to redefine field '%s' arguments defined via interface '%s' %s from '%s' to '%s", typeOfType, objectTypeDef.getName(), lineCol(objectTypeDef), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef), interfaceArgStr, objectArgStr)); } }
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 checkImplements(DiffCtx ctx, ObjectTypeDefinition old, List<Type> oldImplements, List<Type> newImplements) { Map<String, Type> oldImplementsMap = sortedMap(oldImplements, t -> ((TypeName) t).getName()); Map<String, Type> newImplementsMap = sortedMap(newImplements, t -> ((TypeName) t).getName()); for (Map.Entry<String, Type> entry : oldImplementsMap.entrySet()) { InterfaceTypeDefinition oldInterface = ctx.getOldTypeDef(entry.getValue(), InterfaceTypeDefinition.class).get(); Optional<InterfaceTypeDefinition> newInterface = ctx.getNewTypeDef(newImplementsMap.get(entry.getKey()), InterfaceTypeDefinition.class); if (!newInterface.isPresent()) { ctx.report(DiffEvent.apiBreakage() .category(DiffCategory.MISSING) .typeName(old.getName()) .typeKind(getTypeKind(old)) .components(oldInterface.getName()) .reasonMsg("The new API is missing the interface named '%s'", oldInterface.getName()) .build()); } else { checkInterfaceType(ctx, oldInterface, newInterface.get()); } } }
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(); }
@SuppressWarnings("Duplicates") private TypeResolver getTypeResolverForInterface(BuildContext buildCtx, InterfaceTypeDefinition interfaceType) { TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); RuntimeWiring wiring = buildCtx.getWiring(); WiringFactory wiringFactory = wiring.getWiringFactory(); TypeResolver typeResolver; InterfaceWiringEnvironment environment = new InterfaceWiringEnvironment(typeRegistry, interfaceType); if (wiringFactory.providesTypeResolver(environment)) { typeResolver = wiringFactory.getTypeResolver(environment); assertNotNull(typeResolver, "The WiringFactory indicated it provides a interface type resolver but then returned null"); } else { typeResolver = wiring.getTypeResolvers().get(interfaceType.getName()); if (typeResolver == null) { // this really should be checked earlier via a pre-flight check typeResolver = new TypeResolverProxy(); } } return typeResolver; }
builder.name(typeDefinition.getName()); builder.description(schemaGeneratorHelper.buildDescription(typeDefinition, typeDefinition.getDescription()));
private List<InterfaceTypeExtensionDefinition> interfaceTypeExtensions(InterfaceTypeDefinition typeDefinition, BuildContext buildCtx) { return nvl(buildCtx.typeRegistry.interfaceTypeExtensions().get(typeDefinition.getName())); }
public MissingInterfaceFieldArgumentsError(String typeOfType, ObjectTypeDefinition objectTypeDef, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef) { super(objectTypeDef, format("The %s type '%s' %s field '%s' does not have the same number of arguments as specified via interface '%s' %s", typeOfType, objectTypeDef.getName(), lineCol(objectTypeDef), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef))); } }
public InterfaceFieldArgumentRedefinitionError(String typeOfType, ObjectTypeDefinition objectTypeDef, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, String objectArgStr, String interfaceArgStr) { super(objectTypeDef, format("The %s type '%s' %s has tried to redefine field '%s' arguments defined via interface '%s' %s from '%s' to '%s", typeOfType, objectTypeDef.getName(), lineCol(objectTypeDef), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef), interfaceArgStr, objectArgStr)); } }
public InterfaceFieldRedefinitionError(String typeOfType, ObjectTypeDefinition objectType, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition objectFieldDef, String objectFieldType, String interfaceFieldType) { super(objectType, format("The %s type '%s' %s has tried to redefine field '%s' defined via interface '%s' %s from '%s' to '%s'", typeOfType, objectType.getName(), lineCol(objectType), objectFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef), interfaceFieldType, objectFieldType)); } }
public MissingInterfaceFieldError(String typeOfType, ObjectTypeDefinition objectType, InterfaceTypeDefinition interfaceTypeDef, FieldDefinition interfaceFieldDef) { super(objectType, format("The %s type '%s' %s does not have a field '%s' required via interface '%s' %s", typeOfType, objectType.getName(), lineCol(objectType), interfaceFieldDef.getName(), interfaceTypeDef.getName(), lineCol(interfaceTypeDef))); } }
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 checkImplements(DiffCtx ctx, ObjectTypeDefinition old, List<Type> oldImplements, List<Type> newImplements) { Map<String, Type> oldImplementsMap = sortedMap(oldImplements, t -> ((TypeName) t).getName()); Map<String, Type> newImplementsMap = sortedMap(newImplements, t -> ((TypeName) t).getName()); for (Map.Entry<String, Type> entry : oldImplementsMap.entrySet()) { InterfaceTypeDefinition oldInterface = ctx.getOldTypeDef(entry.getValue(), InterfaceTypeDefinition.class).get(); Optional<InterfaceTypeDefinition> newInterface = ctx.getNewTypeDef(newImplementsMap.get(entry.getKey()), InterfaceTypeDefinition.class); if (!newInterface.isPresent()) { ctx.report(DiffEvent.apiBreakage() .category(DiffCategory.MISSING) .typeName(old.getName()) .typeKind(getTypeKind(old)) .components(oldInterface.getName()) .reasonMsg("The new API is missing the interface named '%s'", oldInterface.getName()) .build()); } else { checkInterfaceType(ctx, oldInterface, newInterface.get()); } } }
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(); }
@SuppressWarnings("Duplicates") private TypeResolver getTypeResolverForInterface(BuildContext buildCtx, InterfaceTypeDefinition interfaceType) { TypeDefinitionRegistry typeRegistry = buildCtx.getTypeRegistry(); RuntimeWiring wiring = buildCtx.getWiring(); WiringFactory wiringFactory = wiring.getWiringFactory(); TypeResolver typeResolver; InterfaceWiringEnvironment environment = new InterfaceWiringEnvironment(typeRegistry, interfaceType); if (wiringFactory.providesTypeResolver(environment)) { typeResolver = wiringFactory.getTypeResolver(environment); assertNotNull(typeResolver, "The WiringFactory indicated it provides a interface type resolver but then returned null"); } else { typeResolver = wiring.getTypeResolvers().get(interfaceType.getName()); if (typeResolver == null) { // this really should be checked earlier via a pre-flight check typeResolver = new TypeResolverProxy(); } } return typeResolver; }