@Override public Either<TypeDefinition, Type> visitMap(MapType value) { return Either.right(Type.map(value)); }
@Override public Either<TypeDefinition, Type> visitMap(MapType value) { return Either.right(Type.map(value)); }
@Override public Type visitMap(MapType type) { return Type.map(com.palantir.conjure.spec.MapType.of( type.keyType().visit(this), type.valueType().visit(this))); }
@Test public void testNoComplexKeysInMaps() { String illegalFieldName = "asdf"; Type complexKeyType = Type.list(ListType.of(Type.primitive(PrimitiveType.STRING))); FieldDefinition fieldDefinition = FieldDefinition.of( FieldName.of(illegalFieldName), Type.map(MapType.of(complexKeyType, Type.primitive(PrimitiveType.STRING))), Documentation.of("docs")); assertThatThrownBy(() -> FieldDefinitionValidator.validate(fieldDefinition)) .isInstanceOf(IllegalStateException.class) .hasMessageContaining(illegalFieldName) .hasMessageContaining(complexKeyType.toString()); } }
@Test public void testRecursiveTypeOkInReference() { Type referenceType = Type.reference(FOO); TypeDefinition objectDefinition = TypeDefinition.object( ObjectDefinition.builder() .typeName(TypeName.of("Foo", "bar")) .addAllFields(ImmutableList.of( FieldDefinition.of(FieldName.of("selfOptional"), Type.optional(OptionalType.of(Type.reference(FOO))), DOCS), FieldDefinition.of(FieldName.of("selfMap"), Type.map(MapType.of(referenceType, referenceType)), DOCS), FieldDefinition.of(FieldName.of("selfSet"), Type.set(SetType.of(referenceType)), DOCS), FieldDefinition.of(FieldName.of("selfList"), Type.list(ListType.of(referenceType)), DOCS))) .build()); ConjureDefinition conjureDef = ConjureDefinition.builder() .version(1) .types(ImmutableList.of(objectDefinition)) .build(); ConjureDefinitionValidator.NO_RECURSIVE_TYPES.validate(conjureDef); }