Revision: 9601
Author: ncha...@google.com
Date: Mon Jan 24 10:40:07 2011
Log: Include class level constraints in the BeanDescriptor.
All BeanDescriptor TCK tests now pass.

[JSR 303 TCK Result] 65 of 257 (25.29%) Pass with 25 Failures and 4 Errors.

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

Review by: rchan...@google.com
http://code.google.com/p/google-web-toolkit/source/detail?r=9601

Modified:
/trunk/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptorImpl.java /trunk/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java /trunk/user/test/org/hibernate/jsr303/tck/tests/metadata/BeanDescriptorGwtTest.java

=======================================
--- /trunk/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptorImpl.java Tue Dec 14 08:48:08 2010 +++ /trunk/user/src/com/google/gwt/validation/client/impl/GwtBeanDescriptorImpl.java Mon Jan 24 10:40:07 2011
@@ -15,6 +15,7 @@
  */
 package com.google.gwt.validation.client.impl;

+import java.lang.annotation.Annotation;
 import java.util.HashMap;
 import java.util.HashSet;
 import java.util.Map;
@@ -34,21 +35,31 @@

   /**
    * Builder for {@link GwtBeanDescriptors}.
-   *
+   *
    * @param <T> the bean Type
    */
   public static final class Builder<T> {

     private final Class<T> clazz;
- private final Map<String, PropertyDescriptor> descriptorMap = new HashMap<String, PropertyDescriptor>();
+    private final Map<String, PropertyDescriptor> descriptorMap =
+        new HashMap<String, PropertyDescriptor>();
+ private final Set<ConstraintDescriptor<? extends Annotation>> constraints =
+        new HashSet<ConstraintDescriptor<? extends Annotation>>();
     private boolean isConstrained;

     private Builder(Class<T> clazz) {
       this.clazz = clazz;
     }
+
+    public Builder<T> add(
+        ConstraintDescriptor<? extends Annotation> constraintDescriptor) {
+      constraints.add(constraintDescriptor);
+      return this;
+    }

     public GwtBeanDescriptorImpl<T> build() {
- return new GwtBeanDescriptorImpl<T>(clazz, isConstrained, descriptorMap); + return new GwtBeanDescriptorImpl<T>(clazz, isConstrained, descriptorMap,
+          constraints);
     }

     public Builder<T> put(String key, PropertyDescriptor value) {
@@ -73,11 +84,13 @@
   private final boolean isBeanConstrained;

   private GwtBeanDescriptorImpl(Class<T> clazz, boolean isConstrained,
-      Map<String, PropertyDescriptor> descriptorMap) {
+      Map<String, PropertyDescriptor> descriptorMap,
+      Set<ConstraintDescriptor<?>> constraints) {
     super();
     this.clazz = clazz;
     this.isBeanConstrained = isConstrained;
     this.descriptorMap.putAll(descriptorMap);
+    this.constraints.addAll(constraints);
   }

   public ConstraintFinder findConstraints() {
@@ -109,15 +122,4 @@
   public boolean isBeanConstrained() {
     return isBeanConstrained;
   }
-
-  protected void setDescriptorMap(Map<String, PropertyDescriptor> map) {
-    descriptorMap.clear();
-    descriptorMap.putAll(map);
-    constraints.clear();
-    for (PropertyDescriptor p : descriptorMap.values()) {
-      if (p.hasConstraints()) {
-        constraints.addAll(p.getConstraintDescriptors());
-      }
-    }
-  }
-}
+}
=======================================
--- /trunk/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java Wed Jan 19 06:58:02 2011 +++ /trunk/user/src/com/google/gwt/validation/rebind/GwtSpecificValidatorCreator.java Mon Jan 24 10:40:07 2011
@@ -491,6 +491,12 @@

     // .setConstrained(true)
sw.println(".setConstrained(" + beanDescriptor.isBeanConstrained() + ")");
+
+    int count = 0;
+ for (ConstraintDescriptor<? extends Annotation>constraint : beanDescriptor.getConstraintDescriptors()) {
+      // .add(c0)
+      sw.println(".add(" + constraintDescriptorVar("this", count++) + ")");
+    }

     // .put("myProperty", myProperty_pd)
for (PropertyDescriptor p : beanDescriptor.getConstrainedProperties()) {
@@ -612,8 +618,7 @@
       int count = 0;
for (ConstraintDescriptor<?> constraint : p.getConstraintDescriptors()) {
         writeConstraintDescriptor(sw, constraint,
-            constraintDescriptorVar(p.getPropertyName(), count));
-        count++; // index starts at zero.
+            constraintDescriptorVar(p.getPropertyName(), count++));
       }
       writePropertyDescriptor(sw, p);
       if (p.isCascaded()) {
@@ -622,20 +627,19 @@
             : createBeanHelper(p.getElementClass()));
       }
     }
-
- // Now write the BeanDescriptor after we already have the PropertyDescriptor
-    writeBeanDescriptor(sw);
-    sw.println();

     // Create a variable for each constraint of this class.
     int count = 0;
     for (ConstraintDescriptor<?> constraint :
         beanHelper.getBeanDescriptor().getConstraintDescriptors()) {
-
       writeConstraintDescriptor(sw, constraint,
-          constraintDescriptorVar("this", count));
-      count++; // index starts at zero.
-    }
+          constraintDescriptorVar("this", count++));
+    }
+
+    // Now write the BeanDescriptor after we already have the
+    // PropertyDescriptors and class constraints
+    writeBeanDescriptor(sw);
+    sw.println();
   }

   private void writeFieldWrapperMethod(SourceWriter sw, JField field) {
@@ -882,7 +886,7 @@
                 + " for type " + clazz);
           }
         }
-        count++; // index starts at 0
+        count++;
       }

       // validate all super classes and interfaces
@@ -1300,7 +1304,7 @@
         writeValidateConstraint(sw, p, elementClass, constraint,
             constraintDescriptorVar);
       }
-      count++; // index starts at zero
+      count++;
     }
     sw.outdent();
     sw.println("}");
=======================================
--- /trunk/user/test/org/hibernate/jsr303/tck/tests/metadata/BeanDescriptorGwtTest.java Tue Jan 11 14:19:47 2011 +++ /trunk/user/test/org/hibernate/jsr303/tck/tests/metadata/BeanDescriptorGwtTest.java Mon Jan 24 10:40:07 2011
@@ -17,8 +17,6 @@

 import com.google.gwt.junit.client.GWTTestCase;

-import org.hibernate.jsr303.tck.util.client.Failing;
-
 /**
  * Test wrapper for {@link BeanDescriptorTest}.
  */
@@ -54,7 +52,6 @@
     delegate.testGetConstraintsForNullProperty();
   }

-  @Failing(issue = 5802)
   public void testIsBeanConstrainedDueToConstraintOnEntity() {
     delegate.testIsBeanConstrainedDueToConstraintOnEntity();
   }

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to