Revision: 8382
Author: [email protected]
Date: Wed Jul 14 07:07:23 2010
Log: Attributes required by @UiConstructor are no longer enforced when a
field is created via @UiField(provided=true)

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

Review by: [email protected]
http://code.google.com/p/google-web-toolkit/source/detail?r=8382

Modified:
 /trunk/user/src/com/google/gwt/uibinder/elementparsers/BeanParser.java
 /trunk/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.java
 /trunk/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml

=======================================
--- /trunk/user/src/com/google/gwt/uibinder/elementparsers/BeanParser.java Mon Jun 7 12:20:31 2010 +++ /trunk/user/src/com/google/gwt/uibinder/elementparsers/BeanParser.java Wed Jul 14 07:07:23 2010
@@ -25,6 +25,7 @@
 import com.google.gwt.uibinder.rebind.XMLAttribute;
 import com.google.gwt.uibinder.rebind.XMLElement;
 import com.google.gwt.uibinder.rebind.messages.AttributeMessage;
+import com.google.gwt.uibinder.rebind.model.OwnerField;
 import com.google.gwt.uibinder.rebind.model.OwnerFieldClass;

 import java.util.Collection;
@@ -57,16 +58,25 @@
final OwnerFieldClass ownerFieldClass = OwnerFieldClass.getFieldClass(type,
         writer.getLogger());

-    // See if there's a factory method
- JAbstractMethod creator = writer.getOwnerClass().getUiFactoryMethod(type);
-    if (creator == null) {
-      // If not, see if there's a @UiConstructor
-      creator = ownerFieldClass.getUiConstructor();
-    }
-
-    if (creator != null) {
-      for (JParameter param : creator.getParameters()) {
-        unfilledRequiredParams.put(param.getName(), param.getType());
+    /*
+     * Handle @UiFactory and @UiConstructor, but only if the user
+     * hasn't provided an instance via @UiField(provided = true)
+     */
+
+    JAbstractMethod creator = null;
+    OwnerField uiField = writer.getOwnerClass().getUiField(fieldName);
+    if ((uiField == null) || (!uiField.isProvided())) {
+      // See if there's a factory method
+      creator = writer.getOwnerClass().getUiFactoryMethod(type);
+      if (creator == null) {
+        // If not, see if there's a @UiConstructor
+        creator = ownerFieldClass.getUiConstructor();
+      }
+
+      if (creator != null) {
+        for (JParameter param : creator.getParameters()) {
+          unfilledRequiredParams.put(param.getName(), param.getType());
+        }
       }
     }

=======================================
--- /trunk/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.java Tue Jul 13 09:51:15 2010 +++ /trunk/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.java Wed Jul 14 07:07:23 2010
@@ -109,6 +109,9 @@
   @UiField SpanElement trimmedMessage;
   @UiField NeedlesslyAnnotatedLabel needlessLabel;
   @UiField AnnotatedStrictLabel strictLabel;
+  @UiField(provided = true)
+  AnnotatedStrictLabel providedStrictLabel = new AnnotatedStrictLabel(
+      "likewise");
   @UiField AnnotatedStrictLabel translatedStrictLabel;
   @UiField StrictLabel veryStrictLabel;
   @UiField StrictLabel translatedVeryStrictLabel;
=======================================
--- /trunk/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml Fri Jul 2 08:22:57 2010 +++ /trunk/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml Wed Jul 14 07:07:23 2010
@@ -510,6 +510,7 @@
       </demo:StrictLabel></p>
       <p><demo:NeedlesslyAnnotatedLabel ui:field="needlessLabel"
text="Sometimes people do things they don't need to do. Don't punish them."/></p> + <demo:AnnotatedStrictLabel ui:field="providedStrictLabel">ditto</demo:AnnotatedStrictLabel>

       <demo:FooLabel ui:field='theFoo' pojo="{values.pojo}"/>

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

Reply via email to