Hi John,
Please review the attached patch which fixes
http://code.google.com/p/google-web-toolkit/issues/detail?id=2862 As per
Scott's suggestion in the comments, I changed the implementation to use
FastStringMap. Since FastStringMap is in a different package, I had to make
the class public and make some of the private fields protected. The change
passes all the i18n tests. Finally, modulo everything looks good, should
this go in 1_5_3?
Regards,
Amit
Index: user/src/com/google/gwt/i18n/client/impl/ConstantMap.java
===================================================================
--- user/src/com/google/gwt/i18n/client/impl/ConstantMap.java (revision
3731)
+++ user/src/com/google/gwt/i18n/client/impl/ConstantMap.java (working
copy)
@@ -15,9 +15,10 @@
*/
package com.google.gwt.i18n.client.impl;
+import com.google.gwt.user.client.ui.FastStringMap;
+
import java.util.ArrayList;
import java.util.Collection;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
@@ -30,26 +31,15 @@
* specific, no elements are every removed from them and all elements are
added
* before the first user operation.
*/
-public class ConstantMap extends HashMap<String, String> {
+public class ConstantMap extends FastStringMap<String> {
- private static class DummyMapEntry implements Map.Entry<String, String> {
- private final String key;
+ private static class DummyMapEntry extends
FastStringMap.ImplMapEntry<String> {
- private final String value;
-
DummyMapEntry(String key, String value) {
- this.key = key;
- this.value = value;
+ super(key, value);
}
- public String getKey() {
- return key;
- }
-
- public String getValue() {
- return value;
- }
-
+ @Override
public String setValue(String arg0) {
throw new UnsupportedOperationException();
}
Index: user/src/com/google/gwt/user/client/ui/FastStringMap.java
===================================================================
--- user/src/com/google/gwt/user/client/ui/FastStringMap.java (revision
3731)
+++ user/src/com/google/gwt/user/client/ui/FastStringMap.java (working
copy)
@@ -31,16 +31,23 @@
* Special-case Map implementation which imposes limits on the types of
keys
* that can be used in return for much faster speed. In specific, only
strings
* that could be added to a JavaScript object as keys are valid.
+ *
+ * @param <T> the type of values.
*/
+public class FastStringMap<T> extends AbstractMap<String, T> {
-class FastStringMap<T> extends AbstractMap<String, T> {
- private static class ImplMapEntry<T> implements Map.Entry<String, T> {
+ /**
+ * Internal map entry.
+ *
+ * @param <T> The type of values.
+ */
+ protected static class ImplMapEntry<T> implements Map.Entry<String, T> {
private String key;
private T value;
- ImplMapEntry(String key, T value) {
+ protected ImplMapEntry(String key, T value) {
this.key = key;
this.value = value;
}
@@ -99,7 +106,7 @@
/*
* Accesses need to be prefixed with ':' to prevent conflict with
built-in
* JavaScript properties.
- */
+ */
private JavaScriptObject map;
public FastStringMap() {
--~--~---------~--~----~------------~-------~--~----~
http://groups.google.com/group/Google-Web-Toolkit-Contributors
-~----------~----~----~----~------~----~------~--~---