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