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

com.github.fosin.cdp.util.BeanValidator Maven / Gradle / Ivy

package com.github.fosin.cdp.util;

import com.google.common.base.Preconditions;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;

import javax.validation.ConstraintViolation;
import javax.validation.Validation;
import javax.validation.Validator;
import javax.validation.ValidatorFactory;
import java.util.*;

/**
 * Created by jimin on 16/1/16.
 *
 * @author 28860823
 * @version $Id: $
 */
public class BeanValidator {
    private static ValidatorFactory validatorFactory = Validation.buildDefaultValidatorFactory();

    /**
     * Constructor for BeanValidator.
     */
    public BeanValidator() {
    }

    /**
     * validate
     *
     * @param t a T object.
     * @param groups a {@link java.lang.Class} object.
     * @param  a T object.
     * @return a {@link java.util.Map} object.
     */
    public static  Map validate(T t, Class... groups) {
        Validator validator = validatorFactory.getValidator();
        Set validateResult = validator.validate(t, groups);
        if (validateResult.isEmpty()) {
            return Collections.emptyMap();
        } else {
            LinkedHashMap errors = Maps.newLinkedHashMap();
            Iterator i$ = validateResult.iterator();

            while (i$.hasNext()) {
                ConstraintViolation constraintViolation = (ConstraintViolation) i$.next();
                errors.put(constraintViolation.getPropertyPath().toString(), constraintViolation.getMessage());
            }

            return errors;
        }
    }

    /**
     * validateForObjects
     *
     * @param first a {@link java.lang.Object} object.
     * @param others a {@link java.lang.Object} object.
     * @return a {@link java.util.Map} object.
     */
    public static Map validateForObjects(Object first, Object... others) {
        return others != null && others.length != 0 ? validateForList(Lists.asList(first, others)) : validate(first, new Class[0]);
    }

    /**
     * validateForList
     *
     * @param collection a {@link java.util.Collection} object.
     * @return a {@link java.util.Map} object.
     */
    public static Map validateForList(Collection collection) {
        Preconditions.checkNotNull(collection);
        Iterator i$ = collection.iterator();

        Map errors;
        do {
            if (!i$.hasNext()) {
                return Collections.emptyMap();
            }
            Object object = i$.next();
            errors = validate(object, new Class[0]);
        } while (errors.isEmpty());

        return errors;
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy