camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Routing based on exchange header content-type
Date Sat, 23 Aug 2014 05:19:37 GMT
Hi

Ah that means the single quote around the header name is something we
have improved/fixed in a newer Camel release, since the old one you
use.

On Sat, Aug 23, 2014 at 1:38 AM, harald <sunnyday@rainyday.de> wrote:
> Hi
>
> instead of
>
>         <simple>${in.headers['Content-Type']} == 'application/json'</simple>
>
> just write
>
>         <simple>${in.headers[Content-Type]} == 'application/json'</simple>
>
> For whatever reason I added the single quotes around the name of the header attribute,
remove them and everything works as expected. I knew this and did it on another project just
a few minutes ago without thinking about it. While testing it I realised my mistake on this
one. So shame on me :)
>
> Thanks for helping!
>
> harald
>
>
>
> On 22 Aug 2014, at 17:02, Claus Ibsen <claus.ibsen@gmail.com> wrote:
>
>> Hi
>>
>> I just tried with 2.14-snapshot on karaf 2.3.6 and it worked fine
>>
>> davsclaus:~/$ curl -X POST -H "Content-Type:application/json" --data
>> "{"Hello":"World"}" http://localhost:4000/harald/call
>> {Hello:World}davsclaus:~/$
>> davsclaus:~/$ curl -X POST -H "Content-Type:application/xml" --data
>> "<Hello>World</Hello>" http://localhost:4000/harald/call
>> <Hello>World</Hello>davsclaus:~/$
>>
>>
>>
>> On Thu, Aug 21, 2014 at 11:10 AM, Harald Neiss <neissh@neissware.de> wrote:
>>> Hi
>>>
>>> On 21 Aug 2014, at 08:18, Claus Ibsen <claus.ibsen@gmail.com> wrote:
>>>
>>>> Hi
>>>>
>>>> You can use tracer to see the messages details during routing and see
>>>> what headers you have
>>>> http://camel.apache.org/tracer
>>>
>>> Thanks for the reference! I added the trace attribute to the route (see below).
>>>
>>>> Also mind that maybe the content type header is not 100% matching
>>>> 'application/xml' etc. As sometimes they may have charset or other
>>>> values included.
>>>
>>> Yes, but since I’m currently using curl I am sure (and see the trace below)
that it is send without encoding information.
>>>
>>>>
>>>> The simple language has a contains function you can use
>>>> http://camel.apache.org/simple
>>>>
>>>
>>> Tanks for referencing.
>>>
>>>
>>> I just realised that I did not include the version I use and the environment.
Sorry for that. It’s Camel 2.10.7 which is embedded in ServiceMix 4.5.3.
>>>
>>> The file I copy into the deploy folder of SMX looks like this (it’s the simplified
version)
>>>
>>> <blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
>>>           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
>>>           xsi:schemaLocation="
>>>           http://www.osgi.org/xmlns/blueprint/v1.0.0 http://www.osgi.org/xmlns/blueprint/v1.0.0/blueprint.xsd
>>>           ">
>>>  <camelContext xmlns="http://camel.apache.org/schema/blueprint">
>>>    <route trace="true">
>>>      <from uri="jetty:http://localhost:4000/harald/call"/>
>>>       <choice>
>>>         <when>
>>>           <simple>${in.headers['Content-Type']} == 'application/json'</simple>
>>>           <to uri="log:JSON?level=INFO"/>
>>>         </when>
>>>         <when>
>>>           <simple>${in.headers['Content-Type']} == 'application/xml'</simple>
>>>           <to uri="log:XML?level=INFO"/>
>>>         </when>
>>>         <otherwise>
>>>           <to uri="log:RAW?level=INFO"/>
>>>         </otherwise>
>>>       </choice>
>>>    </route>
>>>  </camelContext>
>>> </blueprint>
>>>
>>> Then I used curl to send requests. The following shows three calls and the output
of them, hard to read but complete.
>>>
>>> Thanks for helping!
>>>
>>> Best regards,
>>> harald
>>>
>>>
>>>
>>> curl -X POST -H "Content-Type:application/json" --data "{"Hello":"World"}" http://localhost:4000/harald/call
>>>
>>>
>>> 10:39:19,421 | INFO  | qtp795636687-809 | Tracer                           |
100 - org.apache.camel.camel-core - 2.10.7 | ID-beauty-49610-1408606366390-10-10 >>>
(route24) from(http://localhost:4000/harald/call) --> choice <<< Pattern:InOut,
Headers:{CamelHttpMethod=POST, Host=localhost:4000, CamelHttpPath=/harald/call, CamelHttpUri=/harald/call,
CamelHttpQuery=null, Content-Length=13, CamelHttpServletResponse=HTTP/1.1 200
>>>
>>> , User-Agent=curl/7.30.0, breadcrumbId=ID-beauty-49610-1408606366390-10-11, Content-Type=application/json,
Accept=*/*, CamelHttpUrl=http://localhost:4000/harald/call, CamelHttpServletRequest=(POST
/harald/call)@504434790 org.eclipse.jetty.server.Request@1e111066}, BodyType:org.apache.camel.converter.stream.InputStreamCache,
Body:[Body is instance of org.apache.camel.StreamCache]
>>> 10:39:19,422 | INFO  | qtp795636687-809 | Tracer                           |
100 - org.apache.camel.camel-core - 2.10.7 | ID-beauty-49610-1408606366390-10-10 >>>
(route24) choice --> log://RAW?level=INFO <<< Pattern:InOut, Headers:{CamelHttpMethod=POST,
Host=localhost:4000, CamelHttpPath=/harald/call, CamelHttpUri=/harald/call, CamelHttpQuery=null,
Content-Length=13, CamelHttpServletResponse=HTTP/1.1 200
>>>
>>> , User-Agent=curl/7.30.0, breadcrumbId=ID-beauty-49610-1408606366390-10-11, Content-Type=application/json,
Accept=*/*, CamelHttpUrl=http://localhost:4000/harald/call, CamelHttpServletRequest=(POST
/harald/call)@504434790 org.eclipse.jetty.server.Request@1e111066}, BodyType:org.apache.camel.converter.stream.InputStreamCache,
Body:[Body is instance of org.apache.camel.StreamCache]
>>> 10:39:19,422 | INFO  | qtp795636687-809 | RAW                              |
100 - org.apache.camel.camel-core - 2.10.7 | Exchange[ExchangePattern:InOut, BodyType:org.apache.camel.converter.stream.InputStreamCache,
Body:[Body is instance of org.apache.camel.StreamCache]]
>>>
>>>
>>> curl -X POST -H "Content-Type:application/xml" --data "<Hello>World</Hello>"
http://localhost:4000/harald/call
>>>
>>>
>>> 10:39:58,098 | INFO  | qtp795636687-809 | Tracer                           |
100 - org.apache.camel.camel-core - 2.10.7 | ID-beauty-49610-1408606366390-10-12 >>>
(route24) from(http://localhost:4000/harald/call) --> choice <<< Pattern:InOut,
Headers:{CamelHttpUrl=http://localhost:4000/harald/call, CamelHttpQuery=null, breadcrumbId=ID-beauty-49610-1408606366390-10-13,
CamelHttpServletResponse=HTTP/1.1 200
>>>
>>> , CamelHttpMethod=POST, Content-Type=application/xml, CamelHttpServletRequest=(POST
/harald/call)@954758347 org.eclipse.jetty.server.Request@38e874cb, Host=localhost:4000, CamelHttpPath=/harald/call,
User-Agent=curl/7.30.0, Content-Length=20, Accept=*/*, CamelHttpUri=/harald/call}, BodyType:org.apache.camel.converter.stream.InputStreamCache,
Body:[Body is instance of org.apache.camel.StreamCache]
>>> 10:39:58,098 | INFO  | qtp795636687-809 | Tracer                           |
100 - org.apache.camel.camel-core - 2.10.7 | ID-beauty-49610-1408606366390-10-12 >>>
(route24) choice --> log://RAW?level=INFO <<< Pattern:InOut, Headers:{CamelHttpUrl=http://localhost:4000/harald/call,
CamelHttpQuery=null, breadcrumbId=ID-beauty-49610-1408606366390-10-13, CamelHttpServletResponse=HTTP/1.1
200
>>>
>>> , CamelHttpMethod=POST, Content-Type=application/xml, CamelHttpServletRequest=(POST
/harald/call)@954758347 org.eclipse.jetty.server.Request@38e874cb, Host=localhost:4000, CamelHttpPath=/harald/call,
User-Agent=curl/7.30.0, Content-Length=20, Accept=*/*, CamelHttpUri=/harald/call}, BodyType:org.apache.camel.converter.stream.InputStreamCache,
Body:[Body is instance of org.apache.camel.StreamCache]
>>> 10:39:58,098 | INFO  | qtp795636687-809 | RAW                              |
100 - org.apache.camel.camel-core - 2.10.7 | Exchange[ExchangePattern:InOut, BodyType:org.apache.camel.converter.stream.InputStreamCache,
Body:[Body is instance of org.apache.camel.StreamCache]]
>>>
>>>
>>> curl -X POST -H "Content-Type:text/text" --data "Hello World" http://localhost:4000/harald/call
>>>
>>>
>>> 10:41:32,288 | INFO  | qtp795636687-810 | Tracer                           |
100 - org.apache.camel.camel-core - 2.10.7 | ID-beauty-49610-1408606366390-10-14 >>>
(route24) from(http://localhost:4000/harald/call) --> choice <<< Pattern:InOut,
Headers:{CamelHttpQuery=null, CamelHttpUrl=http://localhost:4000/harald/call, CamelHttpMethod=POST,
Accept=*/*, Content-Type=text/text, CamelHttpServletRequest=(POST /harald/call)@789730262
org.eclipse.jetty.server.Request@2f1253d6, CamelHttpUri=/harald/call, breadcrumbId=ID-beauty-49610-1408606366390-10-15,
CamelHttpPath=/harald/call, CamelHttpServletResponse=HTTP/1.1 200
>>>
>>> , Content-Length=11, Host=localhost:4000, User-Agent=curl/7.30.0}, BodyType:org.apache.camel.converter.stream.InputStreamCache,
Body:[Body is instance of org.apache.camel.StreamCache]
>>> 10:41:32,289 | INFO  | qtp795636687-810 | Tracer                           |
100 - org.apache.camel.camel-core - 2.10.7 | ID-beauty-49610-1408606366390-10-14 >>>
(route24) choice --> log://RAW?level=INFO <<< Pattern:InOut, Headers:{CamelHttpQuery=null,
CamelHttpUrl=http://localhost:4000/harald/call, CamelHttpMethod=POST, Accept=*/*, Content-Type=text/text,
CamelHttpServletRequest=(POST /harald/call)@789730262 org.eclipse.jetty.server.Request@2f1253d6,
CamelHttpUri=/harald/call, breadcrumbId=ID-beauty-49610-1408606366390-10-15, CamelHttpPath=/harald/call,
CamelHttpServletResponse=HTTP/1.1 200
>>>
>>> , Content-Length=11, Host=localhost:4000, User-Agent=curl/7.30.0}, BodyType:org.apache.camel.converter.stream.InputStreamCache,
Body:[Body is instance of org.apache.camel.StreamCache]
>>> 10:41:32,289 | INFO  | qtp795636687-810 | RAW                              |
100 - org.apache.camel.camel-core - 2.10.7 | Exchange[ExchangePattern:InOut, BodyType:org.apache.camel.converter.stream.InputStreamCache,
Body:[Body is instance of org.apache.camel.StreamCache]]
>>>
>>
>>
>>
>> --
>> Claus Ibsen
>> -----------------
>> Red Hat, Inc.
>> Email: cibsen@redhat.com
>> Twitter: davsclaus
>> Blog: http://davsclaus.com
>> Author of Camel in Action: http://www.manning.com/ibsen
>> hawtio: http://hawt.io/
>> fabric8: http://fabric8.io/
>



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/

Mime
View raw message