[ https://issues.apache.org/activemq/browse/SMX4-417?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen resolved SMX4-417. ------------------------------ Resolution: Fixed Apache Camel 2.4.0 will be part of SMX 4.4.0 > calling <setHeader> with <groovy> expression can delete message and headers > --------------------------------------------------------------------------- > > Key: SMX4-417 > URL: https://issues.apache.org/activemq/browse/SMX4-417 > Project: ServiceMix 4 > Issue Type: Bug > Affects Versions: 4.0.0 > Environment: OSX 10.6.1, Java(TM) SE Runtime Environment (build > 1.6.0_15-b03-219) > Reporter: Paul Mietz Egli > Assignee: Claus Ibsen > Fix For: 4.4.0 > > Attachments: SMX4-417.tar.gz > > > I've got a route that takes an HTTP form post, does some transformations, and > sends an email. One of the transforms I'd like to do is to set a header > value based on the result of a Groovy expression. I found that setting a > header with <groovy>...</groovy> clears out the entire exchange. Setting a > header using <constant>...</constant> works fine. > Here's a route that I'm using to diagnose this problem: > <camelContext xmlns="http://activemq.apache.org/camel/schema/spring"> > <route> > <from uri="jetty:http://0.0.0.0:8103/" /> > <to uri="log:from jetty?showAll=true" /> > <to uri="seda:transform" /> > </route> > <route> > <from uri="timer:mytimer?period=30000"/> > <setHeader headerName="application"> > <constant>TEST</constant> > </setHeader> > <to uri="log:from timer?showAll=true" /> > <to uri="seda:transform"/> > </route> > <route> > <from uri="seda:transform" /> > <setHeader headerName="fromGroovy"> > <groovy>"my header is ${in.headers.application}"</groovy> > </setHeader> > <to uri="log:after set header?showAll=true" /> > </route> > </camelContext> > Messages that originate from the timer look fine: > 12:31:49,332 | INFO | mer?period=30000 | from timer | > rg.apache.camel.processor.Logger 88 | > Exchange[Id:ID-iago.local/53297-1257192385112/0-16, > Properties:{org.apache.camel.timer.name=mytimer, > org.apache.camel.timer.firedTime=Mon Nov 02 12:31:49 PST 2009, > org.apache.camel.timer.period=30000}, Headers:{application=TEST, > firedTime=Mon Nov 02 12:31:49 PST 2009}, BodyType:null, Body:null, Out: null] > 12:31:49,335 | INFO | ansform thread:3 | after set header | > rg.apache.camel.processor.Logger 88 | > Exchange[Id:ID-iago.local/53297-1257192385112/0-17, > Properties:{org.apache.camel.timer.name=mytimer, > org.apache.camel.timer.firedTime=Mon Nov 02 12:31:49 PST 2009, > org.apache.camel.timer.period=30000}, Headers:{application=TEST, > fromGroovy=my header is TEST, firedTime=Mon Nov 02 12:31:49 PST 2009}, > BodyType:null, Body:null, Out: null] > Messages that originate in response to a request to > http://localhost:8103/?application=TEST appear to be lost after the header is > set with the <groovy> tag: > 12:32:03,607 | INFO | 34102...@qtp13-1 | from jetty | > rg.apache.camel.processor.Logger 88 | > Exchange[Id:ID-iago.local/53297-1257192385112/0-18, Properties:{}, > Headers:{application=TEST, Host=localhost:8103, > org.apache.camel.component.http.query=application=TEST, > User-Agent=curl/7.19.0 (i386-apple-darwin9.7.0) libcurl/7.19.0 zlib/1.2.3, > http.requestMethod=GET, Accept=*/*}, > BodyType:org.apache.camel.converter.stream.StreamCacheConverter.InputStreamCache, > Body:, Out: null] > 12:32:03,611 | INFO | ansform thread:3 | after set header | > rg.apache.camel.processor.Logger 88 | > Exchange[Id:ID-iago.local/53297-1257192385112/0-19, Properties:{}, > Headers:{}, BodyType:null, Body:null, Out: null] > The message after the <setHeader><groovy> is completely blank. I've tried > building the route with the Java DSL but it does the same thing. Anything > added after the <setHeader><groovy>... element is added to the message, but > all previous contents were lost. -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.