Figured it out.  ResponseExceptionMapper does the trick nicely

On Fri, Jul 12, 2013 at 8:51 PM, JE <[email protected]> wrote:

> I am using the CXF Rest Client with Spring and need some help dealing with
> exceptions.  The problem is I have no ability to change the code calling
> the service, the idea is that I can swap out a SOAP implementation for a
> REST implementation via Spring config
>
> I have a service client created with spring and am calling it as follows.
>
> try{
>
>       this.myService.getCustomer(customerName);
>
> }catch(MyCustomNotFoundException e){
>
>
> }
>
> Everything works great on the positive case but my requirement is that
> "myService" may throw an exception.  I'd like to use an interceptor to grab
> the rest fault and convert it. Assuming an intercepter is the best place to
> do this.
>
> my spring.xml has
>
>   <jaxrs:client id="myService"
>
>        address="http://${test.remote.hostname}:8888/${
> test.remote.service.rs}"
>
>        serviceClass="com.Customer"
>
>        inheritHeaders="true">
>
>        <jaxrs:headers>
>
>            <entry key="Accept" value="application/json"/>
>
>            <entry key="Content-Type" value="application/json"/>
>
>         </jaxrs:headers>
>
>        <jaxrs:providers>
>
>            <ref bean="jsonProvider" />
>
>        </jaxrs:providers>
>
>             <jaxrs:inFaultInterceptors>
>
>                 <bean class="com.FaultHandler"/>
>
>             </jaxrs:inFaultInterceptors>
>
> </jaxrs:client>
>
>
> I am stuck as to what to do inside the faulthandler.
>
>
> When I get a 404 from the server the body contains some details in JSON
> that i need to marshall to an object.
>
>
> public void handleMessage(Message message) throws Fault {
>
>         //psuedo code
>
>         if (response.getStatus() == 404){
>
>         ServiceError error = response.readEntity(ServiceError.class);
>
>         throw new MyCustomNotFoundException(error);
>
>        }
>
>     }
>
>
> Anyone ever try and do anything like this?
>

Reply via email to