All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.sun.tools.xjc.addon.krasa.validations.ValidationsAnnotation Maven / Gradle / Ivy

The newest version!
package com.sun.tools.xjc.addon.krasa.validations;

import java.lang.annotation.Annotation;
import java.util.Arrays;
import java.util.List;
import java.util.Map;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * The plugins defined here supports both javax and jakarta validation packages, this enum
 * helps managing them both in a unified way.
 *
 * @author Francesco Illuminati
 */
public enum ValidationsAnnotation {

    JAVAX {
        @Override
        public Class getNotNullClass() {
            return javax.validation.constraints.NotNull.class;
        }

        @Override
        public Class getValidClass() {
            return javax.validation.Valid.class;
        }

        @Override
        public Class getSizeClass() {
            return javax.validation.constraints.Size.class;
        }

        @Override
        public Class getDigitsClass() {
            return javax.validation.constraints.Digits.class;
        }

        @Override
        public Class getDecimalMinClass() {
            return javax.validation.constraints.DecimalMin.class;
        }

        @Override
        public Class getDecimalMaxClass() {
            return javax.validation.constraints.DecimalMax.class;
        }

        @Override
        public Class getPatternClass() {
            return javax.validation.constraints.Pattern.class;
        }

        @Override
        public Class getPatternListClass() {
            return javax.validation.constraints.Pattern.List.class;
        }

    },
    JAKARTA {

        @Override
        public Class getNotNullClass() {
            return jakarta.validation.constraints.NotNull.class;
        }

        @Override
        public Class getValidClass() {
            return jakarta.validation.Valid.class;
        }

        @Override
        public Class getSizeClass() {
            return jakarta.validation.constraints.Size.class;
        }

        @Override
        public Class getDigitsClass() {
            return jakarta.validation.constraints.Digits.class;
        }

        @Override
        public Class getDecimalMinClass() {
            return jakarta.validation.constraints.DecimalMin.class;
        }

        @Override
        public Class getDecimalMaxClass() {
            return jakarta.validation.constraints.DecimalMax.class;
        }

        @Override
        public Class getPatternClass() {
            return jakarta.validation.constraints.Pattern.class;
        }

        @Override
        public Class getPatternListClass() {
            return jakarta.validation.constraints.Pattern.List.class;
        }

    };

    private final List> classList;
    private final Map classMap;

    private ValidationsAnnotation() {
        this.classList = Arrays.asList(
                getValidClass(),
                getNotNullClass(),
                getSizeClass(),
                getDigitsClass(),
                getDecimalMinClass(),
                getDecimalMaxClass(),
                getPatternClass(),
                getPatternListClass()
        );
        this.classMap = classList.stream()
                .collect(Collectors.toMap(Class::getSimpleName, Class::getCanonicalName));
    }

    public abstract Class getValidClass();

    public abstract Class getNotNullClass();

    public abstract Class getSizeClass();

    public abstract Class getDigitsClass();

    public abstract Class getDecimalMinClass();

    public abstract Class getDecimalMaxClass();

    public abstract Class getPatternClass();

    public abstract Class getPatternListClass();

    public String getCanonicalClassName(String className) throws ClassNotFoundException {
        String canonicalName = classMap.get(Objects.requireNonNull(className));
        if (canonicalName == null) {
            throw new ClassNotFoundException(className);
        }
        return canonicalName;
    }

    public static String getValuesAsString() {
        return Arrays.asList(values()).stream()
                .map(v -> v.name())
                .collect(Collectors.joining(","));
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy