On Fri, Sep 26, 2008 at 11:46 AM, John Tamplin <[EMAIL PROTECTED]> wrote:
> On Fri, Sep 26, 2008 at 11:37 AM, Eric Ayers <[EMAIL PROTECTED]> wrote: > >> I am running into a problem in hosted mode that is kind of tricky to work >> around. >> >> gwt-google-apis issue 180: >> >> http://code.google.com/p/gwt-google-apis/issues/detail?id=180 >> >> Basically, I have a JS API that is calling back into a method defined in >> Java: >> >> [EMAIL PROTECTED] >> ::fromPixelToLatLng(Lcom/google/gwt/maps/client/geom/Point;IZ)( >> arg0 || null, >> arg1, >> arg2); >> >> were 'arg2' is a boolean value. >> >> Sometimes, the Maps API is passing 'undefined' as the 3rd argument. >> I could fix this by writing all my argument passing in the form of: >> >> (arg2 == null ? false : arg2) >> >> but this would just be a workaround for hosted mode - web mode wouldn't >> care about the difference. Besides that, it would bloat up the code. So, I >> propose that in JsGlue that we just assume a null or undefined value is >> "false" when passed into java. >> >> M user/test/com/google/gwt/dev/jjs/test/HostedTest.java >> M dev/core/src/com/google/gwt/dev/shell/JsValueGlue.java >> > > For this to be reasonable, you have to be certain that everywhere a boolean > can be used the behavior of a null is exactly the same -- otherwise you will > be masking web-mode problems. One example where this would cause a problem > would be > > public native String getBool(boolean v) /*-{ > return "" + v; > }-*/; > > If a JS undefined or null were allowed to be passed into Java code as a > boolean, then the result of this function would be different in web mode vs. > hosted mode. > > I think anytime we are getting values from JS, it is safer to ensure they > match the declared type at that point. If you do it often, write a small > function to do the mapping. > > Examples where we *have* relaxed the JS types that can be used are String > (vs primitive string) and null/undef equivalence (by changing the generated > code in the few cases that care). > > -- > John A. Tamplin > Software Engineer (GWT), Google > Ok, I see that would make a difference. @BobV, Instead, to get this to work in the Maps API, I'm going to go into the JSIO generator and generate the function (or inline equivalent) to do the mapping. -- Eric Z. Ayers - GWT Team - Atlanta, GA USA http://code.google.com/webtoolkit/ --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---