Check this thread: http://groups.google.com/group/google-web-toolkit-contributors/browse_thread/thread/4239559936d327e7/
On 1 nov, 11:01, Bart Guijt <[email protected]> wrote: > Dear GWT'ers, > > I'd like to propose a new GWT compiler transformation mechanism > involving Async calls. > > I am working on a GWT API for accessing the HTML5 Database feature[1] > in an OpenSource project[2]. The W3C Web Database API[3] is translated > quite literally to a Java equivalent, involving up to 5 callbacks, in > part due to the asynchronous nature of the Database API. > > Right now I am working on a higher level API involving a GWT generator > and a set of Callback interfaces with just one set of onSuccess() and > onFailere() callback methods, very similar to what the GWT RPC API > looks like. > > In GWT we have lots of asynchronous callback types, almost (if not) > all having a failure path (the onFailure() method) and a success path > (the onFailure() method): > > object.aMethod(..., new AsyncCallback() { > public void onSuccess() { > // success path > } > public void onFailure() { > // failure path > }} > > // forward path > > Q: What if we can add a transformation to the compiler which > recognizes something like the following: > > try { > object.aMethod(...); // aMethod is annotated with @Async or > something > // success path} catch (Exception e) { > // failure path > } > > // forward path > > and transforms that to an asynchronous call? > > I know it is not as simple as portrayed here (all 'forward path' code > must be called in an asynchronous manner as well, and RPC methods > would execute the 'forward path' before any 'success/failure path') > but it would nevertheless simplify GWT programming: > > - Just a single RPC interface (no *Async anymore) > - Thread.sleep() - like function possible (games?) > - JDBC compatible API to the HTML5 database API (heh) > Perhaps other callbacks benefit as well. > > There is a JavaScript library called Narrative JavaScript[4] which > does something like this, and introduces a 'yielding operator' to help > the NJS -> JS compiler create executable JavaScript. > > Please note that I am not pleading to remove Async interfaces, I like > the way they embody the Javascript nature of the runtime platform so > well. It is just that for some purposes a synchronous interface makes > more sense, and is also a bit more comprehensible to 'regular' Java > programmers. > > Is any of this feasible at all? I am curious to what you guys think of > this. > > Cheers, > > Bart Guijt > > [1] GWT HTML5 Database > API:http://code.google.com/p/gwt-mobile-webkit/wiki/DatabaseApi > [2] GWT Mobile WebKit project:http://code.google.com/p/gwt-mobile-webkit/ > [3] W3C Web Database:http://www.w3.org/TR/webdatabase/ > [4] Narrative JavaScript:http://www.neilmix.com/narrativejs/doc/ --~--~---------~--~----~------------~-------~--~----~ http://groups.google.com/group/Google-Web-Toolkit-Contributors -~----------~----~----~----~------~----~------~--~---
