Match Classes to validate in the order specified in the GwtValidaiton
Annotation.

[JSR 303 TCK Result] 62 of 258 (24.03%) Pass with 27 Failures and 5 Errors.

Review at http://gwt-code-reviews.appspot.com/1294802

Review by: rchandia@google.com

git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9560 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java b/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java
index 7d4772f..a2a92cf 100644
--- a/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java
+++ b/user/src/com/google/gwt/validation/rebind/ValidatorCreator.java
@@ -19,6 +19,7 @@
 import com.google.gwt.core.ext.GeneratorContext;
 import com.google.gwt.core.ext.TreeLogger;
 import com.google.gwt.core.ext.typeinfo.JClassType;
+import com.google.gwt.thirdparty.guava.common.collect.Lists;
 import com.google.gwt.user.rebind.ClassSourceFileComposerFactory;
 import com.google.gwt.user.rebind.SourceWriter;
 import com.google.gwt.validation.client.GwtValidation;
@@ -27,8 +28,7 @@
 import com.google.gwt.validation.client.impl.GwtSpecificValidator;
 import com.google.gwt.validation.client.impl.GwtValidationContext;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.List;
 import java.util.Set;
 
 import javax.validation.ConstraintViolation;
@@ -39,7 +39,10 @@
  */
 public class ValidatorCreator extends AbstractCreator {
 
-  private final Map<JClassType, BeanHelper> beansToValidate = new HashMap<JClassType, BeanHelper>();
+  /**
+   * The beans to validate in source declaratoin order.
+   */
+  private final List<BeanHelper> beansToValidate = Lists.newArrayList();
   private final GwtValidation gwtValidation;
 
 
@@ -50,9 +53,10 @@
     super(context, logger, validatorType);
     this.gwtValidation = gwtValidation;
 
+
     for (Class<?> clazz : gwtValidation.value()) {
       BeanHelper helper = createBeanHelper(clazz);
-      beansToValidate.put(helper.getJClass(), helper);
+      beansToValidate.add(helper);
     }
   }
 
@@ -134,7 +138,7 @@
     // checkNotNull(clazz, "clazz");
     sw.println("checkNotNull(clazz, \"clazz\");");
 
