Search in sources :

Example 86 with Schema

use of io.swagger.v3.oas.annotations.media.Schema in project swagger-core by swagger-api.

the class XmlModelTest method deserializeModel.

@Test(description = "it should deserialize a model")
public void deserializeModel() throws IOException {
    final String yaml = "---\n" + "type: \"object\"\n" + "properties:\n" + "  id:\n" + "    type: \"string\"\n" + "    xml:\n" + "      attribute: true\n" + "  name:\n" + "    type: \"string\"\n" + "    xml:\n" + "      name: \"renamed\"\n" + "  list:\n" + "    type: \"array\"\n" + "    items:\n" + "      type: \"string\"\n" + "  wrappedList:\n" + "    type: \"array\"\n" + "    xml:\n" + "      name: \"wrappedListItems\"\n" + "      wrapped: true\n" + "    items:\n" + "      type: \"string\"\n" + "  forcedElement:\n" + "    type: \"array\"\n" + "    items:\n" + "      type: \"string\"\n" + "xml:\n" + "  name: \"rootName\"";
    final Schema model = Yaml.mapper().readValue(yaml, Schema.class);
    final Schema wrappedList = (Schema) model.getProperties().get("wrappedList");
    assertNotNull(wrappedList);
    assertNotNull(wrappedList.getXml());
    assertEquals(wrappedList.getXml().getName(), "wrappedListItems");
}
Also used : Schema(io.swagger.v3.oas.models.media.Schema) Test(org.testng.annotations.Test)

Example 87 with Schema

use of io.swagger.v3.oas.annotations.media.Schema in project swagger-core by swagger-api.

the class XMLInfoTest method testReadingXmlAccessorTypeNone.

@Test
public void testReadingXmlAccessorTypeNone() throws Exception {
    final ModelConverter mr = modelResolver();
    final Schema model = mr.resolve(new AnnotatedType(XmlDecoratedBeanXmlAccessorNone.class), new ModelConverterContextImpl(mr), null);
    final XML xml = model.getXml();
    assertNotNull(xml);
    assertEquals(xml.getName(), "xmlDecoratedBean");
    final Schema property = (Schema) model.getProperties().get("a");
    assertNotNull(property);
    assertNull(model.getProperties().get("b"));
    assertNotNull(model.getProperties().get("c"));
    assertNotNull(model.getProperties().get("d"));
    assertNotNull(model.getProperties().get("e"));
    assertNotNull(model.getProperties().get("f"));
}
Also used : AnnotatedType(io.swagger.v3.core.converter.AnnotatedType) XML(io.swagger.v3.oas.models.media.XML) ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) Schema(io.swagger.v3.oas.models.media.Schema) ModelConverter(io.swagger.v3.core.converter.ModelConverter) ModelConverterContextImpl(io.swagger.v3.core.converter.ModelConverterContextImpl) Test(org.testng.annotations.Test)

Example 88 with Schema

use of io.swagger.v3.oas.annotations.media.Schema in project swagger-core by swagger-api.

the class ComplexPropertyTest method testOuterBean.

@Test
public void testOuterBean() throws Exception {
    final ModelResolver modelResolver = modelResolver();
    final ModelConverterContextImpl context = new ModelConverterContextImpl(modelResolver);
    final Schema model = context.resolve(new AnnotatedType(OuterBean.class));
    assertNotNull(model);
}
Also used : AnnotatedType(io.swagger.v3.core.converter.AnnotatedType) Schema(io.swagger.v3.oas.models.media.Schema) ModelConverterContextImpl(io.swagger.v3.core.converter.ModelConverterContextImpl) ModelResolver(io.swagger.v3.core.jackson.ModelResolver) Test(org.testng.annotations.Test)

Example 89 with Schema

use of io.swagger.v3.oas.annotations.media.Schema in project swagger-core by swagger-api.

the class ModelResolver method _addEnumProps.

