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"