Hi Jason I just did a quick fix for your case[1]. Now you can set the repose code from the message's header.
out.setHeader(org.apache.cxf.message.Message.RESPONSE_CODE, new Integer(500)); <setOutHeader headerName="org.apache.cxf.message.Message.RESPONSE_CODE"> <simple>500</simple> </setOutHeader> Please check out the latest Camel 1.5.1-snapshot for verification. [1]http://issues.apache.org/activemq/browse/CAMEL-1124 Willem Jason Royals wrote: > Hi all, > > Were using a CXF endpoint with Camel to expose SOAP proxies over some legacy > services. One of our recent requirements is to analyse the response coming > back and if it matches some condition, we need to reply back with a SOAP > fault. > > We're using the Spring DSL and I currently have something like this... > > <route> > <from uri="cxf:bean:someCxfEndpoint"/> > ... transform to some legacy XML... > <to uri="http://pox.endpoint/"> > <choice> > <when> > <xpath>//XYZ = 'some error condition'</xpath> > <transform> > <groovy><![CDATA[ > return > getClass().getResourceAsStream("META-INF/xml/canned-soap-fault.xml").text > ]]> > </groovy> > </transform> > </when> > <otherwise> > ... transform the valid response ... > </otherwise> > </choice> > </route> > > This actually works nicely, but the HTTP response sent back from CXF is a > 200, when SOAPFault needs to be 500. > > I had a look at throwFault but it doesn't do what I need, because I don't > have an exception. I guess all I need to do is somehow make CXF reply with > a HTTP status code of my choosing along with my canned soap fault, but it's > not obvious on how that's done with Camel. Manually overriding the > http.responseCode header didn't work either. > > Any ideas? > > Thanks, > Jason