On May 18, 2009, at 2:32 PM, Fabio Mancinelli wrote:
>
> I am spending some time on it and currently I am exploring the
> following solution: declare every resource as a @Component and use
> the component manager for discovering resources (via the lookupList
> method). This will solve the problem of modifying the web.xml and
> adding a set of resources will be just a matter of dropping a jar in
> WEB-INF/lib.
>
> ...

> I hope to have a working thing by the end of the day

Hi everybody.

I managed to implement what I was proposing.

* Now every JAXRS entity (i.e., resource, provider or exception  
mapper) is declared as a component having the role defined by the  
XWikiRestComponent interface.

* The component manager is used to lookup all the components  
implementing that role for registering them.

* A custom factory is used for instantiating components when JAXRS  
requests them. Instantiation, of course, is a lookup using the  
component manager.

* Component deallocation is done seamlessly.

Now, in order to extend the REST Api you just need to write a  
@Component annotated class that Implements XWikiRestComponent (or  
extends XWikiResource in order to have for free all the relevant  
variables for interacting with the wiki). The only constraint is that  
the hint of the @Component must be the fully qualified name of the  
annotated class (this is needed because of the lookup logic).

Of course a META-INF/components.txt listing all the @Component classes  
should also be packaged in the jar.

Once you have such a jar, you just throw it in WEB-INF/lib and you  
have your resources published (no need to edit web.xml anymore)

Cheers,
Fabio

P.S. : You can see the example here : http://pastebin.com/m2187c62a
_______________________________________________
devs mailing list
[email protected]
http://lists.xwiki.org/mailman/listinfo/devs

Reply via email to