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;

+    }

 }