On 02/18/2013 05:09 AM, Kanagaraj Mayilsamy wrote: > > > ----- Original Message ----- >> From: "Vojtech Szocs" <vsz...@redhat.com> >> To: "Daniel Erez" <de...@redhat.com> >> Cc: a...@ovirt.org, engine-devel@ovirt.org >> Sent: Saturday, February 16, 2013 1:07:56 AM >> Subject: Re: [Engine-devel] REST API calls from the GUI >> >> Hi Daniel, >> >>> The first alternative can be implemented by using GWT >>> RequestBuilder (for sending the HTTP requests) >>> and GWT overlay types (that can be generated from java POJOs). >>> Probably best performance-wise/less data type conversions/etc; >>> However, basically means writing a JavaScript SDK. >> >> Yes, we can use RequestBuilder for making AJAX HTTP requests, but >> using GWT overlay types is possible only if REST API fully supports >> JSON format. In case of XML format, we would have to use GWT >> XMLParser to map "restapi-types" entities/collections to/from XML >> strings, e.g. we could write GWT deferred binding generators to >> generate such mappers from current schema. > > AutoBean(http://code.google.com/p/google-web-toolkit/wiki/AutoBean) could be > useful instead of generating/writing overlay types. AutoBeans will be > converted overlay types internally by GWT automatically. > >> >>> The benefit of the second alternative is currently rather vague >>> since the Java SDK can't be converted to JavaScript as is >>> (can't use apache.commons and javax packages in GWT client side). >>> Need to check how easily they can be replaced >>> with JRE libraries that GWT can emulate (for supporting both GWT >>> web and debug mode). >> >> Indeed, we can't use Java REST API SDK as it is with GWT: >> https://developers.google.com/web-toolkit/doc/latest/RefJreEmulation >> >> This means we need to implement our own transport layer >> (RequestBuilder) and most likely also the marshalling layer >> (XMLParser vs. JSONParser vs. overlay types). > > It would be better if We can come up with a "GWT REST API SDK", which is > analogous Java SDK. > >> >>> A third alternative could be simply maintaining the current GWT RPC >>> mechanism we use. >>> I.e. integrating the Java SDK into the GWT servlet, which means >>> wrapping the API into GenericApiGWTService. >>> The main drawback is an additional layer of data type conversion >>> and round-trip: >>> Backend <-> REST <-> Java SDK (servlet) <-> JavaScript (client). >> >> This is interesting, generic API could be used to transfer >> "restapi-types", along with extra information to emulate proper HTTP >> request, without any marshalling involved. >> > > We can't directly use the restapi models in the client side, as they have lot > of xml and annotations stuff involved which will not be compatible with GWT.
why? they only have jaxb annotations which are 'must' for serialization & talking with api. > >> Vojtech >> >> >> ----- Original Message ----- >> From: "Daniel Erez" <de...@redhat.com> >> To: "Michael Pasternak" <mpast...@redhat.com> >> Cc: engine-devel@ovirt.org, "Einav Cohen" <eco...@redhat.com>, >> a...@ovirt.org, "Libor Spevak" <lspe...@redhat.com>, "Vojtech Szocs" >> <vsz...@redhat.com> >> Sent: Friday, February 15, 2013 7:17:43 PM >> Subject: Re: [Engine-devel] REST API calls from the GUI >> >> >> >> ----- Original Message ----- >>> From: "Michael Pasternak" <mpast...@redhat.com> >>> To: "Libor Spevak" <lspe...@redhat.com> >>> Cc: engine-devel@ovirt.org, "Daniel Erez" <de...@redhat.com>, >>> "Gilad Chaplik" <gchap...@redhat.com>, "Einav Cohen" >>> <eco...@redhat.com>, a...@ovirt.org >>> Sent: Wednesday, February 13, 2013 12:55:36 PM >>> Subject: Re: [Engine-devel] REST API calls from the GUI >>> >>> >>> Hi Libor, >>> >>> This issue came across in one of the conversations i had with UX >>> folks, but since we didn't end >>> up with any conclusion/road map (nor discussed it properly to hear >>> other thoughts), this is a perfect >>> place to start this discussion, >>> >>> Intuitively REST is a way to go with GWT AJAX calls >>> --------------------------------------------------- >>> >>> pros >>> ==== >>> >>> - api data objects can be reused by generating java classes (using >>> jaxb) from the rest schema [1] >>> - no backend logic will be duplicated as api abstracts the backend >>> exposing RESTful collection/resources to operate on >>> - development against api is "easy" as api describes itself in RSDL >>> [2] >>> >>> cons >>> ==== >>> >>> - implementing transport layer (HTTP) under GWT >>> - implementing own j2xml/json/yaml/... marshalling layer >>> - implementing own error handling mechanism >>> - implementing REST callback mechanism (in GWT) >>> - constant maintenance of the data objects generated from the api >>> - painful for Java developers >>> >>> Java-SDK >>> -------- >>> >>> pros >>> ==== >>> >>> - abstracts transport layer (leaving developer in standard Java >>> api) >>> - typesafe code (no need to mess with XML bulks) >>> - has own data objects to work with >>> - abstracts authentication/authorization >>> (kerberos/cookie/session/etc.) >>> - since SDK is auto-generated, it can be easily extended with >>> required >>> features to support UI (such as callback infrastructure for >>> instance) >>> >>> cons >>> ==== >>> >>> - has to be converted in to Javascript (not sure what the impacts >>> are >>> in terms of AJAX calls/etc.) >>> - probably much more cons that we're not aware of and will have to >>> figure out with POC >>> >>> >>> thoughts? >> >> >> The first alternative can be implemented by using GWT RequestBuilder >> (for sending the HTTP requests) >> and GWT overlay types (that can be generated from java POJOs). >> Probably best performance-wise/less data type conversions/etc; >> However, basically means writing a JavaScript SDK. >> >> The benefit of the second alternative is currently rather vague since >> the Java SDK can't be converted to JavaScript as is >> (can't use apache.commons and javax packages in GWT client side). >> Need to check how easily they can be replaced >> with JRE libraries that GWT can emulate (for supporting both GWT web >> and debug mode). >> >> A third alternative could be simply maintaining the current GWT RPC >> mechanism we use. >> I.e. integrating the Java SDK into the GWT servlet, which means >> wrapping the API into GenericApiGWTService. >> The main drawback is an additional layer of data type conversion and >> round-trip: >> Backend <-> REST <-> Java SDK (servlet) <-> JavaScript (client). >> >> >>> >>> [1] http[s]://server[:port]/api?schema >>> [2] http[s]://server[:port]/api?rsdl >>> >>> On 02/12/2013 06:13 PM, Libor Spevak wrote: >>>> Hi, >>>> >>>> I would like to ask, if there have been discussions about an >>>> option >>>> to call REST API services directly from the Frontend (GWT layer)? >>>> GWT compiles Java frontend-side to >>>> Javascript, calls to backend services are performed >>>> "transparently" >>>> by the framework using AJAX support. But, there is still a need >>>> to >>>> have a special set of data objects >>>> and the server-side logic can duplicate. >>>> >>>> Java REST API SDK enables to build "thick" client. The calls are >>>> realized using e.g. Apache HttClient and supported libraries. I >>>> think the requirements of GWT can be a >>>> little bit different, but something overlaps. >>>> >>>> I found several links about REST API support from GWT, so there >>>> is >>>> something for inspiration... >>>> >>>> - http://www.spiffyui.org/ >>>> - http://www.zackgrossbart.com/hackito/gwt-rest/ >>>> - http://code.google.com/p/gwt-rest/ >>>> - http://restygwt.fusesource.org/ >>>> >>>> But, do you think it would be useful and what drawbacks can occur >>>> (authentication, authorization, response times, need to support >>>> larger set of services, painful >>>> refactoring, ...)? >>>> >>>> Regards, >>>> Libor >>>> >>>> _______________________________________________ >>>> Engine-devel mailing list >>>> Engine-devel@ovirt.org >>>> http://lists.ovirt.org/mailman/listinfo/engine-devel >>> >>> >>> -- >>> >>> Michael Pasternak >>> RedHat, ENG-Virtualization R&D >>> >> _______________________________________________ >> Engine-devel mailing list >> Engine-devel@ovirt.org >> http://lists.ovirt.org/mailman/listinfo/engine-devel >> > _______________________________________________ > Engine-devel mailing list > Engine-devel@ovirt.org > http://lists.ovirt.org/mailman/listinfo/engine-devel -- Michael Pasternak RedHat, ENG-Virtualization R&D _______________________________________________ Engine-devel mailing list Engine-devel@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-devel