[aerogear-dev] Nested endpoints (cont.)

Matthias Wessendorf matzew at apache.org
Wed May 1 15:40:14 EDT 2013


On Wed, May 1, 2013 at 8:39 PM, Summers Pittman <supittma at redhat.com> wrote:

> So the old thread was getting a bit long windy.
>
> Here are the current issues that are being discussed on nested endpoints
> (and things which we need to discuss before we move ahead on putting
> them in the Pipe spec)
>
> 1.  Saving and removing look really weird.
>      pipe.remove(2,'/child/3', callback)
>          vs
>      pipe.remove(2, callback)
>
>     The first removes an element in the child collection with an id 3 of
> parent with id 2.  The second removes the parent with id 2.  This really
> isn't THAT weird but it is a bit ugly.
>


Yeah, ugly and (a bit) weird (perhaps because it's ugly I think it's weird
:))




>
>     pipe.save(new Parent(), callback)
>      vs
>     pipe.save(new Child(), '2/child', callback)
>
>     The first saves a new parent object but the second saves a new child
> under the parent with an id of 2.
>
> 2. The type of Pipe breaks with nested resources as they are.
>
>    In Android Pipe is parameterized with a type which correlates to the
> resource it represents.  This type is serialized into an instance of the
> resource and the serialization mechanism does not change.  For example
>
>     Pipe<Parent> pipe = new RestAdapter<Parent>(URL, Parent.class);
>     pipe.read(callback);
>
>     Passes a instance of List<Parent> to the callback.  With nested
> resources
>
>     pipe.read('/child/2', callback);
>
>     SHOULD pass a List<Child> to the callback.  There are two ways to do
> this and both feel quite hackey.
>
>     1) Use reflection to find the type of child and then use that class.
>         The obvious problem with this is that a service may not return
> all of the children attached to a Parent if you ask for just the Parent
> (or all of the Parents) but the Parent class on Android would have to
> include it.
>     2) Pass a type to the read operation.
>          This is LESS hackey and possibly OK, except that we will have
> to add more configuration to the GSONdeserialization.  The side effect
> of this means now we have to include serialization information about
> child types in the configuration of the Parent Pipe.  At this point the
> user might as well just make a Child Pipe.
>


Ha!
Good point!


>
>    The same comments apply for save.
>
> Thoughts?
>


Not sure, but ... do we really need "nested endpoint" support on a pipe?
What do we gain, if it works? Is it worth it (already talking about this,
since quite a while  :-) )?

"Nested Resources" work already today, but it's perhaps (I am not really
sure) a bit ugly (odd):

https://gist.github.com/matzew/6ab432e437b9a017a21d

-Matthias



>
> Summers
>
> _______________________________________________
> aerogear-dev mailing list
> aerogear-dev at lists.jboss.org
> https://lists.jboss.org/mailman/listinfo/aerogear-dev
>



-- 
Matthias Wessendorf

blog: http://matthiaswessendorf.wordpress.com/
sessions: http://www.slideshare.net/mwessendorf
twitter: http://twitter.com/mwessendorf
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/aerogear-dev/attachments/20130501/75308752/attachment.html 


More information about the aerogear-dev mailing list