Hello, all.

*rant alert*

I came over this discussion, and wanted to share my experiences with creating 
resources. I started playing around with restlet before it became 1.0, and am 
generally very, very pleased with it. One of the things I use it for is my own 
prototype environment, where I can throw together some quite impressive 
applications in a matter of hours..

After creating a whole host of different resource types, I started seeing some 
quite distinct patterns in my resources, at least the simplest ones.
This resulted in using Generics on my resources, where I created a class, 
ListResource<T extends Referrable> (where Referrable is an interface, with one 
method, getId() ). I already have a generic DAO implementation based on the 
Referrable interface. In addition, I created a ResourceConfig<T extends 
Referrable> that I could pull off all the things I need for the ListResource 
(including the DAO, that's why it's parametrized), as well as a FormBuilder<T 
extends BaseObject> interface for building my objects based on a Form. All this 
leads to ListResource being a concrete class that relies solely on one object, 
the config, and that works with any resource that represents a Referrable 
subtype and is a top-level "list resource".
 
This, however, is where my trouble starts. Because at run-time, the system 
cannot differentiate between a ListResource<Foo>.class and a 
ListResource<Bar>.class due to type erasure. At the moment I have to subclass 
ListResource for each type I am using it for, but hopefully making a 
parametrized Finder class that can then be attached to a Router, will solve my 
troubles. Has anyonw tried this?
 
I have, BTW, also a solution for SingleResource<T extends Referrable>, but this 
is not used as much as my ListResource, so I didn't describe this.

The big, unsolved task is to make the resources and interfaces available for 
more complex resource hierarchies where you have to check for the existence of 
a parent resource before you allow creation and modification of a child 
resource. Twenty or so more resource types under the belt, and I might get 
there ;-)

*end rant*

------------------------------------------------------------
Kyrre Kristiansen


--- On Thu, 26/3/09, Jerome Louvel <jerome.lou...@noelios.com> wrote:

> From: Jerome Louvel <jerome.lou...@noelios.com>
> Subject: RE: Resource factories
> To: discuss@restlet.tigris.org
> Date: Thursday, 26 March, 2009, 1:20 PM
> 
> 
>  
>  
>  
> Hi all,
>  
> I've just found time to read this thread and
> enjoyed it very much. It's 
> hard to find the best balance between so much points of
> views and ways to deal 
> with instantiations, wiring of objects, etc. so
> it's nice to hear that 
> the current 
> design has more advantages than
> drawbacks.
>  
> As Tal mentioned, we are redesigning the Resource
> API to support 
> client-side resources and focused use of annotations. I
> didn't intend to change 
> the way resources are instantiated though. But,
> if
> we can adjust the new design 
> to accommodate more use cases, I would be interested to
> explore. 
> 
>  
> Currently, we are working on Restlet 1.2 M2 which
> will give you a chance 
> to play with the new resource API and provide
> feed-back.
> 
> 
>  
> 
> Best 
> regards,
> Jerome 
> Louvel
> --
> Restlet ~ Founder and Lead developer ~ 
> http://www.restlet.org
> Noelios Technologies ~ Co-founder ~
> http://www.noelios.com
>  
> 
> 
> 
> De : Tal Liron 
> [mailto:tal.li...@threecrickets.com] 
> Envoyé : jeudi 26 mars 2009 
> 08:49
> À : discuss@restlet.tigris.org
> Objet : Re: 
> Resource factories
> 
> 
> 
> Thanks to all 
> who replied on this. After a discussion on the code list,
> it became clear that 
> the Restlety solution to configuring resources is to use
> the Context. The 
> Context has a ConcurrentMap of attributes, described as
> so:
> 
> "This 
> is a convenient mean[s] to provide common objects to all
> the Restlets and 
> Resources composing an Application."
> 
> 
> 
> So, that's it! 
> The nice thing about contexts, too, is that they pass
> through restlets along the 
> way. So, even if you configure your Application context in
> a certain way, you 
> can apply filters or whatnot along the way to adapt the
> configuration. For 
> example, a DebuggingFilter might enable all the
> configuration aspects that have 
> to do with debugging. It's then easy to add/remove such
> a filter, even 
> on-the-fly, without reconfiguring the whole
> application.
> 
> 
> 
> 
> -Tal
> 
> 
>  
>

------------------------------------------------------
http://restlet.tigris.org/ds/viewMessage.do?dsForumId=4447&dsMessageId=1577974

Reply via email to