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