You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by gilboy <jo...@gmail.com> on 2015/01/20 21:26:37 UTC

Issue setting property on the object which in the exchange body

Hi 

In my route, I have a header property on the exchange called age. In the
body of the exchange I have a person object. I want to set the age property
on the person object.

If I do something like the following in my route and have the setAge
property on the Person bean use the header annotation(e.g.
setAge(@Header("age")Integer age)) the property will get correctly set.
However, the setter message is void, hence the body on the exchange gets
wiped. I can have the setter method return "*this*" but it feels wrong

    <transform>
      <simple>${body.setAge}</simple>
    </transform>

Any other solution?
Thanks
Joe



--
View this message in context: http://camel.465427.n5.nabble.com/Issue-setting-property-on-the-object-which-in-the-exchange-body-tp5761960.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Re: Issue setting property on the object which in the exchange body

Posted by Willem Jiang <wi...@gmail.com>.
You can use the bean method return the message body just like this

public class Bar {
 
    @Handler
    public Foo doSomething(@Header("age")Integer age, @Body Foo foo) {
        foo.setAge(age);
	return foo;
   }

from("activemq:someQueue").
  bean(Bar.class);

You can find more information about Bean Binding here[1]

[1]https://camel.apache.org/bean-binding.html



--  
Willem Jiang

Red Hat, Inc.
Web: http://www.redhat.com
Blog: http://willemjiang.blogspot.com (English)
http://jnn.iteye.com (Chinese)
Twitter: willemjiang  
Weibo: 姜宁willem



On January 21, 2015 at 4:27:37 AM, gilboy (josephotoole@gmail.com) wrote:
> Hi
>  
> In my route, I have a header property on the exchange called age. In the
> body of the exchange I have a person object. I want to set the age property
> on the person object.
>  
> If I do something like the following in my route and have the setAge
> property on the Person bean use the header annotation(e.g.
> setAge(@Header("age")Integer age)) the property will get correctly set.
> However, the setter message is void, hence the body on the exchange gets
> wiped. I can have the setter method return "*this*" but it feels wrong
>  
>  
> ${body.setAge}
>  
>  
> Any other solution?
> Thanks
> Joe
>  
>  
>  
> --
> View this message in context: http://camel.465427.n5.nabble.com/Issue-setting-property-on-the-object-which-in-the-exchange-body-tp5761960.html  
> Sent from the Camel - Users mailing list archive at Nabble.com.
>