Inject a Providers into your preprocessor, manually do the unmarshal, 
but remember to buffer the body so that the parameter reader can 
unmarshal it too.

On 4/3/12 10:23 AM, Marcel Overdijk wrote:
> I'm currently using below interceptor (implementing both
> MessageBodyReaderInterceptor and PreProcessInterceptor) to dump incoming
> requests to a log file.
>
> I'm implementing them both because:
> a) MessageBodyReaderInterceptor is not intercepting requests without
> body (like a GET or OPTIONS request)
> b) PreProcessInterceptor has no option to retrieve the request body.
>
> Would there be a way to more or less 'combine' the 2 and only once call
> the LOG.debug statement like
> LOG.debug("Request:" + NEW_LINE + httpServletRequest + NEW_LINE + new
> String(body));
>
>
> @Provider
> @ServerInterceptor
> @Precedence("REQUEST_DUMPER")
> public class RequestDumperInterceptor implements
> MessageBodyReaderInterceptor, PreProcessInterceptor {
>
> private static final Log LOG =
> LogFactory.getLog(RequestDumperInterceptor.class);
>
> private static final String NEW_LINE = System.getProperty("line.separator");
>
> @Context
> private HttpServletRequest httpServletRequest;
>
> @Override
> public Object read(MessageBodyReaderContext context) throws IOException,
> WebApplicationException {
> if (LOG.isDebugEnabled()) {
> InputStream old = context.getInputStream();
> try {
> InputStreamToByteArray stream = new InputStreamToByteArray(old);
> context.setInputStream(stream);
> Object proceed = context.proceed();
> byte[] body = stream.toByteArray();
> LOG.debug("Body:" + NEW_LINE + new String(body));
> return proceed;
> } finally {
> context.setInputStream(old);
> }
> }
> return context.proceed();
> }
>
> @Override
> public ServerResponse preProcess(HttpRequest request, ResourceMethod
> method) throws Failure, WebApplicationException {
> if (LOG.isDebugEnabled()) {
> LOG.debug("Request:" + NEW_LINE + httpServletRequest);
> }
> return null;
> }
> }
>
>
> ------------------------------------------------------------------------------
> Better than sec? Nothing is better than sec when it comes to
> monitoring Big Data applications. Try Boundary one-second
> resolution app monitoring today. Free.
> http://p.sf.net/sfu/Boundary-dev2dev
>
>
>
> _______________________________________________
> Resteasy-users mailing list
> Resteasy-users@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/resteasy-users

-- 
Bill Burke
JBoss, a division of Red Hat
http://bill.burkecentral.com

------------------------------------------------------------------------------
Better than sec? Nothing is better than sec when it comes to
monitoring Big Data applications. Try Boundary one-second 
resolution app monitoring today. Free.
http://p.sf.net/sfu/Boundary-dev2dev
_______________________________________________
Resteasy-users mailing list
Resteasy-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/resteasy-users

Reply via email to