You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Claus Ibsen <cl...@gmail.com> on 2012/11/08 09:04:59 UTC
Re: ProducerTemplate.sendBody calls toString
No it does not.
Its you who convert the message to a String in the processor code.
String body = exchange.getIn().getBody(String.class);
You can just do
Object body = exchange.getIn().getBody();
On Thu, Nov 8, 2012 at 9:02 AM, hhenne <hh...@hhenne.dk> wrote:
> Documentation and samples says, that ProducerTemplate.sendBody should send
> any Object.
> However in my setup, it seems to call toString on the object, so it's not
> the real object that is sent - unless the object is a String.
>
> Here is my test, which prints: *************process body: :
> ProducerTemplateTest$A@b8deef - because my object does not have overrided
> toString. If I override toString (uncommenting it) it will print 'hello' all
> right.
>
>
> import org.apache.camel.Exchange;
> import org.apache.camel.Processor;
> import org.apache.camel.ProducerTemplate;
> import org.apache.camel.builder.RouteBuilder;
> import org.apache.camel.test.junit4.CamelTestSupport;
> import org.junit.Test;
>
> public class ProducerTemplateTest extends CamelTestSupport {
>
> @Test
> public void firstTest() throws Exception {
> ProducerTemplate producer = context.createProducerTemplate();
> producer.sendBody("direct:start", new A());
> }
>
> @Override
> protected RouteBuilder createRouteBuilder() throws Exception {
> return new RouteBuilder() {
> @Override
> public void configure() throws Exception {
> from("direct:start")
> .process(new Processor() {
> public void process(Exchange exchange) throws Exception {
> String body = exchange.getIn().getBody(String.class);
> System.out.println("*************process body: : " +
> body);
> exchange.getIn().setBody(body);
> }
> })
> .to("mock:result");
> }
> };
> }
>
>
> class A {
> String s = "hello";
>
> // public String toString(){
> // return s;
> // }
> }
>
> }
>
>
> Best Regards
> Hardy Henneberg
>
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/ProducerTemplate-sendBody-calls-toString-tp5722350.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
--
Claus Ibsen
-----------------
Red Hat, Inc.
FuseSource is now part of Red Hat
Email: cibsen@redhat.com
Web: http://fusesource.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
Re: ProducerTemplate.sendBody calls toString
Posted by hhenne <hh...@hhenne.dk>.
OK,
Stupid mistake, when I inserted the Processor to debug my initial problem,
which was a missing TypeConverter, when I sent a serializalble Axis object
to a file endpoint. Now I found another message about the same problem - but
for now I will just send it to permanent queue in stead.
thanks for helping
Hardy
--
View this message in context: http://camel.465427.n5.nabble.com/ProducerTemplate-sendBody-calls-toString-tp5722350p5722359.html
Sent from the Camel - Users mailing list archive at Nabble.com.