@Override public void validate(ConjureDefinition definition) { // create mapping from object type name -> names of reference types that are fields of that type Multimap<TypeName, TypeName> typeToRefFields = HashMultimap.create(); definition.getTypes().stream().forEach(type -> getReferenceType(type) .ifPresent(entry -> typeToRefFields.put( type.accept(TypeDefinitionVisitor.TYPE_NAME), entry))); for (TypeName name : typeToRefFields.keySet()) { verifyTypeHasNoRecursiveDefinitions(name, typeToRefFields, new ArrayList<>()); } }
@Override public void validate(ConjureDefinition definition) { // create mapping for resolving reference types during validation Map<TypeName, TypeDefinition> definitionMap = definition.getTypes().stream().collect( Collectors.toMap(entry -> entry.accept(TypeDefinitionVisitor.TYPE_NAME), entry -> entry)); definition.getTypes().stream().forEach(def -> validateTypeDefinition(def, definitionMap)); definition.getErrors().forEach(def -> validateErrorDefinition(def, definitionMap)); definition.getServices().forEach(def -> validateServiceDefinition(def, definitionMap)); }
@Override public void validate(ConjureDefinition definition) { Set<TypeName> seenNames = new HashSet<>(); definition.getTypes().forEach(typeDef -> verifyNameIsUnique(seenNames, typeDef.accept(TypeDefinitionVisitor.TYPE_NAME))); definition.getErrors().forEach(errorDef -> verifyNameIsUnique(seenNames, errorDef.getErrorName())); definition.getServices().forEach(serviceDef -> verifyNameIsUnique(seenNames, serviceDef.getServiceName())); }
@Test public void resolvesImportedAliases() { ConjureDefinition conjureDefinition = ConjureParserUtils.parseConjureDef( ImmutableList.of(ConjureParser.parse(new File("src/test/resources/example-conjure-imports.yml")))); assertThat(conjureDefinition.getTypes()).hasSize(1); }