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