Revision: 9891
Author:   [email protected]
Date:     Thu Mar 24 08:36:58 2011
Log:      Fix a bug in the recent alternate message selection logic,
so "other" is always considered a valid form for an enum.

Patch by: jat
Review by: rjrjr

http://code.google.com/p/google-web-toolkit/source/detail?r=9891

Modified:
 /trunk/user/src/com/google/gwt/i18n/rebind/MessagesMethodCreator.java
 /trunk/user/src/com/google/gwt/i18n/server/AbstractMessage.java
 /trunk/user/src/com/google/gwt/i18n/server/AbstractParameter.java
 /trunk/user/src/com/google/gwt/i18n/shared/AlternateMessageSelector.java
 /trunk/user/test/com/google/gwt/i18n/server/MessageInterfaceTestBase.java

=======================================
--- /trunk/user/src/com/google/gwt/i18n/rebind/MessagesMethodCreator.java Fri Mar 11 11:18:03 2011 +++ /trunk/user/src/com/google/gwt/i18n/rebind/MessagesMethodCreator.java Thu Mar 24 08:36:58 2011
@@ -48,6 +48,7 @@
 import com.google.gwt.i18n.rebind.MessageFormatParser.StaticArgChunk;
 import com.google.gwt.i18n.rebind.MessageFormatParser.StringChunk;
 import com.google.gwt.i18n.rebind.MessageFormatParser.TemplateChunk;
+import com.google.gwt.i18n.shared.AlternateMessageSelector;
 import com.google.gwt.i18n.shared.GwtLocale;
import com.google.gwt.safehtml.shared.OnlyToBeUsedInGeneratedCodeStringBlessedAsSafeHtml;
 import com.google.gwt.safehtml.shared.SafeHtml;
@@ -275,7 +276,7 @@
         } else {
           startedIfChain = true;
         }
-        if ("other".equals(value)) {
+        if (AlternateMessageSelector.OTHER_FORM_NAME.equals(value)) {
           out.println("{  // other");
         } else {
           value = value.replace("\"", "\\\"");
@@ -283,7 +284,7 @@
               + ")) {");
         }
       } else {
-        if ("other".equals(value)) {
+        if (AlternateMessageSelector.OTHER_FORM_NAME.equals(value)) {
           out.println("default:  // other");
         } else if (enumType != null) {
           JField field = enumType.findField(value);
@@ -696,7 +697,7 @@
           method.getEnclosingType().getOracle(), ruleClass, locale);
       missingPluralForms = new HashSet<String>();
       for (PluralForm form : pluralRule.pluralForms()) {
-        if (form.getWarnIfMissing() && !"other".equals(form.getName())) {
+ if (form.getWarnIfMissing() && !AlternateMessageSelector.OTHER_FORM_NAME.equals(form.getName())) {
           missingPluralForms.add(form.getName());
         }
       }
@@ -808,7 +809,7 @@
         out.println("switch (arg" + argNumber + "_form) {");
         out.indent();
       }
-      if ("other".equals(value)) {
+      if (AlternateMessageSelector.OTHER_FORM_NAME.equals(value)) {
         out.println("default: // other");
         out.indent();
         return;
@@ -1254,8 +1255,7 @@
           }

           @Override
-          public void visit(StringChunk stringChunk)
-          throws UnableToCompleteException {
+          public void visit(StringChunk stringChunk) {
             gen.appendStringLiteral(stringChunk.getString());
           }
         });
@@ -1384,7 +1384,7 @@
       for (String splitForm : splitForms) {
         if (splitForm.startsWith("=")) {
           allOther = false;
-        } else if (!"other".equals(splitForm)) {
+ } else if (!AlternateMessageSelector.OTHER_FORM_NAME.equals(splitForm)) {
           allOther = false;
         }
       }
@@ -1474,7 +1474,7 @@
           }

           @Override
- public void visit(StaticArgChunk staticArgChunk) throws UnableToCompleteException {
+          public void visit(StaticArgChunk staticArgChunk) {
             buf.appendStringLiteral(staticArgChunk.getReplacement());
           }

=======================================
--- /trunk/user/src/com/google/gwt/i18n/server/AbstractMessage.java Fri Mar 11 11:18:03 2011 +++ /trunk/user/src/com/google/gwt/i18n/server/AbstractMessage.java Thu Mar 24 08:36:58 2011
@@ -105,7 +105,7 @@
       boolean allOther = true;
       for (int i = 0; i < forms.size(); ++i) {
         lastForm[i] = forms.get(i).getName();
-        if (!"other".equals(lastForm[i])) {
+ if (!AlternateMessageSelector.OTHER_FORM_NAME.equals(lastForm[i])) {
           allOther = false;
         }
       }
@@ -260,7 +260,7 @@
         nonOther = false;
         break;
       }
-      if (isStringMap || !"other".equals(formName)) {
+ if (isStringMap | | !AlternateMessageSelector.OTHER_FORM_NAME.equals(formName)) {
         nonOther = true;
       }
       forms.add(new AlternateForm(formName, formName));
@@ -354,7 +354,7 @@
         };
       } else {
         selectors[i] = params.get(selIdx).getAlternateMessageSelector();
-        defaultForms.add(AlternateMessageSelector.OTHER);
+        defaultForms.add(AlternateMessageSelector.OTHER_FORM);
       }
     }
   }
