From: Michael M. <mic...@ga...> - 2013-03-26 08:21:44
|
Hi all, I'm using the new JAX-RS 2 client API to communicate with a system that has an interesting take on response codes, which basically means it will return 200 for everything and the body will include a fault element to indicate something has gone wrong. As an example, given an XML response from a POST to create a pet I might get: <pet><name>Fido</name></pet> Or I might get <fault><error-code>3423423</error-code></fault> My take on this is that I should provide an interceptor/filter to look at the message body response, determine if there is a fault in there, and throw a WebApplicationException, or at the very least change the status code so that a WebApplicationException is thrown further down the line.. My questions are, which filter or interceptor is correct in this use case? I would imagine where I want it to kick in is at the point where it has the response body but hasn't tried to marshall it. The second question was, am I right to register it at the point I build my client, e.g. ClientBuilder.newBuilder().register(new MyCustomInterceptor()).build() The intention is that this would be a client specifically for dealing with the quirks of those endpoints, other clients would not have those filters applied. I'm leaving off the Provider annotation purposely so it doesn't get picked up automagically anywhere else. Appreciate any advice as ever. |