Search in sources :

Example 11 with Size

use of javax.validation.constraints.Size in project swagger-core by swagger-api.

the class ModelResolver method applyBeanValidatorAnnotations.

protected void applyBeanValidatorAnnotations(Schema property, Annotation[] annotations, Schema parent) {
    Map<String, Annotation> annos = new HashMap<>();
    if (annotations != null) {
        for (Annotation anno : annotations) {
            annos.put(anno.annotationType().getName(), anno);
        }
    }
    if (parent != null && annotations != null) {
        boolean requiredItem = Arrays.stream(annotations).anyMatch(annotation -> NOT_NULL_ANNOTATIONS.contains(annotation.annotationType().getSimpleName()));
        if (requiredItem) {
            addRequiredItem(parent, property.getName());
        }
    }
    if (annos.containsKey("javax.validation.constraints.Min")) {
        if ("integer".equals(property.getType()) || "number".equals(property.getType())) {
            Min min = (Min) annos.get("javax.validation.constraints.Min");
            property.setMinimum(new BigDecimal(min.value()));
        }
    }
    if (annos.containsKey("javax.validation.constraints.Max")) {
        if ("integer".equals(property.getType()) || "number".equals(property.getType())) {
            Max max = (Max) annos.get("javax.validation.constraints.Max");
            property.setMaximum(new BigDecimal(max.value()));
        }
    }
    if (annos.containsKey("javax.validation.constraints.Size")) {
        Size size = (Size) annos.get("javax.validation.constraints.Size");
        if ("integer".equals(property.getType()) || "number".equals(property.getType())) {
            property.setMinimum(new BigDecimal(size.min()));
            property.setMaximum(new BigDecimal(size.max()));
        } else if (property instanceof StringSchema) {
            StringSchema sp = (StringSchema) property;
            sp.minLength(Integer.valueOf(size.min()));
            sp.maxLength(Integer.valueOf(size.max()));
        } else if (property instanceof ArraySchema) {
            ArraySchema sp = (ArraySchema) property;
            sp.setMinItems(size.min());
            sp.setMaxItems(size.max());
        }
    }
    if (annos.containsKey("javax.validation.constraints.DecimalMin")) {
        DecimalMin min = (DecimalMin) annos.get("javax.validation.constraints.DecimalMin");
        if (property instanceof NumberSchema) {
            NumberSchema ap = (NumberSchema) property;
            ap.setMinimum(new BigDecimal(min.value()));
            ap.setExclusiveMinimum(!min.inclusive());
        }
    }
    if (annos.containsKey("javax.validation.constraints.DecimalMax")) {
        DecimalMax max = (DecimalMax) annos.get("javax.validation.constraints.DecimalMax");
        if (property instanceof NumberSchema) {
            NumberSchema ap = (NumberSchema) property;
            ap.setMaximum(new BigDecimal(max.value()));
            ap.setExclusiveMaximum(!max.inclusive());
        }
    }
    if (annos.containsKey("javax.validation.constraints.Pattern")) {
        Pattern pattern = (Pattern) annos.get("javax.validation.constraints.Pattern");
        if (property instanceof StringSchema) {
            property.setPattern(pattern.regexp());
        }
    }
}
Also used : Pattern(javax.validation.constraints.Pattern) HashMap(java.util.HashMap) LinkedHashMap(java.util.LinkedHashMap) Max(javax.validation.constraints.Max) DecimalMax(javax.validation.constraints.DecimalMax) Size(javax.validation.constraints.Size) NumberSchema(io.swagger.v3.oas.models.media.NumberSchema) DecimalMin(javax.validation.constraints.DecimalMin) Annotation(java.lang.annotation.Annotation) BigDecimal(java.math.BigDecimal) Min(javax.validation.constraints.Min) DecimalMin(javax.validation.constraints.DecimalMin) ArraySchema(io.swagger.v3.oas.models.media.ArraySchema) StringSchema(io.swagger.v3.oas.models.media.StringSchema) DecimalMax(javax.validation.constraints.DecimalMax)

Aggregations

Size (javax.validation.constraints.Size)11 Annotation (java.lang.annotation.Annotation)7 Max (javax.validation.constraints.Max)7 Min (javax.validation.constraints.Min)7 Pattern (javax.validation.constraints.Pattern)7 DecimalMax (javax.validation.constraints.DecimalMax)6 DecimalMin (javax.validation.constraints.DecimalMin)6 HashMap (java.util.HashMap)5 NotNull (javax.validation.constraints.NotNull)3 IridaSequenceFile (ca.corefacility.bioinformatics.irida.model.irida.IridaSequenceFile)2 IridaSequenceFilePair (ca.corefacility.bioinformatics.irida.model.irida.IridaSequenceFilePair)2 JsonIgnore (com.fasterxml.jackson.annotation.JsonIgnore)2 ImmutableSet (com.google.common.collect.ImmutableSet)2 Lists (com.google.common.collect.Lists)2 AbstractNumericProperty (io.swagger.models.properties.AbstractNumericProperty)2 ArrayProperty (io.swagger.models.properties.ArrayProperty)2 StringProperty (io.swagger.models.properties.StringProperty)2 BigDecimal (java.math.BigDecimal)2 ArrayList (java.util.ArrayList)2 Date (java.util.Date)2