package com.bitmonlab.osiris.core.validations.validador.hibernate; import java.lang.reflect.Method; import java.util.Collection; import java.util.Set; import javax.validation.ConstraintViolation; import javax.validation.Validation; import javax.validation.Validator; import javax.validation.ValidatorFactory; import javax.validation.executable.ExecutableValidator; import com.bitmonlab.osiris.core.validations.validador.api.MethodInvocationValidator; /** * Class used to validate the method invocation. */ public class HibernateMethodInvocationValidator implements MethodInvocationValidator { /** * The hibernate implementation of method validator. */ ValidatorFactory factory = Validation.buildDefaultValidatorFactory(); Validator validator = factory.getValidator(); ExecutableValidator executableValidator = factory.getValidator().forExecutables(); public Collection<ConstraintViolation<Object>> areValidInvocationParameters(Object object,Method method, Object[] parameterValues) { Set<ConstraintViolation<Object>> validateBeanConstrains = validator.validate(object); for(Object param: parameterValues){ if(null!=param) validateBeanConstrains.addAll(validator.validate(param)); } validateBeanConstrains.addAll(executableValidator.validateParameters(object, method, parameterValues)); return validateBeanConstrains; } public Collection<ConstraintViolation<Object>> isValidReturnValue(Object object, Method method, Object returnValue) { Set<ConstraintViolation<Object>> validateParameters = executableValidator.validateReturnValue(object, method, returnValue); return validateParameters; } }