Should I incorporate Emily's and Scott's changes and commit this to 1.6? Regards, Amit
On Wed, Oct 15, 2008 at 12:24 PM, Bruce Johnson <[EMAIL PROTECTED]> wrote: > Let's not do this in 1.5.3. > > > On Wed, Oct 15, 2008 at 12:11 PM, Emily Crutcher <[EMAIL PROTECTED]> wrote: > >> 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 -~----------~----~----~----~------~----~------~--~---
