private void processModelValidation()

in validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/validation/ModelValidationPhaseListener.java [92:138]


    private void processModelValidation(ModelValidationEntry modelValidationEntry,
                                        Map<Object, List<Class>> processedValidationTargets,
                                        Map<String, ModelValidationResult> results)
    {
        FacesContext facesContext = FacesContext.getCurrentInstance();
        PropertyInformation propertyInformation;
        Set<ConstraintViolation<Object>> violations;
        Class[] groupsToValidate;

        ELHelper elHelper = ExtValUtils.getELHelper();

        for (Object validationTarget : modelValidationEntry.getValidationTargets())
        {
            propertyInformation = createPropertyInformation(modelValidationEntry, validationTarget, elHelper);

            if (!executeGlobalBeforeValidationInterceptors(
                    facesContext, modelValidationEntry.getComponent(), validationTarget, propertyInformation))
            {
                continue;
            }

            if(modelValidationEntry.isDisplayMessageInline())
            {
                groupsToValidate = modelValidationEntry.getGroups();
            }
            //if violation should displayed inline validation has to take place with all groups
            //which means: global messages -> filter groups already used for the validation target
            else
            {
                groupsToValidate = filterGroupsToValidate(
                        modelValidationEntry, validationTarget, processedValidationTargets);
            }

            if(!shouldContinueValidation(modelValidationEntry, groupsToValidate))
            {
                continue;
            }

            addProcessedTarget(validationTarget, groupsToValidate, processedValidationTargets);
            violations = validateTarget(validationTarget, groupsToValidate);

            if (violations != null && !violations.isEmpty())
            {
                processViolations(facesContext, modelValidationEntry, validationTarget, violations, results);
            }
        }
    }