EXTVAL-148 @GroupSequence support for @BeanValidation
git-svn-id: https://svn.apache.org/repos/asf/myfaces/extensions/validator/trunk@1429501 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java b/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
index 7f6f471..60505b2 100644
--- a/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
+++ b/validation-modules/bean-validation/src/main/java/org/apache/myfaces/extensions/validator/beanval/util/ExtValBeanValidationMetaDataInternals.java
@@ -43,6 +43,7 @@
import javax.faces.context.FacesContext;
import javax.faces.validator.ValidatorException;
import javax.validation.ConstraintViolation;
+import javax.validation.GroupSequence;
import javax.validation.Payload;
import java.lang.reflect.Method;
import java.util.ArrayList;
@@ -538,7 +539,9 @@
{
ModelValidationEntry modelValidationEntry = new ModelValidationEntry();
- modelValidationEntry.setGroups(Arrays.asList(beanValidation.useGroups()));
+ List<Class> groupClassList = createGroupClassList(beanValidation);
+
+ modelValidationEntry.setGroups(groupClassList);
modelValidationEntry.setDisplayMessageInline(beanValidation.modelValidation().displayInline());
modelValidationEntry.setCustomMessage(beanValidation.modelValidation().message());
modelValidationEntry.setMetaDataSourceObject(metaDataSourceObject);
@@ -581,7 +584,9 @@
List<Class> foundGroupsForPropertyValidation,
List<Class> restrictedGroupsForPropertyValidation)
{
- foundGroupsForPropertyValidation.addAll(Arrays.asList(beanValidation.useGroups()));
+ List<Class> groupClassList = createGroupClassList(beanValidation);
+
+ foundGroupsForPropertyValidation.addAll(groupClassList);
if (beanValidation.restrictGroups().length > 0)
{
@@ -692,4 +697,25 @@
facesMessageHolder.getClientId(), facesMessageHolder.getFacesMessage());
}
}
+
+ private List<Class> createGroupClassList(BeanValidation beanValidation)
+ {
+ List<Class> groupClassList = new ArrayList<Class>();
+
+ GroupSequence groupSequence;
+ for (Class<?> groupClass : beanValidation.useGroups())
+ {
+ groupSequence = groupClass.getAnnotation(GroupSequence.class);
+
+ if (groupSequence != null)
+ {
+ groupClassList.addAll(Arrays.asList(groupSequence.value()));
+ }
+ else
+ {
+ groupClassList.add(groupClass);
+ }
+ }
+ return groupClassList;
+ }
}