If we rename it FastStringMapImpl at the same time that would work. The rename is useful because people using class-lookup to find gwt utility classes cannot fail to realize it is an impl class.
Of course, what I really want is a public JsStringMap api, and so consider the fact that we are having to make this class public because we need to use it as another plug for bumping up the priority for that API. Also, on the tangential note of serialization that started this thread, consider how fast a custom de-serializer could be made for JsStringMap :-). On Wed, Oct 15, 2008 at 11:42 AM, Scott Blum <[EMAIL PROTECTED]> wrote: > What if we move FastStringMap into > http://code.google.com/p/google-web-toolkit/source/browse/#svn/trunk/user/src/com/google/gwt/user/client/impl > ? > > On Wed, Oct 15, 2008 at 11:00 AM, Emily Crutcher <[EMAIL PROTECTED]> wrote: > >> I do not think we want to make FastStringMap public where it is, though >> this might be another good reason to accelerate creating a jscollection >> package in GWT. >> >> >> >> >> On Wed, Oct 15, 2008 at 10:07 AM, Amit Manjhi <[EMAIL PROTECTED]>wrote: >> >>> 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() { >>> >>> >>> >>> >>> >> >> >> -- >> "There are only 10 types of people in the world: Those who understand >> binary, and those who don't" >> > > -- "There are only 10 types of people in the world: Those who understand binary, and those who don't" --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---
