camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Gisbert Amm <gisbert....@1und1.de>
Subject Re: Cannot retrieve header anymore after upgrading from 1.4.0 to 1.5-SNAPSHOT
Date Thu, 11 Sep 2008 14:29:54 GMT
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Ah, now I understand why I get a ClassCastException :) Not very user
friendly, though. I got my routing to work using
<jxpath>in/headers/@operationName = 'opCreate'</jxpath> in the meantime
(mind that the header is "operationName" instead of "SOAPAction", for
what reason ever).

I've also tried to set <from uri="cxf:bean:MyBean?dataFormat=MESSAGE"/>
following your hint, but this still leads to a ClassCastException when I
use xpath later on. However, I'll also give the Groovy example a go, for
this looks rather smart :)

Thank you very very much for your help.

- -Gisbert

Willem Jiang schrieb:
> Oh, xpath only works for the XML or which can be converted into the dom
> object :)
> 
> <xpath>$SOAPAction = 'create'</xpath>.
> 
> If you don't specify the dataFormat for your CXF endpoint, the message
> body is a list which holds the invocation's parameters. So camel xpath
> expression can't convert the list into a dom object for xpath query.
> 
> You can use the camel-script[1] to test the header value, here is an
> example of spring configuration
> 
> <camelContext id="camel"
> xmlns="http://activemq.apache.org/camel/schema/spring">
>    <route>
>      <from uri="direct:start"/>
>      <filter>
>        <groovy>exchange.in.headers.SOAPAction == 'create'</groovy>
>        <to uri="mock:result"/>
>      </filter>
>    </route>
>  </camelContext>
> 
> [1] http://activemq.apache.org/camel/scripting-languages.html
> 
> Hope these information can help you :)
> 
> Willem
> 
> Gisbert Amm wrote:
> Hi Willem,
> 
> thank you again. I had seen this $someHeader stuff in the docs and had
> tried it out but with 1.4.0 it didn't work. The docs are obviously a bit
> ahead of 1.4.0 :)
> 
> However, I've tried this now:
> 
> <xpath>$SOAPAction = 'create'</xpath>
> 
> and get a ClassCastException:
> 
> java.lang.ClassCastException: org.apache.cxf.message.MessageContentsList
>     at
> com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:115)
> 
>     at
> com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.eval(XPathExpressionImpl.java:97)
> 
>     at
> com.sun.org.apache.xpath.internal.jaxp.XPathExpressionImpl.evaluate(XPathExpressionImpl.java:178)
> 
>     at
> org.apache.camel.builder.xml.XPathBuilder.evaluateAs(XPathBuilder.java:429)
> 
> 
> ...
> 
> Is there anything I need to configure in addidtion to make it work?
> 
> In
> https://svn.apache.org/repos/asf/activemq/camel/trunk/components/camel-cxf/src/test/java/org/apache/camel/component/cxf/util/
> 
> there isn't a test for CxfHeaderHelper, so I'm stuck ... In the JIRA
> report I find "let people configure what should be copied to/form native
> message", but not how to do it. Have I overseen something?
> 
> Regards,
> Gisbert
> 
> Willem Jiang schrieb:
>  
>>>> Hi Gisbert
>>>>
>>>> It's my fault that I didn't check the camel-cxf component's change log.
>>>> You can't use Message.PROTOCOL_HEADERS to get the SOAPAction any more ,
>>>> since William Tam contributed a header filter strategy[1] to encapsulate
>>>> the context of PROTOCOL_HEADERS in Camel 1.5.
>>>> You can find the code of CXF header handling in the method
>>>> propagateCxfToCamel() of CxfHeaderHelper[2]
>>>> You should get the SOAPAction just by using the "SOAPAction" as the Key.
>>>>
>>>> [1] https://issues.apache.org/activemq/browse/CAMEL-766
>>>> [2]
>>>> https://svn.apache.org/repos/asf/activemq/camel/trunk/components/camel-cxf/src/main/java/org/apache/camel/component/cxf/util/CxfHeaderHelper.java
>>>>
>>>>
>>>>
>>>> Regards,
>>>>
>>>> Willem
>>>> Gisbert Amm wrote:
>>>> Hi Willem,
>>>>
>>>> thank you for the quick reply. I'm afraid I don't really understand what
>>>> you want to tell me. I can see that you've commented the code in the
>>>> test that did more or less the same I did because this information is
>>>> obviously no longer provided in CXF 2.1.2.
>>>>
>>>> However, what do you mean when you say I should use SOAPActionExtractor
>>>> only for handling the request message? I thought that I already did so:
>>>>
>>>> <route>
>>>> <from uri="cxf:bean:MyEndpoint"/>
>>>> <process ref="sOAPActionExtractor"/>
>>>> ...
>>>>
>>>> And how can I retrieve the SOAP action from the message now? My routing
>>>> relies on it ...
>>>>
>>>> Regards,
>>>> Gisbert Amm
>>>>
>>>> Willem Jiang wrote:
>>>>  
>>>>    
>>>>>>> Hi,
>>>>>>>
>>>>>>> Camel-1.5 snapshot is using CXF 2.1.2  and CXF 2.1.2 only apply
the
>>>>>>> SOAPAction for the request message (in
>>>>>>> SoapPreProtocolOutInterceptor).
>>>>>>> Please make sure the SOAPActionExtractor only be used for handling
>>>>>>> the
>>>>>>> request message :)
>>>>>>>
>>>>>>> You can find more information in the CustomerServicesTest[1]
>>>>>>>
>>>>>>> [1]https://svn.apache.org/repos/asf/activemq/camel/trunk/tests/camel-itest/src/test/java/org/apache/camel/itest/customerrelations/CustomerServicesTest.java
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> Willem
>>>>>>>
>>>>>>> Gisbert Amm wrote:
>>>>>>> I've upgraded Camel to the current HEAD from SVN.
>>>>>>>
>>>>>>> Consider this code, which worked fine with version 1.4.0:
>>>>>>>
>>>>>>> public class SOAPActionExtractor implements Processor {
>>>>>>>
>>>>>>> public void process(Exchange exchange) throws Exception {
>>>>>>>         Map header = (Map)
>>>>>>> exchange.getIn().getHeader(Message.PROTOCOL_HEADERS);
>>>>>>> ...
>>>>>>>
>>>>>>> (Message is of type org.apache.cxf.message.Message)
>>>>>>>
>>>>>>> After upgrading to 1.5-SNAPSHOT, the header is null and I
>>>>>>> therefore get
>>>>>>> a NPE later on. Can somebody explain why this happens and what
has
>>>>>>> changed here? That would be very helpful.
>>>>>>>
>>>>>>> Regards,
>>>>>>> Gisbert Amm
>>>>>>>               
> 
>>

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org

iD8DBQFIyStiwM6uO7ce7NoRAnYmAJ0SjnSCEG6STfTFkCQaLwFRkzbwUQCfdsxY
2bJrGmGQzpH566/m5TXwS0I=
=eRcL
-----END PGP SIGNATURE-----

Mime
View raw message