From: Marcel O. <ma...@ov...> - 2012-04-03 19:55:33
|
Do you maybe have an example how to this? It's not clear for me... On Tue, Apr 3, 2012 at 8:02 PM, Bill Burke <bb...@re...> wrote: > 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 > > Res...@li... > > 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 > Res...@li... > https://lists.sourceforge.net/lists/listinfo/resteasy-users > |