Search in sources :

Example 11 with ArraySchema

use of io.swagger.v3.oas.models.media.ArraySchema in project swagger-core by swagger-api.

the class ComposedSchemaTest method readArrayComposedSchema_ticket2616.

@Test(description = "read composed schem refs #2616")
public void readArrayComposedSchema_ticket2616() {
    Map<String, Schema> schemas = ModelConverters.getInstance().readAll(TestObject2616.class);
    Schema model = schemas.get("testObject");
    Assert.assertNotNull(model);
    Map<String, Schema> properties = model.getProperties();
    Assert.assertNotNull(properties.get("objects"));
    Assert.assertTrue(properties.get("objects") instanceof ArraySchema);
    model = schemas.get("AbstractObject");
    Assert.assertNotNull(model);
    Assert.assertTrue(model instanceof ComposedSchema);
    Assert.assertTrue(((ComposedSchema) model).getOneOf().size() == 2);
    model = schemas.get("AObject");
    Assert.assertNotNull(model);
    model = schemas.get("BObject");
    Assert.assertNotNull(model);
    model = schemas.get("objects");
    Assert.assertNull(model);
}
Also used : ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) Schema(io.swagger.v3.oas.models.media.Schema) ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) ComposedSchema(io.swagger.v3.oas.models.media.ComposedSchema) ComposedSchema(io.swagger.v3.oas.models.media.ComposedSchema) Test(org.testng.annotations.Test)

Example 12 with ArraySchema

use of io.swagger.v3.oas.models.media.ArraySchema in project swagger-core by swagger-api.

the class SwaggerAnnotationIntrospector method hasRequiredMarker.

@Override
public Boolean hasRequiredMarker(AnnotatedMember m) {
    XmlElement elem = m.getAnnotation(XmlElement.class);
    if (elem != null) {
        if (elem.required()) {
            return true;
        }
    }
    JsonProperty jsonProperty = m.getAnnotation(JsonProperty.class);
    if (jsonProperty != null) {
        if (jsonProperty.required()) {
            return true;
        }
    }
    Schema ann = m.getAnnotation(Schema.class);
    if (ann != null) {
        if (ann.required()) {
            return ann.required();
        }
    }
    ArraySchema arraySchema = m.getAnnotation(ArraySchema.class);
    if (arraySchema != null) {
        if (arraySchema.arraySchema().required()) {
            return arraySchema.arraySchema().required();
        }
        if (arraySchema.schema().required()) {
            return arraySchema.schema().required();
        }
    }
    return null;
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) ArraySchema(io.swagger.v3.oas.annotations.media.ArraySchema) Schema(io.swagger.v3.oas.annotations.media.Schema) ArraySchema(io.swagger.v3.oas.annotations.media.ArraySchema) XmlElement(javax.xml.bind.annotation.XmlElement)

Example 13 with ArraySchema

use of io.swagger.v3.oas.models.media.ArraySchema in project swagger-core by swagger-api.

the class SwaggerAnnotationIntrospector method findSubtypes.

@Override
public List<NamedType> findSubtypes(Annotated a) {
    Schema schema = a.getAnnotation(Schema.class);
    if (schema == null) {
        final ArraySchema arraySchema = a.getAnnotation(ArraySchema.class);
        if (arraySchema != null) {
            schema = arraySchema.schema();
        }
    }
    if (AnnotationsUtils.hasSchemaAnnotation(schema)) {
        final Class<?>[] classes = schema.subTypes();
        final List<NamedType> names = new ArrayList<>(classes.length);
        for (Class<?> subType : classes) {
            names.add(new NamedType(subType));
        }
        if (!names.isEmpty()) {
            return names;
        }
    }
    return Collections.emptyList();
}
Also used : ArraySchema(io.swagger.v3.oas.annotations.media.ArraySchema) NamedType(com.fasterxml.jackson.databind.jsontype.NamedType) Schema(io.swagger.v3.oas.annotations.media.Schema) ArraySchema(io.swagger.v3.oas.annotations.media.ArraySchema) ArrayList(java.util.ArrayList) AnnotatedClass(com.fasterxml.jackson.databind.introspect.AnnotatedClass)

Example 14 with ArraySchema

use of io.swagger.v3.oas.models.media.ArraySchema in project swagger-core by swagger-api.

the class ModelSerializerTest method serializeArrayModel.

@Test(description = "it should serialize an array model")
public void serializeArrayModel() throws IOException {
    final ArraySchema model = new ArraySchema();
    model.setItems(new Schema().$ref("Pet"));
    assertEquals(m.writeValueAsString(model), "{\"type\":\"array\",\"items\":{\"$ref\":\"#/components/schemas/Pet\"}}");
}
Also used : ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) DateSchema(io.swagger.v3.oas.models.media.DateSchema) ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) DateTimeSchema(io.swagger.v3.oas.models.media.DateTimeSchema) Schema(io.swagger.v3.oas.models.media.Schema) IntegerSchema(io.swagger.v3.oas.models.media.IntegerSchema) StringSchema(io.swagger.v3.oas.models.media.StringSchema) Test(org.testng.annotations.Test)

Example 15 with ArraySchema

use of io.swagger.v3.oas.models.media.ArraySchema in project swagger-core by swagger-api.

the class ModelSerializerTest method deserializeArrayModel.

@Test(description = "it should deserialize an array model")
public void deserializeArrayModel() throws IOException {
    final String json = "{\"type\":\"array\",\"items\":{\"$ref\":\"#/definitions/Pet\"}}";
    final Schema p = m.readValue(json, Schema.class);
    assertTrue(p instanceof ArraySchema);
    assertEquals(m.writeValueAsString(p), json);
}
Also used : ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) DateSchema(io.swagger.v3.oas.models.media.DateSchema) ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) DateTimeSchema(io.swagger.v3.oas.models.media.DateTimeSchema) Schema(io.swagger.v3.oas.models.media.Schema) IntegerSchema(io.swagger.v3.oas.models.media.IntegerSchema) StringSchema(io.swagger.v3.oas.models.media.StringSchema) Test(org.testng.annotations.Test)

Aggregations

ArraySchema (io.swagger.v3.oas.models.media.ArraySchema)32 Test (org.testng.annotations.Test)28 Schema (io.swagger.v3.oas.models.media.Schema)23 StringSchema (io.swagger.v3.oas.models.media.StringSchema)18 IntegerSchema (io.swagger.v3.oas.models.media.IntegerSchema)12 MapSchema (io.swagger.v3.oas.models.media.MapSchema)8 Parameter (io.swagger.v3.oas.models.parameters.Parameter)8 NumberSchema (io.swagger.v3.oas.models.media.NumberSchema)7 AnnotatedType (io.swagger.v3.core.converter.AnnotatedType)4 OpenAPI (io.swagger.v3.oas.models.OpenAPI)4 HeaderParameter (io.swagger.v3.oas.models.parameters.HeaderParameter)4 PathParameter (io.swagger.v3.oas.models.parameters.PathParameter)4 QueryParameter (io.swagger.v3.oas.models.parameters.QueryParameter)4 LinkedHashMap (java.util.LinkedHashMap)4 Operation (io.swagger.v3.oas.models.Operation)3 BooleanSchema (io.swagger.v3.oas.models.media.BooleanSchema)3 ComposedSchema (io.swagger.v3.oas.models.media.ComposedSchema)3 Annotation (java.lang.annotation.Annotation)3 BigDecimal (java.math.BigDecimal)3 Map (java.util.Map)3