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);
}
}
}