[ 
https://issues.apache.org/jira/browse/CAMEL-7476?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Gareth Bird reopened CAMEL-7476:
--------------------------------


Thank you for taking the time Willem for writing the test case to prove that 
throwExceptionOnFailure=false suppresses exceptions.

I still do have exceptions being raised in the route. 

I've been looking at my code, your code, and the cxfrs source - what I am now 
thinking is that the exception may be being raised on this line in 
(CxfRsProducer.java):

       // invoke the client
        Object response = null;
        if (responseClass == null || Response.class.equals(responseClass)) {
            response = client.invoke(httpMethod, body);
        } else { ...

The exception type is javax.ws.rs.ClientErrorException, so it may be being 
raised by CXF during invoke.  The REST service being called is returning a 
status of 412 (already exists).  

For reference - this is how I am calling the service in the route:

  
.to("cxfrs://http://www.example.com:8080/opendj-rest2ldap-servlet-2.6.0-servlet/?httpClientAPI=true&throwExceptionOnFailure=false&providers=#jaxproviders";)
 
[ As an aside I am invoking OpenDJ - LDAP REST service - to create a user ]

If response status 4xx, CXF will wrap response in 
javax.ws.rs.ClientErrorException and throws out;

So to re-cap I think that CXF is raising the exception - should these type of 
exception  be caught by and suppressed in the method invokeHttpClient?





 

> cxfrs throwExceptionOnFailure option not working
> ------------------------------------------------
>
>                 Key: CAMEL-7476
>                 URL: https://issues.apache.org/jira/browse/CAMEL-7476
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-cxf
>    Affects Versions: 2.13.0, 2.13.1
>            Reporter: Gareth Bird
>            Assignee: Willem Jiang
>            Priority: Minor
>
> (1) The cxfrs option throwExceptionOnFailure=true does not suppress 
> exceptions from being thrown when an invoked REST service returns a http 
> status > 207.  i.e. the following does not work:
> ...
> .to("cxfrs:bean:rsClient?throwExceptionOnFailure=false")
> ....
> (2) The cxfrs throwExceptionOnFailure option should default to false; to make 
> it easier to process status codes in the route.
> When invoking REST services, the logic is currently complicated by the fact 
> that common status' need to be processed in exception handlers. i,e (404 not 
> found, 412 precondition failed).  It would be more useful to filter on 
> statuses with a main route.



--
This message was sent by Atlassian JIRA
(v6.2#6252)

Reply via email to