protected void _addEnumProps(Class<?> propClass, Schema property) {
    final boolean useIndex = _mapper.isEnabled(SerializationFeature.WRITE_ENUMS_USING_INDEX);
    final boolean useToString = _mapper.isEnabled(SerializationFeature.WRITE_ENUMS_USING_TO_STRING);
    Optional<Method> jsonValueMethod = Arrays.stream(propClass.getMethods()).filter(m -> m.isAnnotationPresent(JsonValue.class)).filter(m -> m.getAnnotation(JsonValue.class).value()).findFirst();
    @SuppressWarnings("unchecked") Class<Enum<?>> enumClass = (Class<Enum<?>>) propClass;
    Enum<?>[] enumConstants = enumClass.getEnumConstants();
    if (enumConstants != null) {
        String[] enumValues = _intr.findEnumValues(propClass, enumConstants, new String[enumConstants.length]);
        for (Enum<?> en : enumConstants) {
            String n;
            String enumValue = enumValues[en.ordinal()];
            String s = jsonValueMethod.flatMap(m -> ReflectionUtils.safeInvoke(m, en)).map(Object::toString).orElse(null);
            if (s != null) {
                n = s;
            } else if (enumValue != null) {
                n = enumValue;
            } else if (useIndex) {
                n = String.valueOf(en.ordinal());
            } else if (useToString) {
                n = en.toString();
            } else {
                n = _intr.findEnumValue(en);
            }
            if (property instanceof StringSchema) {
                StringSchema sp = (StringSchema) property;
                sp.addEnumItem(n);
            }
        }
    }
}
Also used : JsonProperty(com.fasterxml.jackson.annotation.JsonProperty) UUIDSchema(io.swagger.v3.oas.models.media.UUIDSchema) Size(javax.validation.constraints.Size) Arrays(java.util.Arrays) JsonView(com.fasterxml.jackson.annotation.JsonView) AnnotationIntrospector(com.fasterxml.jackson.databind.AnnotationIntrospector) DiscriminatorMapping(io.swagger.v3.oas.annotations.media.DiscriminatorMapping) LoggerFactory(org.slf4j.LoggerFactory) StringUtils(org.apache.commons.lang3.StringUtils) XmlElementRef(javax.xml.bind.annotation.XmlElementRef) ObjectMapperFactory(io.swagger.v3.core.util.ObjectMapperFactory) PropertyMetadata(com.fasterxml.jackson.databind.PropertyMetadata) ComposedSchema(io.swagger.v3.oas.models.media.ComposedSchema) POJOPropertyBuilder(com.fasterxml.jackson.databind.introspect.POJOPropertyBuilder) AnnotationsUtils(io.swagger.v3.core.util.AnnotationsUtils) PatternProperties(io.swagger.v3.oas.annotations.media.PatternProperties) BigDecimal(java.math.BigDecimal) JsonValue(com.fasterxml.jackson.annotation.JsonValue) RefUtils.constructRef(io.swagger.v3.core.util.RefUtils.constructRef) Map(java.util.Map) AnnotatedMember(com.fasterxml.jackson.databind.introspect.AnnotatedMember) NamedType(com.fasterxml.jackson.databind.jsontype.NamedType) Max(javax.validation.constraints.Max) BeanDescription(com.fasterxml.jackson.databind.BeanDescription) Method(java.lang.reflect.Method) XmlAccessorType(javax.xml.bind.annotation.XmlAccessorType) Hidden(io.swagger.v3.oas.annotations.Hidden) Collection(java.util.Collection) Set(java.util.Set) IntegerSchema(io.swagger.v3.oas.models.media.IntegerSchema) Min(javax.validation.constraints.Min) Collectors(java.util.stream.Collectors) AnnotatedType(io.swagger.v3.core.converter.AnnotatedType) ExternalDocumentation(io.swagger.v3.oas.models.ExternalDocumentation) XML(io.swagger.v3.oas.models.media.XML) XmlAccessType(javax.xml.bind.annotation.XmlAccessType) InvocationTargetException(java.lang.reflect.InvocationTargetException) JsonIdentityReference(com.fasterxml.jackson.annotation.JsonIdentityReference) List(java.util.List) Stream(java.util.stream.Stream) JsonTypeInfo(com.fasterxml.jackson.annotation.JsonTypeInfo) AnnotatedClass(com.fasterxml.jackson.databind.introspect.AnnotatedClass) StringSchema(io.swagger.v3.oas.models.media.StringSchema) XmlElementRefs(javax.xml.bind.annotation.XmlElementRefs) Type(java.lang.reflect.Type) SchemaProperties(io.swagger.v3.oas.annotations.media.SchemaProperties) JsonUnwrapped(com.fasterxml.jackson.annotation.JsonUnwrapped) Pattern(javax.validation.constraints.Pattern) Annotation(java.lang.annotation.Annotation) Optional(java.util.Optional) PatternProperty(io.swagger.v3.oas.annotations.media.PatternProperty) ObjectSchema(io.swagger.v3.oas.models.media.ObjectSchema) JAXB_DEFAULT(io.swagger.v3.core.jackson.JAXBAnnotationsHelper.JAXB_DEFAULT) JsonIgnoreProperties(com.fasterxml.jackson.annotation.JsonIgnoreProperties) AnnotationMap(com.fasterxml.jackson.databind.introspect.AnnotationMap) ModelConverter(io.swagger.v3.core.converter.ModelConverter) Json(io.swagger.v3.core.util.Json) OptionalUtils(io.swagger.v3.core.util.OptionalUtils) DecimalMin(javax.validation.constraints.DecimalMin) HashMap(java.util.HashMap) ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) ArrayList(java.util.ArrayList) HashSet(java.util.HashSet) LinkedHashMap(java.util.LinkedHashMap) Annotations(com.fasterxml.jackson.databind.util.Annotations) NumberSchema(io.swagger.v3.oas.models.media.NumberSchema) JsonSerialize(com.fasterxml.jackson.databind.annotation.JsonSerialize) JsonIgnore(com.fasterxml.jackson.annotation.JsonIgnore) PrimitiveType(io.swagger.v3.core.util.PrimitiveType) Schema(io.swagger.v3.oas.models.media.Schema) JavaType(com.fasterxml.jackson.databind.JavaType) AnnotatedMethod(com.fasterxml.jackson.databind.introspect.AnnotatedMethod) XmlAttribute(javax.xml.bind.annotation.XmlAttribute) Discriminator(io.swagger.v3.oas.models.media.Discriminator) Logger(org.slf4j.Logger) JsonIdentityInfo(com.fasterxml.jackson.annotation.JsonIdentityInfo) Iterator(java.util.Iterator) ObjectMapper(com.fasterxml.jackson.databind.ObjectMapper) MapSchema(io.swagger.v3.oas.models.media.MapSchema) IOException(java.io.IOException) ObjectIdGenerator(com.fasterxml.jackson.annotation.ObjectIdGenerator) XmlRootElement(javax.xml.bind.annotation.XmlRootElement) SchemaProperty(io.swagger.v3.oas.annotations.media.SchemaProperty) Constants(io.swagger.v3.core.util.Constants) ReflectionUtils(io.swagger.v3.core.util.ReflectionUtils) Annotated(com.fasterxml.jackson.databind.introspect.Annotated) ModelConverterContext(io.swagger.v3.core.converter.ModelConverterContext) DecimalMax(javax.validation.constraints.DecimalMax) Components(io.swagger.v3.oas.models.Components) NumberUtils(org.apache.commons.lang3.math.NumberUtils) ObjectIdGenerators(com.fasterxml.jackson.annotation.ObjectIdGenerators) SerializationFeature(com.fasterxml.jackson.databind.SerializationFeature) BeanPropertyDefinition(com.fasterxml.jackson.databind.introspect.BeanPropertyDefinition) Collections(java.util.Collections) XmlElement(javax.xml.bind.annotation.XmlElement) JsonValue(com.fasterxml.jackson.annotation.JsonValue) Method(java.lang.reflect.Method) AnnotatedMethod(com.fasterxml.jackson.databind.introspect.AnnotatedMethod) AnnotatedClass(com.fasterxml.jackson.databind.introspect.AnnotatedClass) StringSchema(io.swagger.v3.oas.models.media.StringSchema)

