Copy/paste detected in NumberLabelParser :-)
It leaks DateTimeFormat from DateLabelParser.
I've added couple statements into test and fixed problem.
Submitting for scheglov@google.com
Review at http://gwt-code-reviews.appspot.com/1381801/
Review by: scheglov@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@9840 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/uibinder/elementparsers/NumberLabelParser.java b/user/src/com/google/gwt/uibinder/elementparsers/NumberLabelParser.java
index 5ff6656..01b4002 100644
--- a/user/src/com/google/gwt/uibinder/elementparsers/NumberLabelParser.java
+++ b/user/src/com/google/gwt/uibinder/elementparsers/NumberLabelParser.java
@@ -20,7 +20,6 @@
import com.google.gwt.core.ext.typeinfo.JType;
import com.google.gwt.core.ext.typeinfo.TypeOracle;
import com.google.gwt.i18n.client.CurrencyData;
-import com.google.gwt.i18n.client.DateTimeFormat;
import com.google.gwt.i18n.client.NumberFormat;
import com.google.gwt.uibinder.rebind.UiBinderWriter;
import com.google.gwt.uibinder.rebind.XMLElement;
@@ -79,7 +78,7 @@
private String consumeFormat(XMLElement elem, UiBinderWriter writer)
throws UnableToCompleteException {
String format = elem.consumeAttribute("format",
- writer.getOracle().findType(DateTimeFormat.class.getCanonicalName()));
+ writer.getOracle().findType(NumberFormat.class.getCanonicalName()));
String predefinedFormat = elem.consumeRawAttribute("predefinedFormat");
String customFormat = elem.consumeStringAttribute("customFormat");
diff --git a/user/test/com/google/gwt/uibinder/elementparsers/NumberLabelParserTest.java b/user/test/com/google/gwt/uibinder/elementparsers/NumberLabelParserTest.java
index 41fff15..ddbf9d0 100644
--- a/user/test/com/google/gwt/uibinder/elementparsers/NumberLabelParserTest.java
+++ b/user/test/com/google/gwt/uibinder/elementparsers/NumberLabelParserTest.java
@@ -98,13 +98,13 @@
b.append("<ui:UiBinder xmlns:ui='" + ElementParserTester.BINDER_URI + "'");
b.append(" xmlns:my='urn:import:my'");
b.append(" xmlns:g='urn:import:com.google.gwt.user.client.ui'>");
- b.append(" <my:MyConstructedNumberLabel format='{someDateTimeFormat}' /> ");
+ b.append(" <my:MyConstructedNumberLabel format='{someNumberFormat}' /> ");
b.append("</ui:UiBinder>");
parser.parse(tester.getElem(b.toString(), "my:MyConstructedNumberLabel"),
"fieldName", tester.parsedType, tester.writer);
FieldWriter w = tester.fieldManager.lookup("fieldName");
- assertEquals("new my.MyConstructedNumberLabel(someDateTimeFormat)",
+ assertEquals("new my.MyConstructedNumberLabel(someNumberFormat)",
w.getInitializer());
assertTrue(tester.writer.statements.isEmpty());
@@ -178,8 +178,8 @@
tester.parse(b.toString());
fail();
} catch (UnableToCompleteException e) {
- assertTrue("Expect to hear about DateTimeFormat",
- tester.logger.died.contains("DateTimeFormat"));
+ assertTrue("Expect to hear about NumberFormat",
+ tester.logger.died.contains("NumberFormat"));
}
}
diff --git a/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.java b/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.java
index 8e099e0..d1067f5 100644
--- a/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.java
+++ b/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.java
@@ -23,6 +23,9 @@
import com.google.gwt.dom.client.ParagraphElement;
import com.google.gwt.dom.client.SpanElement;
import com.google.gwt.dom.client.TableElement;
+import com.google.gwt.i18n.client.DateTimeFormat;
+import com.google.gwt.i18n.client.NumberFormat;
+import com.google.gwt.i18n.client.DateTimeFormat.PredefinedFormat;
import com.google.gwt.resources.client.CssResource;
import com.google.gwt.resources.client.DataResource;
import com.google.gwt.resources.client.ImageResource;
@@ -83,6 +86,9 @@
@UiField(provided = true)
final WidgetBasedUiExternalResources external = GWT.create(WidgetBasedUiExternalResources.class);
+
+ public static final DateTimeFormat MY_DATE_FORMAT = DateTimeFormat.getFormat(PredefinedFormat.DATE_FULL);
+ public static final NumberFormat MY_NUMBER_FORMAT = NumberFormat.getDecimalFormat();
@UiField(provided = true)
final Label bundledLabel = new Label();
@@ -183,7 +189,9 @@
@UiField Widget myAbsolutePanelItemC;
@UiField NamedFrame myNamedFrame;
@UiField DateLabel myDateLabel;
+ @UiField DateLabel myDateLabel2;
@UiField NumberLabel<Float> myNumberLabel;
+ @UiField NumberLabel<Float> myNumberLabel2;
@UiField(provided = true) @SuppressWarnings("unchecked")
Renderer doubleRenderer = DoubleRenderer.instance();
@UiField ValueLabel<Double> myValueLabel;
diff --git a/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml b/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml
index 660cad8..217891f 100644
--- a/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml
+++ b/user/test/com/google/gwt/uibinder/test/client/WidgetBasedUi.ui.xml
@@ -88,6 +88,14 @@
Tests the static import of an enum into the local namespace.
</ui:import>
+<ui:import field='com.google.gwt.uibinder.test.client.WidgetBasedUi.MY_DATE_FORMAT'>
+ Tests a DateTimeFormat using for the DateTimeLabel.
+</ui:import>
+
+<ui:import field='com.google.gwt.uibinder.test.client.WidgetBasedUi.MY_NUMBER_FORMAT'>
+ Tests a NumberFormat using for the NumberLabel.
+</ui:import>
+
<!--
Tests creating a CssResource from an external file.
-->
@@ -654,8 +662,10 @@
<gwt:NamedFrame ui:field='myNamedFrame' name='myName'/>
<gwt:DateLabel ui:field='myDateLabel' predefinedFormat='DATE_FULL' />
+ <gwt:DateLabel ui:field='myDateLabel2' format='{MY_DATE_FORMAT}' />
<gwt:NumberLabel ui:field='myNumberLabel' predefinedFormat='SCIENTIFIC' />
+ <gwt:NumberLabel ui:field='myNumberLabel2' format='{MY_NUMBER_FORMAT}' />
<gwt:ValueLabel ui:field='myValueLabel' renderer='{doubleRenderer}' />