BTW if using the latest build you no longer need to use
META-INF/services to register your dispatcher, just annotate your
implementation with @Provider.
Paul.
Paul Sandoz wrote:
> Hi Thierry,
>
> Well found!
>
> The order of checking dispatch providers was changed after 0.7, so you
> should be able to override that of EntityParamDispatchProvider, if you
> get the latest 0.8 build (note that the package name space
> "com.sun.ws.rest" has been renamed to "com.sun.jersey").
>
> We have used this trick for experimenting with precondition support
> using Scala partial functions [1] (or closures). And for experimenting
> with Comet support.
>
> The reason why it is not exposed out as an SPI yet is i think it needs
> some more design work to make it easier to use. Any feedback on this
> would be much appreciated.
>
> Paul.
>
> [1] http://blogs.sun.com/sandoz/entry/using_scala_s_closures_with
>
> Thierry Granger wrote:
>> Hi all,
>>
>> I'm using the jersey 0.7-ea, and I would like to perform some specific
>> tasks using the computed parameters (ie: Object unmarshalled by JAXB,
>> or query string parameters) before calling the resource method.
>> For example,
>> * I would like to check some credentials depending on the URI (for
>> HTTP GET method) or depending on the XML content (for HTTP PUT/POST
>> method).
>> * I would like to dynamically modify some query string parameter, or
>> xml content.
>> * ...
>>
>> I was first thinking to use some ServletFilter, but in some case, that
>> would mean we would perform twice the JAXB unmarshalling ... So, I
>> investigate deeply into the jersey code, and I found the
>> EntityParamDispatchProvider.java
>> (https://jersey.dev.java.net/source/browse/jersey/tags/jersey-0.7/jersey/src/impl/com/sun/ws/rest/impl/model/method/dispatch/EntityParamDispatchProvider.java?rev=954&view=markup),
>> and I saw that there is some "_dispatch()" method that deals with the
>> parameters, the context, and the resource (in fact everything I need
>> to perform my specific task :) ).
>>
>> So, here are my questions :
>> * Am I looking to the good solution ? I mean, is there an easier
>> way to deal with the parameters, the context, and the resource before
>> the resource method call ?
>> * Is there any way to inject a custom
>> ResourceMethodDispatchProvider in replacement of the
>> EntityParamDispatchProvider, or add a custom
>> ResourceMethodDispatchProvider and manage the order of the lookup into
>> the ResourceMethodDispatcherFactory.create method ?
>>
>> I added my class name into my own
>> META-INF/services/com.sun.ws.rest.impl.model.method.dispatch.ResourceMethodDispatchProvider
>> file, but my class is never use because the
>> EntityParamDispatchProvider instance is always returned by the
>> ResourceMethodDispatcherFactory before my custom
>> ResourceMethodDispatchProvider. (I think that's because of the
>> "rmdps.addFirst(rmdp);' line.
>>
>> I guess my questions are clear :) (it's not very easy to express my
>> needs in English)
>>
>> Regards,
>>
>> Thierry
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscribe_at_jersey.dev.java.net
>> For additional commands, e-mail: users-help_at_jersey.dev.java.net
>>
>
--
| ? + ? = To question
----------------\
Paul Sandoz
x38109
+33-4-76188109