One possible approach is to use ClientRequestFilter with both ResourceInfo & UriInfo,

The former will give you a target method and its parameters, which in turn can give you the names of Path/Query/Matrix parameters from the param annotations, UriInfo can then be used to extract individual values.

This won't give you an access to the parameter representing the deserialized InputStream (the request body), if any - but you can access InputStream and replace it with a buffered stream if needed from ContanerRequestFilter

Cheers, Sergey

On 08/10/13 12:26, Sergey Beryozkin wrote:
Actually, that probably won;t help enough on the in side, as you need an
access to the actual parameter instances.

I guess a custom CXF Invoker is where you can get the most info:

http://cxf.apache.org/docs/jax-rs-filters.html#JAX-RSFilters-Custominvokers,


or you may still work with ContainerRequestFilter, but add some
CXF-specific code into it (may in its extension),

Message m = PhaseInterceptorChain.getCurrentMessage();
List<Object> methodParams = MessageContentsList getContentsList(m);

I wonder if JAX-RS should get ResourceInfo interface extended a bit

Thanks, Sergey



On 08/10/13 12:14, Sergey Beryozkin wrote:
Hi
On 08/10/13 10:36, Fabio Martelli wrote:
Hi, I'm working on Apache Syncope in order to provide centralized
notification and audit mechanisms.
I was thinking to inercept each rest service call in order to be able to
provide this feature.

As you can imagine, a lot of info are required to discriminate request
and response.
In particular I need to know:
1. the called service method (handled java method);
2. the provided parameters (maybe castable to the corresponding java
objects);
3. the result (returned object or exception).

Is there someone that can point me in the right direction.

Can you try JAX-RS 2.0 ContainerRequestFilter with the injected

RequestInfo:

https://jax-rs-spec.java.net/nonav/2.0/apidocs/javax/ws/rs/container/ResourceInfo.html



(add it as as a @Context-annotated field to your filter implementation).

On the outbound side, ContainerResponseFilter (and its context) will
give you an access to the response object

HTH, Sergey

Thank you in advance.

Best reagrds,
F.



Reply via email to