Search in sources :

Example 11 with MapSchema

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

the class ModelDeserializer method deserializeObjectSchema.

private Schema deserializeObjectSchema(JsonNode node) {
    JsonNode additionalProperties = node.get("additionalProperties");
    Schema schema = null;
    if (additionalProperties != null) {
        // try first to convert to Schema, if it fails it must be a boolean
        try {
            Schema innerSchema = Json.mapper().convertValue(additionalProperties, Schema.class);
            ((ObjectNode) node).remove("additionalProperties");
            MapSchema ms = Json.mapper().convertValue(node, MapSchema.class);
            ms.setAdditionalProperties(innerSchema);
            schema = ms;
        } catch (Exception e) {
            Boolean additionalPropsBoolean = Json.mapper().convertValue(additionalProperties, Boolean.class);
            if (additionalPropsBoolean) {
                schema = Json.mapper().convertValue(node, MapSchema.class);
            } else {
                schema = Json.mapper().convertValue(node, ObjectSchema.class);
            }
            schema.setAdditionalProperties(additionalPropsBoolean);
        }
    } else {
        schema = Json.mapper().convertValue(node, ObjectSchema.class);
    }
    if (schema != null) {
        schema.jsonSchema(Json31.jsonSchemaAsMap(node));
    }
    return schema;
}
Also used : ObjectNode(com.fasterxml.jackson.databind.node.ObjectNode) ObjectSchema(io.swagger.v3.oas.models.media.ObjectSchema) UUIDSchema(io.swagger.v3.oas.models.media.UUIDSchema) PasswordSchema(io.swagger.v3.oas.models.media.PasswordSchema) BooleanSchema(io.swagger.v3.oas.models.media.BooleanSchema) DateSchema(io.swagger.v3.oas.models.media.DateSchema) ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) JsonSchema(io.swagger.v3.oas.models.media.JsonSchema) ComposedSchema(io.swagger.v3.oas.models.media.ComposedSchema) NumberSchema(io.swagger.v3.oas.models.media.NumberSchema) DateTimeSchema(io.swagger.v3.oas.models.media.DateTimeSchema) Schema(io.swagger.v3.oas.models.media.Schema) EmailSchema(io.swagger.v3.oas.models.media.EmailSchema) MapSchema(io.swagger.v3.oas.models.media.MapSchema) IntegerSchema(io.swagger.v3.oas.models.media.IntegerSchema) StringSchema(io.swagger.v3.oas.models.media.StringSchema) ObjectSchema(io.swagger.v3.oas.models.media.ObjectSchema) JsonNode(com.fasterxml.jackson.databind.JsonNode) MapSchema(io.swagger.v3.oas.models.media.MapSchema) IOException(java.io.IOException)

Aggregations

MapSchema (io.swagger.v3.oas.models.media.MapSchema)11 Schema (io.swagger.v3.oas.models.media.Schema)11 IntegerSchema (io.swagger.v3.oas.models.media.IntegerSchema)9 Test (org.testng.annotations.Test)9 ArraySchema (io.swagger.v3.oas.models.media.ArraySchema)8 ObjectSchema (io.swagger.v3.oas.models.media.ObjectSchema)8 StringSchema (io.swagger.v3.oas.models.media.StringSchema)8 NumberSchema (io.swagger.v3.oas.models.media.NumberSchema)6 BooleanSchema (io.swagger.v3.oas.models.media.BooleanSchema)4 DateSchema (io.swagger.v3.oas.models.media.DateSchema)4 DateTimeSchema (io.swagger.v3.oas.models.media.DateTimeSchema)4 Operation (io.swagger.v3.oas.models.Operation)3 FileSchema (io.swagger.v3.oas.models.media.FileSchema)3 ApiResponse (io.swagger.v3.oas.models.responses.ApiResponse)3 ComposedSchema (io.swagger.v3.oas.models.media.ComposedSchema)2 UUIDSchema (io.swagger.v3.oas.models.media.UUIDSchema)2 IOException (java.io.IOException)2 JsonIdentityInfo (com.fasterxml.jackson.annotation.JsonIdentityInfo)1 JsonIdentityReference (com.fasterxml.jackson.annotation.JsonIdentityReference)1 JsonIgnore (com.fasterxml.jackson.annotation.JsonIgnore)1