-    for (BeanHelper bean : beansToValidate.values()) {
+    for (BeanHelper bean : beansToValidate) {
       writeGetConstraintsForClass(sw, bean);
     }
 
@@ -182,14 +186,14 @@
 
     // + "Valid values are {Foo.clas, Bar.class}
     sourceWriter.print("+ \"Valid types are ");
-    sourceWriter.print(beansToValidate.values().toString());
+    sourceWriter.print(beansToValidate.toString());
     sourceWriter.println("\");");
     sourceWriter.outdent();
     sourceWriter.outdent();
   }
 
   private void writeTypeSupport(SourceWriter sw) {
-    for (BeanHelper bean : beansToValidate.values()) {
+    for (BeanHelper bean : beansToValidate) {
       writeValidatorInstance(sw, bean);
     }
   }
@@ -204,7 +208,7 @@
     sw.println("checkNotNull(groups, \"groups\");");
     sw.println("checkGroups(groups);");
 
-    for (BeanHelper bean : beansToValidate.values()) {
+    for (BeanHelper bean : beansToValidate) {
       writeValidate(sw, bean);
     }
 
@@ -240,7 +244,7 @@
     sw.println("checkNotNull(groups, \"groups\");");
     sw.println("checkGroups(groups);");
 
-    for (BeanHelper bean : beansToValidate.values()) {
+    for (BeanHelper bean : beansToValidate) {
       writeValidateProperty(sw, bean);
     }
 
@@ -271,7 +275,7 @@
     sw.println("checkNotNull(groups, \"groups\");");
     sw.println("checkGroups(groups);");
 
-    for (BeanHelper bean : beansToValidate.values()) {
+    for (BeanHelper bean : beansToValidate) {
       writeValidateValue(sw, bean);
     }
 
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/ConstraintCompositionGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/ConstraintCompositionGwtTest.java
index 9721c6e..c8d29de 100644
--- a/user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/ConstraintCompositionGwtTest.java
+++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/ConstraintCompositionGwtTest.java
@@ -40,12 +40,10 @@
     delegate.testAttributesDefinedOnComposingConstraints();
   }
 
-  @Failing(issue = 5799)
   public void testComposedConstraints() {
     delegate.testComposedConstraints();
   }
 
-  @Failing(issue = 5799)
   public void testComposedConstraintsAreRecursive() {
     delegate.testComposedConstraintsAreRecursive();
   }
@@ -55,7 +53,6 @@
     delegate.testEachFailingConstraintCreatesConstraintViolation();
   }
 
-  @Failing(issue = 5799)
   public void testGroupsDefinedOnMainAnnotationAreInherited() {
     delegate.testGroupsDefinedOnMainAnnotationAreInherited();
   }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/TckTestValidatorFactory.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/TckTestValidatorFactory.java
index 38aaa79..a1db13b 100644
--- a/user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/TckTestValidatorFactory.java
+++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/constraintcomposition/TckTestValidatorFactory.java
@@ -31,7 +31,8 @@
    * Marker Interface for {@link GWT#create(Class)}.
    */
   @GwtValidation(value = {
-      Address.class, FrenchAddress.class, Friend.class, GermanAddress.class,
+      // German and French must be listed before the Address Super class
+      GermanAddress.class, FrenchAddress.class, Address.class, Friend.class,
       Shoe.class
       // TODO(nchalko) handle ConstraintDefinitionException
       // ConstraintCompositionGwtTest.DummyEntityWithZipCode.class
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/customconstraint/CustomConstraintValidatorGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/customconstraint/CustomConstraintValidatorGwtTest.java
index 69ad2d0..11aa059 100644
--- a/user/test/org/hibernate/jsr303/tck/tests/constraints/customconstraint/CustomConstraintValidatorGwtTest.java
+++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/customconstraint/CustomConstraintValidatorGwtTest.java
@@ -30,7 +30,6 @@
     return "org.hibernate.jsr303.tck.tests.constraints.customconstraint.TckTest";
   }
 
-  @Failing(issue = 5800)
   public void testDefaultPropertyPath() {
     delegate.testDefaultPropertyPath();
   }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java
index 0472ca9..ce061b2 100644
--- a/user/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java
+++ b/user/test/org/hibernate/jsr303/tck/tests/constraints/validatorresolution/ValidatorResolutionGwtTest.java
@@ -34,7 +34,6 @@
     delegate.testAmbiguousValidatorResolution();
   }
 
-  @Failing(issue = 5806)
   public void testResolutionOfMinMaxForDifferentTypes() {
     delegate.testResolutionOfMinMaxForDifferentTypes();
   }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/validation/PropertyPathGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/validation/PropertyPathGwtTest.java
index c4361d4..25bfde8 100644
--- a/user/test/org/hibernate/jsr303/tck/tests/validation/PropertyPathGwtTest.java
+++ b/user/test/org/hibernate/jsr303/tck/tests/validation/PropertyPathGwtTest.java
@@ -24,7 +24,6 @@
 
   private final PropertyPathTest delegate = new PropertyPathTest();
 
-  @Failing(issue = 5803)
   public void testPropertyPathSet() {
     delegate.testPropertyPathSet();
   }
diff --git a/user/test/org/hibernate/jsr303/tck/tests/validation/ValidatePropertyGwtTest.java b/user/test/org/hibernate/jsr303/tck/tests/validation/ValidatePropertyGwtTest.java
index 39fa78d..5f38d04 100644
--- a/user/test/org/hibernate/jsr303/tck/tests/validation/ValidatePropertyGwtTest.java
+++ b/user/test/org/hibernate/jsr303/tck/tests/validation/ValidatePropertyGwtTest.java
@@ -45,7 +45,6 @@
     }
   }
 
-  @Failing(issue = 5804)
   public void testValidateProperty() {
     delegate.testValidateProperty();
   }