Example 90 with Schema

use of io.swagger.v3.oas.annotations.media.Schema in project swagger-core by swagger-api.

the class ModelResolver method resolveExternalDocumentation.

protected ExternalDocumentation resolveExternalDocumentation(Annotated a, Annotation[] annotations, io.swagger.v3.oas.annotations.media.Schema schema) {
    ExternalDocumentation external = null;
    if (a != null) {
        io.swagger.v3.oas.annotations.ExternalDocumentation externalDocumentation = a.getAnnotation(io.swagger.v3.oas.annotations.ExternalDocumentation.class);
        external = resolveExternalDocumentation(externalDocumentation);
    }
    if (external == null) {
        if (schema != null) {
            external = resolveExternalDocumentation(schema.externalDocs());
        }
    }
    return external;
}
Also used : ExternalDocumentation(io.swagger.v3.oas.models.ExternalDocumentation)

Aggregations

Test (org.testng.annotations.Test)257 Schema (io.swagger.v3.oas.models.media.Schema)234 ArraySchema (io.swagger.v3.oas.models.media.ArraySchema)141 StringSchema (io.swagger.v3.oas.models.media.StringSchema)126 IntegerSchema (io.swagger.v3.oas.models.media.IntegerSchema)112 OpenAPI (io.swagger.v3.oas.models.OpenAPI)68 NumberSchema (io.swagger.v3.oas.models.media.NumberSchema)65 MapSchema (io.swagger.v3.oas.models.media.MapSchema)62 ObjectSchema (io.swagger.v3.oas.models.media.ObjectSchema)60 AnnotatedType (io.swagger.v3.core.converter.AnnotatedType)58 ComposedSchema (io.swagger.v3.oas.models.media.ComposedSchema)51 DateTimeSchema (io.swagger.v3.oas.models.media.DateTimeSchema)47 Operation (io.swagger.v3.oas.annotations.Operation)44 DateSchema (io.swagger.v3.oas.models.media.DateSchema)44 ApiResponses (io.swagger.v3.oas.annotations.responses.ApiResponses)42 ProtectedApi (org.gluu.oxtrust.service.filter.ProtectedApi)42 Parameter (io.swagger.v3.oas.models.parameters.Parameter)33 BooleanSchema (io.swagger.v3.oas.models.media.BooleanSchema)32 ModelConverterContextImpl (io.swagger.v3.core.converter.ModelConverterContextImpl)25 Components (io.swagger.v3.oas.models.Components)23