Hi Jerome,

> Hi Jerome,
> 
> Jerome Louvel <contact <at> noelios.com> writes:
> > Hi again,
> > To facilitate the creation of Finder subclasses, I've exposed the
> > "resourceClass" property with a getter. I've also extracted the Resource
> > creation logic from Finder.findTarget() into a Finder.createResource()
> > method. By default, findTarget() invokes createResource(), but this should
> > facilitate the implementation of pooling mechanisms if required. Finally,
> > I've added a "finderClass" property on Router that will automatically create
> > the right Finder instance for you when calling attach("/uri/...",
> > myResource.class). Changes are already in SVN. 

I had a chance to look at the new code and I'm afraid these changes are not
as helpful as I'd hoped. 

The original problem was that I couldn't
parameterize Resources with my state because construction of resources
was controlled by the Finder which only understood two constructor
signatures.

With the above changes, I now have control over construction of resources
by extending Finder and overriding createResource(). The problem is that
I can't parameterize the Finder because, just like with Resource
before, Finder construction is not under my control. I cannot say:

new Finder(context, myState);

The Router insists on it's known constructor forms so I can't set state.

I still think the right answer is to allow use of a resource factory.

So a way to do this is to add a constructor, 
Finder(Context context, ResourceFactory factory)

The code in createResource checks for and uses the factory, else it does
what it does now. 

In Router, add:
 attach(String uriPattern, ResourceFactory factory)
 attachDefault(ResourceFactory factory);

I think that does it.

Sean

Reply via email to