Fix UiBinder default values for missing array-valued attributes,
change ui:baseInterface to ui:baseMessagesInterface.
Review by: rjrjr@google.com
git-svn-id: https://google-web-toolkit.googlecode.com/svn/trunk@10245 8db76d5a-ed1c-0410-87a9-c151d255dfc7
diff --git a/user/src/com/google/gwt/uibinder/rebind/messages/MessagesWriter.java b/user/src/com/google/gwt/uibinder/rebind/messages/MessagesWriter.java
index 2b9c122..61f0b00 100644
--- a/user/src/com/google/gwt/uibinder/rebind/messages/MessagesWriter.java
+++ b/user/src/com/google/gwt/uibinder/rebind/messages/MessagesWriter.java
@@ -141,10 +141,27 @@
/**
* Consume an m:blah attribute on a non-message element, e.g.
* {@code <span m:ph="fnord"/>}
+ *
+ * @param attName name of the attribute (to be prefixed with "msgprefix:")
+ * @param elem element to search
+ * @return attribute value, or an empty string if not found
*/
public String consumeMessageAttribute(String attName, XMLElement elem) {
+ return consumeMessageAttribute(attName, elem, "");
+ }
+
+ /**
+ * Consume an m:blah attribute on a non-message element, e.g.
+ * {@code <span m:ph="fnord"/>}
+ *
+ * @param attName name of the attribute (to be prefixed with "msgprefix:")
+ * @param elem element to search
+ * @param defaultValue default value to return if the attribute is not present
+ * @return attribute value, or {@code defaultValue} if not found
+ */
+ public String consumeMessageAttribute(String attName, XMLElement elem, String defaultValue) {
String fullAttName = getMessagesPrefix() + ":" + attName;
- return elem.consumeRawAttribute(fullAttName, "");
+ return elem.consumeRawAttribute(fullAttName, defaultValue);
}
/**
@@ -166,7 +183,14 @@
String prefix = elem.lookupPrefix(getMessagesUri());
if (prefix != null) {
messagesPrefix = prefix;
- String baseInterfaceAttr = elem.consumeRawAttribute(getMessagesPrefix() + ":baseInterface");
+ String baseInterfaceAttr = consumeMessageAttribute("baseMessagesInterface", elem, null);
+ if (baseInterfaceAttr == null) {
+ // TODO(jat): temporary compatibility, remove next week
+ baseInterfaceAttr = consumeMessageAttribute("baseInterface", elem, null);
+ if (baseInterfaceAttr != null) {
+ logger.warn(elem, "baseInterface is deprecated, use baseMessagesInterface instead");
+ }
+ }
if (baseInterfaceAttr != null) {
JClassType baseInterfaceType = oracle.findType(baseInterfaceAttr);
if (baseInterfaceType == null) {
@@ -364,7 +388,7 @@
private String[] getMessageAttributeStringArray(String attName,
XMLElement elem) {
- String value = consumeMessageAttribute(attName, elem);
+ String value = consumeMessageAttribute(attName, elem, null);
if (value == null) {
return EMPTY_ARRAY;
}
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 1af6c05..03376f3 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
@@ -54,7 +54,7 @@
xmlns:legacyValuesForBeans='urn:with:com.google.gwt.uibinder.test.client.WidgetBasedUi.FakeBundle2'
xmlns:legacyValuesForHtml='urn:with:com.google.gwt.uibinder.test.client.WidgetBasedUi.FakeBundle3'
- ui:baseInterface="com.google.gwt.uibinder.test.client.MyMessages"
+ ui:baseMessagesInterface="com.google.gwt.uibinder.test.client.MyMessages"
ui:defaultLocale="en_US"
ui:generateKeys="com.google.gwt.i18n.rebind.keygen.MD5KeyGenerator"
ui:generateFormat="com.google.gwt.i18n.rebind.format.PropertiesFormat"