[
https://issues.apache.org/activemq/browse/SMX4-417?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=60218#action_60218
]
Claus Ibsen edited comment on SMX4-417 at 6/23/10 4:13 AM:
-----------------------------------------------------------
You should use {{setOutHeader}} as a work around.
setHeader only sets the IN header, but the groovy script will populate a
response as well, and hence the Exchange has both IN and OUT, but the out will
be empty. Will look into it to make this work out of the box.
was (Author: davsclaus):
You should use {{setOutHeader}}.
> 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
> 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.