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}' />