Revision: 10281
Author:   [email protected]
Date:     Mon Jun  6 06:47:21 2011
Log: Changing lazy widgets strategy to die in case a given @UiField attribute
has no counterpart in the template.

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

http://code.google.com/p/google-web-toolkit/source/detail?r=10281

Modified:
 /trunk/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java

=======================================
--- /trunk/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java Tue May 24 10:37:15 2011 +++ /trunk/user/src/com/google/gwt/uibinder/rebind/UiBinderWriter.java Mon Jun 6 06:47:21 2011
@@ -999,6 +999,26 @@
           + detachStatementsStack);
     }
   }
+
+  /**
+   * Evaluate whether all @UiField attributes are also defined in the
+   * template. Dies if not.
+   */
+  private void evaluateUiFields() throws UnableToCompleteException {
+    if (designTime.isDesignTime()) {
+      return;
+    }
+    for (OwnerField ownerField : getOwnerClass().getUiFields()) {
+      String fieldName = ownerField.getName();
+      FieldWriter fieldWriter = fieldManager.lookup(fieldName);
+
+      if (fieldWriter == null) {
+        die("Template %s has no %s attribute for %s.%s#%s", templatePath,
+            getUiFieldAttributeName(), uiOwnerType.getPackage().getName(),
+            uiOwnerType.getName(), fieldName);
+      }
+    }
+  }

   /**
    * Given a DOM tag name, return the corresponding JSO subclass.
@@ -1374,6 +1394,8 @@
     w.outdent();
     w.write("}");

+    evaluateUiFields();
+
     fieldManager.writeFieldDefinitions(
         w, getOracle(), getOwnerClass(), getDesignTime());

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

Reply via email to