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

se.hiq.oss.spring.nats.message.validation.BeanValidationValidator Maven / Gradle / Ivy

The newest version!
package se.hiq.oss.spring.nats.message.validation;

import java.util.Set;
import java.util.stream.Collectors;

import javax.validation.ConstraintViolation;
import javax.validation.ConstraintViolationException;
import javax.validation.Validator;

import org.springframework.validation.annotation.Validated;

public class BeanValidationValidator implements MessageObjectValidator {
    static final String ERROR_MESSAGE = "%s %s was (%s)";
    private Validator validator;

    public BeanValidationValidator(final Validator validator) {
        this.validator = validator;
    }

    @Override
    public void validate(Object object) {
        Set> invalid = validator.validate(object);
        if (!invalid.isEmpty()) {
            String constraintViolationMessage = invalid.stream()
                    .map(this::toErrorMessage)
                    .collect(Collectors.joining(","));
            throw new ConstraintViolationException("Invalid object: " + object + ": " + constraintViolationMessage, invalid);
        }
    }

    @Override
    public boolean shouldValidate(Class clazz) {
        return clazz.isAnnotationPresent(Validated.class);
    }

    private String toErrorMessage(ConstraintViolation constraintViolation) {
        return String.format(ERROR_MESSAGE,
                constraintViolation.getPropertyPath(),
                constraintViolation.getMessage(),
                constraintViolation.getInvalidValue());


    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy