[ 
https://issues.apache.org/activemq/browse/CAMEL-880?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Willem Jiang reassigned CAMEL-880:
----------------------------------

    Assignee: Willem Jiang

> Headers lost when using scriptBuilder to set headers dynamically
> ----------------------------------------------------------------
>
>                 Key: CAMEL-880
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-880
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-script
>    Affects Versions: 1.4.0
>            Reporter: James Mello
>            Assignee: Willem Jiang
>
> When running a dynamic script evaluation in a setHeader, the header is lost 
> as the Pipeline chain uses the data from the out body as the source of 
> headers. 
> So trying to figure this out, I looked into the source, and found that if the 
> getOut is not null, the out message is used to set the header in the 
> setHeader processor. Unfortunately in the script engine this block of code 
> always ensures that it's NOT null. 
> script builder class line 520 of Camel 1.4 
>         ScriptContext context = engine.getContext(); 
>         int scope = ScriptContext.ENGINE_SCOPE; 
>         context.setAttribute("context", exchange.getContext(), scope); 
>         context.setAttribute("exchange", exchange, scope); 
>         context.setAttribute("request", exchange.getIn(), scope); 
>         context.setAttribute("response", exchange.getOut(), scope); 
> The place were the out message is used is here in the Pipeline class at line 
> 79 
>             if (first) { 
>                 first = false; 
>             } else { 
>                 nextExchange = createNextExchange(processor, nextExchange); 
>             } 
> The specifics of my setup were:
> Used spring with the following configuration:
>       <camel:camelContext>
>               <camel:route>
>                       <camel:from uri="jms://LLAQueue?disableReplyTo=true" />
>                       <camel:setHeader headerName="activity.type">
>                               
> <camel:jxpath>exchange.getIn().getBody().getExerciseHighLevelActivity().getActivityType()</camel:jxpath>
>                       </camel:setHeader>
>                       <camel:choice>
>                               <camel:when>
>                                       <camel:javaScript>
>                                               
> exchange.getIn().getHeader('activity.type') == 3
>                                       </camel:javaScript>
>                                       <camel:transform>
>                                               <camel:javaScript>
>                                                       
> exchange.getIn().getBody().getData() !=
>                                                       undefined ?
>                                                       
> exchange.getIn().getBody().getData() : ""
>                                               </camel:javaScript>
>                                       </camel:transform>
>                                       <camel:to uri="log:info?showAll=true" />
>                               </camel:when>
>                       </camel:choice>
>               </camel:route>
>       </camel:camelContext>
> I did not test this problem with other exchange types, just the JMS type.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to