=======================================
--- /trunk/user/src/com/google/gwt/i18n/server/AbstractParameter.java Fri Mar 11 11:18:03 2011 +++ /trunk/user/src/com/google/gwt/i18n/server/AbstractParameter.java Thu Mar 24 08:36:58 2011
@@ -141,7 +141,7 @@
       final String[] validValues = type.getEnumValues();
       return new AlternateMessageSelector() {
         public boolean isFormAcceptable(String form) {
-          if (validValues == null) {
+ if (validValues == null || AlternateMessageSelector.OTHER_FORM_NAME.equals(form)) {
             return true;
           }
           for (String value : validValues) {
=======================================
--- /trunk/user/src/com/google/gwt/i18n/shared/AlternateMessageSelector.java Mon Mar 21 12:22:19 2011 +++ /trunk/user/src/com/google/gwt/i18n/shared/AlternateMessageSelector.java Thu Mar 24 08:36:58 2011
@@ -21,6 +21,11 @@
  */
 public interface AlternateMessageSelector {

+  /**
+   * Name of the "other" form.
+   */
+  public static final String OTHER_FORM_NAME = "other";
+
   /**
    * Represents an alternate form of a message.
    */
@@ -105,7 +110,7 @@
     }
   }

-  AlternateForm OTHER = new AlternateForm("other",
+  AlternateForm OTHER_FORM = new AlternateForm(OTHER_FORM_NAME,
       "Default value if no other forms apply");

   /**
=======================================
--- /trunk/user/test/com/google/gwt/i18n/server/MessageInterfaceTestBase.java Fri Mar 11 11:18:03 2011 +++ /trunk/user/test/com/google/gwt/i18n/server/MessageInterfaceTestBase.java Thu Mar 24 08:36:58 2011
@@ -24,6 +24,7 @@
 import com.google.gwt.i18n.server.impl.ReflectionMessageInterface;
 import com.google.gwt.i18n.server.keygen.MD5KeyGenerator;
 import com.google.gwt.i18n.server.testing.Child;
+import com.google.gwt.i18n.shared.AlternateMessageSelector;
 import com.google.gwt.i18n.shared.GwtLocale;
 import com.google.gwt.i18n.shared.AlternateMessageSelector.AlternateForm;

@@ -58,7 +59,7 @@
           break;
         case 11:
           assertEquals(0, level);
-          assertEquals("other", formName);
+          assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formName);
           break;
         case 19: // mutliSelect, first arg
           assertEquals(0, level);
@@ -109,7 +110,7 @@
         case 149: // other/one
         case 162:
           assertEquals(2, level);
-          assertEquals("other", formName);
+          assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formName);
           break;
         case 34: // mutliSelect, second arg
         case 64: // =1
@@ -117,7 +118,7 @@
         case 124: // one
         case 154: // other
           assertEquals(1, level);
-          assertEquals("other", formName);
+          assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formName);
           break;
         case 49: // mutliSelect, first arg
           assertEquals(0, level);
@@ -133,7 +134,7 @@
           break;
         case 139: // mutliSelect, first arg
           assertEquals(0, level);
-          assertEquals("other", formName);
+          assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formName);
           break;
         case 178: // inheritedMap
           assertEquals(0, level);
@@ -212,7 +213,7 @@
           break;
         case 13:
           assertEquals(0, level);
-          assertEquals("other", formName);
+          assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formName);
           break;
         case 25: // mutliSelect, third arg
         case 38:
@@ -251,7 +252,7 @@
         case 151: // other/one
         case 164:
           assertEquals(2, level);
-          assertEquals("other", formName);
+          assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formName);
           break;
         case 33: // mutliSelect, second arg
         case 63: // =1
@@ -267,7 +268,7 @@
         case 136: // one
         case 166: // other
           assertEquals(1, level);
-          assertEquals("other", formName);
+          assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formName);
           break;
         case 48: // mutliSelect, first arg
           assertEquals(0, level);
@@ -287,7 +288,7 @@
           break;
         case 168: // mutliSelect, first arg
           assertEquals(0, level);
-          assertEquals("other", formName);
+          assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formName);
           break;
         case 180: // inheritedMap
           assertEquals(0, level);
@@ -467,7 +468,7 @@
       selectorTracker.visitForms(formNames);
       boolean shouldBeDefault = true;
       for (String form : formNames) {
-        if (!"other".equals(form)) {
+        if (!AlternateMessageSelector.OTHER_FORM_NAME.equals(form)) {
           shouldBeDefault = false;
           break;
         }
@@ -489,7 +490,7 @@
           break;
         case 12:
           assertEquals(1, formNames.length);
-          assertEquals("other", formNames[0]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[0]);
           assertTrue(isDefault);
           assertEquals("{1} wants to sell their car", msg);
           break;
@@ -511,28 +512,28 @@
           assertEquals(3, formNames.length);
           assertEquals("=0", formNames[0]);
           assertEquals("one", formNames[1]);
-          assertEquals("other", formNames[2]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[2]);
           assertEquals("Nobody liked their message", msg);
           break;
         case 37:
           assertEquals(3, formNames.length);
           assertEquals("=0", formNames[0]);
-          assertEquals("other", formNames[1]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]);
           assertEquals("FEMALE", formNames[2]);
           assertEquals("Nobody liked her {3} messages", msg);
           break;
         case 40:
           assertEquals(3, formNames.length);
           assertEquals("=0", formNames[0]);
-          assertEquals("other", formNames[1]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]);
           assertEquals("MALE", formNames[2]);
           assertEquals("Nobody liked his {3} messages", msg);
           break;
         case 43:
           assertEquals(3, formNames.length);
           assertEquals("=0", formNames[0]);
-          assertEquals("other", formNames[1]);
-          assertEquals("other", formNames[2]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]); + assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[2]);
           assertEquals("Nobody liked their {3} messages", msg);
           break;
         case 54:
@@ -553,28 +554,28 @@
           assertEquals(3, formNames.length);
           assertEquals("=1", formNames[0]);
           assertEquals("one", formNames[1]);
-          assertEquals("other", formNames[2]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[2]);
           assertEquals("{1} liked their message", msg);
           break;
         case 67:
           assertEquals(3, formNames.length);
           assertEquals("=1", formNames[0]);
-          assertEquals("other", formNames[1]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]);
           assertEquals("FEMALE", formNames[2]);
           assertEquals("{1} liked her {3} messages", msg);
           break;
         case 70:
           assertEquals(3, formNames.length);
           assertEquals("=1", formNames[0]);
-          assertEquals("other", formNames[1]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]);
           assertEquals("MALE", formNames[2]);
           assertEquals("{1} liked his {3} messages", msg);
           break;
         case 73:
           assertEquals(3, formNames.length);
           assertEquals("=1", formNames[0]);
-          assertEquals("other", formNames[1]);
-          assertEquals("other", formNames[2]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]); + assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[2]);
           assertEquals("{1} liked their {3} messages", msg);
           break;
         case 84:
@@ -595,28 +596,28 @@
           assertEquals(3, formNames.length);
           assertEquals("=2", formNames[0]);
           assertEquals("one", formNames[1]);
-          assertEquals("other", formNames[2]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[2]);
           assertEquals("{1} and {2} liked their message", msg);
           break;
         case 97:
           assertEquals(3, formNames.length);
           assertEquals("=2", formNames[0]);
-          assertEquals("other", formNames[1]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]);
           assertEquals("FEMALE", formNames[2]);
           assertEquals("{1} and {2} liked her {3} messages", msg);
           break;
         case 100:
           assertEquals(3, formNames.length);
           assertEquals("=2", formNames[0]);
-          assertEquals("other", formNames[1]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]);
           assertEquals("MALE", formNames[2]);
           assertEquals("{1} and {2} liked his {3} messages", msg);
           break;
         case 103:
           assertEquals(3, formNames.length);
           assertEquals("=2", formNames[0]);
-          assertEquals("other", formNames[1]);
-          assertEquals("other", formNames[2]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]); + assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[2]);
           assertEquals("{1} and {2} liked their {3} messages", msg);
           break;
         case 114:
@@ -637,68 +638,68 @@
           assertEquals(3, formNames.length);
           assertEquals("one", formNames[0]);
           assertEquals("one", formNames[1]);
-          assertEquals("other", formNames[2]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[2]);
           assertEquals("{1}, {2}, and one other liked their message", msg);
           break;
         case 127:
           assertEquals(3, formNames.length);
           assertEquals("one", formNames[0]);
-          assertEquals("other", formNames[1]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]);
           assertEquals("FEMALE", formNames[2]);
assertEquals("{1}, {2}, and one other liked her {3} messages", msg);
           break;
         case 130:
           assertEquals("one", formNames[0]);
-          assertEquals("other", formNames[1]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]);
           assertEquals("MALE", formNames[2]);
assertEquals("{1}, {2}, and one other liked his {3} messages", msg);
           break;
         case 133:
           assertEquals(3, formNames.length);
           assertEquals("one", formNames[0]);
-          assertEquals("other", formNames[1]);
-          assertEquals("other", formNames[2]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]); + assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[2]); assertEquals("{1}, {2}, and one other liked their {3} messages", msg);
           break;
         case 144:
           assertEquals(3, formNames.length);
-          assertEquals("other", formNames[0]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[0]);
           assertEquals("one", formNames[1]);
           assertEquals("FEMALE", formNames[2]);
           assertEquals("{1}, {2}, and {0} others liked her message", msg);
           break;
         case 147:
           assertEquals(3, formNames.length);
-          assertEquals("other", formNames[0]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[0]);
           assertEquals("one", formNames[1]);
           assertEquals("MALE", formNames[2]);
           assertEquals("{1}, {2}, and {0} others liked his message", msg);
           break;
         case 150:
           assertEquals(3, formNames.length);
-          assertEquals("other", formNames[0]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[0]);
           assertEquals("one", formNames[1]);
-          assertEquals("other", formNames[2]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[2]); assertEquals("{1}, {2}, and {0} others liked their message", msg);
           break;
         case 157:
           assertEquals(3, formNames.length);
-          assertEquals("other", formNames[0]);
-          assertEquals("other", formNames[1]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[0]); + assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]);
           assertEquals("FEMALE", formNames[2]);
assertEquals("{1}, {2}, and {0} others liked her {3} messages", msg);
           break;
         case 160:
-          assertEquals("other", formNames[0]);
-          assertEquals("other", formNames[1]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[0]); + assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]);
           assertEquals("MALE", formNames[2]);
assertEquals("{1}, {2}, and {0} others liked his {3} messages", msg);
           break;
         case 163:
           assertEquals(3, formNames.length);
-          assertEquals("other", formNames[0]);
-          assertEquals("other", formNames[1]);
-          assertEquals("other", formNames[2]);
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[0]); + assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[1]); + assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, formNames[2]); assertEquals("{1}, {2}, and {0} others liked their {3} messages", msg);
           break;
         case 173:
@@ -854,7 +855,7 @@
     mapping = formIter.next();
     forms = mapping.getForms();
     assertEquals(1, forms.size());
-    assertEquals("other", forms.get(0).getName());
+ assertEquals(AlternateMessageSelector.OTHER_FORM_NAME, forms.get(0).getName());
     assertFalse(formIter.hasNext());
   }

--
http://groups.google.com/group/Google-Web-Toolkit-Contributors

Reply via email to