How can I set the content of the body when I left a bean and before to go to the next bean ?

classic Classic list List threaded Threaded
13 messages Options
Reply | Threaded
Open this post in threaded view
|

How can I set the content of the body when I left a bean and before to go to the next bean ?

Charles Moulliard
Hi,

In a bean component receiving a message, I would like to transform the content of a object received from something into something different (like from JAXB towards Order object).
To achieve this, I create a pipeline routes :

from("File:///c:/temp").
to("bean:converter).
to("bean:save");

Unfortunately, when I define :  

in.getOut().setBody(order, Order.class)

after the transformation step in order to send the message to my bean : save, I see that the message is send back to my bean converter and not propagated to the bean : save !!!!

Where is the issue ? How Can I put the order object into the message that Camel will send to bean : save

Regards,

Charles
Apache Committer / Sr. Pr. Consultant at FuseSource.com
Email: [hidden email]
Twitter : @cmoulliard, @fusenews
Blog : http://cmoulliard.blogspot.com
Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Claus Ibsen
Hi Charles

Convertion from the dataformat JAXB to Order is supported out of the box in Camel with its Data Format:
http://activemq.apache.org/camel/data-format.html

And the JAXB:
http://activemq.apache.org/camel/jaxb.html


DataFormat jaxb = new JaxbDataFormat("com.mycompany");
// where com.mycompany is the package where your domain objecs it - eg Order

from("File:///c:/temp").
unmarshal(jaxb).
to("bean:save);

Then your Order class must be annotated with the JAXB annotations for this.
And you should have a jaxb.index file the JAXB classes you have in the package = Order.

For examples see the camel-jaxb component that has a unit DataFormatTest that does something like the above.

See this unit test and its related files and you will have something to go along with.


Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk
-----Original Message-----
From: cmoulliard [mailto:[hidden email]]
Sent: 4. juli 2008 18:05
To: [hidden email]
Subject: How can I set the content of the body when I left a bean and before to go to the next bean ?


Hi,

In a bean component receiving a message, I would like to transform the
content of a object received from something into something different (like
from JAXB towards Order object).
To achieve this, I create a pipeline routes :

from("File:///c:/temp").
to("bean:converter).
to("bean:save");

Unfortunately, when I define :  

in.getOut().setBody(order, Order.class)

after the transformation step in order to send the message to my bean :
save, I see that the message is send back to my bean converter and not
propagated to the bean : save !!!!

Where is the issue ? How Can I put the order object into the message that
Camel will send to bean : save

Regards,

Charles
--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Charles Moulliard
Hi claus,

My explanation was not enough clear. The JAXB unmarshalling has already be done :
Here is my routing for the first part of the job:

DataFormat jaxb = new JaxbDataFormat("com.myapplication.schema.myschema");

From("File:///c:/temp").
unmarshall(jaxb)
.to("activemq:queue:myqueue");

2nd part :
From ("activemq:queue:myqueue")
.to("bean:converter)
.to("bean:save");

My "converter" bean receives as input the JAXB object (through the message body coming from the queue) and has to perform a java to java transformation. In this bean, I perform the transformation and I would like to send the transformation result to the "save" bean endpoint.

I try to send a new message using the following code (after analizing the pipeline camel test case) but without success :

public Class Converter implements Processor (
   
    public void process(Exchange in) throws Exception (
    .... part where transformation of the jaxb object into another java object took place
    sendTransformedMessage(in, object);
    }


    private void sendTransformedMesage(Exchange in, Object object) {
        in.getOut(true).copyFrom(Exchange.getIn());
        in.getOut()/setBody(object);
    }

Should I have to define the pattern as a InOut between "converter" and "save" ?

Regards,

Charles

Claus Ibsen wrote
Hi Charles

Convertion from the dataformat JAXB to Order is supported out of the box in Camel with its Data Format:
http://activemq.apache.org/camel/data-format.html

And the JAXB:
http://activemq.apache.org/camel/jaxb.html


DataFormat jaxb = new JaxbDataFormat("com.mycompany");
// where com.mycompany is the package where your domain objecs it - eg Order

from("File:///c:/temp").
unmarshal(jaxb).
to("bean:save);

Then your Order class must be annotated with the JAXB annotations for this.
And you should have a jaxb.index file the JAXB classes you have in the package = Order.

For examples see the camel-jaxb component that has a unit DataFormatTest that does something like the above.

See this unit test and its related files and you will have something to go along with.


Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk
-----Original Message-----
From: cmoulliard [mailto:cmoulliard@gmail.com]
Sent: 4. juli 2008 18:05
To: camel-user@activemq.apache.org
Subject: How can I set the content of the body when I left a bean and before to go to the next bean ?


Hi,

In a bean component receiving a message, I would like to transform the
content of a object received from something into something different (like
from JAXB towards Order object).
To achieve this, I create a pipeline routes :

from("File:///c:/temp").
to("bean:converter).
to("bean:save");

Unfortunately, when I define :  

in.getOut().setBody(order, Order.class)

after the transformation step in order to send the message to my bean :
save, I see that the message is send back to my bean converter and not
propagated to the bean : save !!!!

Where is the issue ? How Can I put the order object into the message that
Camel will send to bean : save

Regards,

Charles
--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Apache Committer / Sr. Pr. Consultant at FuseSource.com
Email: [hidden email]
Twitter : @cmoulliard, @fusenews
Blog : http://cmoulliard.blogspot.com
Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Claus Ibsen
Hi

I assume since the original input is from a file you are doing an InOnly message exchange pattern (MEP).

So whenever you receive a message from the jms queue:myqueue and it hasn't a reply-to set it should also be a InOnly message out-of-the-box.

So I would expect that if you set the altered message on the In message then the save bean should see this change:

    private void sendTransformedMesage(Exchange in, Object object) {
        in.getIn().setBody(object);
    }


Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: cmoulliard [mailto:[hidden email]]
Sent: 7. juli 2008 08:40
To: [hidden email]
Subject: RE: How can I set the content of the body when I left a bean and before to go to the next bean ?


Hi claus,

My explanation was not enough clear. The JAXB unmarshalling has already be
done :
Here is my routing for the first part of the job:

DataFormat jaxb = new JaxbDataFormat("com.myapplication.schema.myschema");

From("File:///c:/temp").
unmarshall(jaxb)
.to("activemq:queue:myqueue");

2nd part :
From ("activemq:queue:myqueue")
.to("bean:converter)
.to("bean:save");

My "converter" bean receives as input the JAXB object (through the message
body coming from the queue) and has to perform a java to java
transformation. In this bean, I perform the transformation and I would like
to send the transformation result to the "save" bean endpoint.

I try to send a new message using the following code (after analizing the
pipeline camel test case) but without success :

public Class Converter implements Processor (
   
    public void process(Exchange in) throws Exception (
    .... part where transformation of the jaxb object into another java
object took place
    sendTransformedMessage(in, object);
    }


    private void sendTransformedMesage(Exchange in, Object object) {
        in.getOut(true).copyFrom(Exchange.getIn());
        in.getOut()/setBody(object);
    }

Should I have to define the pattern as a InOut between "converter" and
"save" ?

Regards,

Charles


Claus Ibsen wrote:

>
> Hi Charles
>
> Convertion from the dataformat JAXB to Order is supported out of the box
> in Camel with its Data Format:
> http://activemq.apache.org/camel/data-format.html
>
> And the JAXB:
> http://activemq.apache.org/camel/jaxb.html
>
>
> DataFormat jaxb = new JaxbDataFormat("com.mycompany");
> // where com.mycompany is the package where your domain objecs it - eg
> Order
>
> from("File:///c:/temp").
> unmarshal(jaxb).
> to("bean:save);
>
> Then your Order class must be annotated with the JAXB annotations for
> this.
> And you should have a jaxb.index file the JAXB classes you have in the
> package = Order.
>
> For examples see the camel-jaxb component that has a unit DataFormatTest
> that does something like the above.
>
> See this unit test and its related files and you will have something to go
> along with.
>
>
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
> -----Original Message-----
> From: cmoulliard [mailto:[hidden email]]
> Sent: 4. juli 2008 18:05
> To: [hidden email]
> Subject: How can I set the content of the body when I left a bean and
> before to go to the next bean ?
>
>
> Hi,
>
> In a bean component receiving a message, I would like to transform the
> content of a object received from something into something different (like
> from JAXB towards Order object).
> To achieve this, I create a pipeline routes :
>
> from("File:///c:/temp").
> to("bean:converter).
> to("bean:save");
>
> Unfortunately, when I define :  
>
> in.getOut().setBody(order, Order.class)
>
> after the transformation step in order to send the message to my bean :
> save, I see that the message is send back to my bean converter and not
> propagated to the bean : save !!!!
>
> Where is the issue ? How Can I put the order object into the message that
> Camel will send to bean : save
>
> Regards,
>
> Charles
> --
> View this message in context:
> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>

--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18310870.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Charles Moulliard
Hi Claus,

Unfortunately, what you propose does not work. For your information, my activemq is defined in my camelcontext as a vm queue.

When I use in my route "direct" endpoint instead of "activemq", the object transformed is well send to the "save" bean.

From("File:///c:/temp")
.unmarshall(jaxb)
.to("direct:input");
 
2nd part :
From ("direct.input")
.to("bean:converter)
.to("bean:save");
.to("direct:output");

Regards,

Charles

Claus Ibsen wrote
Hi

I assume since the original input is from a file you are doing an InOnly message exchange pattern (MEP).

So whenever you receive a message from the jms queue:myqueue and it hasn't a reply-to set it should also be a InOnly message out-of-the-box.

So I would expect that if you set the altered message on the In message then the save bean should see this change:

    private void sendTransformedMesage(Exchange in, Object object) {
        in.getIn().setBody(object);
    }


Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: cmoulliard [mailto:cmoulliard@gmail.com]
Sent: 7. juli 2008 08:40
To: camel-user@activemq.apache.org
Subject: RE: How can I set the content of the body when I left a bean and before to go to the next bean ?


Hi claus,

My explanation was not enough clear. The JAXB unmarshalling has already be
done :
Here is my routing for the first part of the job:

DataFormat jaxb = new JaxbDataFormat("com.myapplication.schema.myschema");

From("File:///c:/temp").
unmarshall(jaxb)
.to("activemq:queue:myqueue");

2nd part :
From ("activemq:queue:myqueue")
.to("bean:converter)
.to("bean:save");

My "converter" bean receives as input the JAXB object (through the message
body coming from the queue) and has to perform a java to java
transformation. In this bean, I perform the transformation and I would like
to send the transformation result to the "save" bean endpoint.

I try to send a new message using the following code (after analizing the
pipeline camel test case) but without success :

public Class Converter implements Processor (
   
    public void process(Exchange in) throws Exception (
    .... part where transformation of the jaxb object into another java
object took place
    sendTransformedMessage(in, object);
    }


    private void sendTransformedMesage(Exchange in, Object object) {
        in.getOut(true).copyFrom(Exchange.getIn());
        in.getOut()/setBody(object);
    }

Should I have to define the pattern as a InOut between "converter" and
"save" ?

Regards,

Charles


Claus Ibsen wrote:
>
> Hi Charles
>
> Convertion from the dataformat JAXB to Order is supported out of the box
> in Camel with its Data Format:
> http://activemq.apache.org/camel/data-format.html
>
> And the JAXB:
> http://activemq.apache.org/camel/jaxb.html
>
>
> DataFormat jaxb = new JaxbDataFormat("com.mycompany");
> // where com.mycompany is the package where your domain objecs it - eg
> Order
>
> from("File:///c:/temp").
> unmarshal(jaxb).
> to("bean:save);
>
> Then your Order class must be annotated with the JAXB annotations for
> this.
> And you should have a jaxb.index file the JAXB classes you have in the
> package = Order.
>
> For examples see the camel-jaxb component that has a unit DataFormatTest
> that does something like the above.
>
> See this unit test and its related files and you will have something to go
> along with.
>
>
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
> -----Original Message-----
> From: cmoulliard [mailto:cmoulliard@gmail.com]
> Sent: 4. juli 2008 18:05
> To: camel-user@activemq.apache.org
> Subject: How can I set the content of the body when I left a bean and
> before to go to the next bean ?
>
>
> Hi,
>
> In a bean component receiving a message, I would like to transform the
> content of a object received from something into something different (like
> from JAXB towards Order object).
> To achieve this, I create a pipeline routes :
>
> from("File:///c:/temp").
> to("bean:converter).
> to("bean:save");
>
> Unfortunately, when I define :  
>
> in.getOut().setBody(order, Order.class)
>
> after the transformation step in order to send the message to my bean :
> save, I see that the message is send back to my bean converter and not
> propagated to the bean : save !!!!
>
> Where is the issue ? How Can I put the order object into the message that
> Camel will send to bean : save
>
> Regards,
>
> Charles
> --
> View this message in context:
> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>

--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18310870.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Apache Committer / Sr. Pr. Consultant at FuseSource.com
Email: [hidden email]
Twitter : @cmoulliard, @fusenews
Blog : http://cmoulliard.blogspot.com
Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Claus Ibsen
Hi Charles,

I will try to hack a unit test that demonstrates your route and bean chain, to help identify the problem.

What version of Camel are you using?
Have you tried with the latest 1.4-SNAPSHOT version of Camel?


Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: cmoulliard [mailto:[hidden email]]
Sent: 7. juli 2008 10:42
To: [hidden email]
Subject: RE: How can I set the content of the body when I left a bean and before to go to the next bean ?


Hi Claus,

Unfortunately, what you propose does not work. For your information, my
activemq is defined in my camelcontext as a vm queue.

When I use in my route "direct" endpoint instead of "activemq", the object
transformed is well send to the "save" bean.

From("File:///c:/temp")
.unmarshall(jaxb)
.to("direct:input");
 
2nd part :
From ("direct.input")
.to("bean:converter)
.to("bean:save");
.to("direct:output");

Regards,

Charles


Claus Ibsen wrote:

>
> Hi
>
> I assume since the original input is from a file you are doing an InOnly
> message exchange pattern (MEP).
>
> So whenever you receive a message from the jms queue:myqueue and it hasn't
> a reply-to set it should also be a InOnly message out-of-the-box.
>
> So I would expect that if you set the altered message on the In message
> then the save bean should see this change:
>
>     private void sendTransformedMesage(Exchange in, Object object) {
>         in.getIn().setBody(object);
>     }
>
>
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
>
> -----Original Message-----
> From: cmoulliard [mailto:[hidden email]]
> Sent: 7. juli 2008 08:40
> To: [hidden email]
> Subject: RE: How can I set the content of the body when I left a bean and
> before to go to the next bean ?
>
>
> Hi claus,
>
> My explanation was not enough clear. The JAXB unmarshalling has already be
> done :
> Here is my routing for the first part of the job:
>
> DataFormat jaxb = new JaxbDataFormat("com.myapplication.schema.myschema");
>
> From("File:///c:/temp").
> unmarshall(jaxb)
> .to("activemq:queue:myqueue");
>
> 2nd part :
> From ("activemq:queue:myqueue")
> .to("bean:converter)
> .to("bean:save");
>
> My "converter" bean receives as input the JAXB object (through the message
> body coming from the queue) and has to perform a java to java
> transformation. In this bean, I perform the transformation and I would
> like
> to send the transformation result to the "save" bean endpoint.
>
> I try to send a new message using the following code (after analizing the
> pipeline camel test case) but without success :
>
> public Class Converter implements Processor (
>    
>     public void process(Exchange in) throws Exception (
>     .... part where transformation of the jaxb object into another java
> object took place
>     sendTransformedMessage(in, object);
>     }
>
>
>     private void sendTransformedMesage(Exchange in, Object object) {
>         in.getOut(true).copyFrom(Exchange.getIn());
>         in.getOut()/setBody(object);
>     }
>
> Should I have to define the pattern as a InOut between "converter" and
> "save" ?
>
> Regards,
>
> Charles
>
>
> Claus Ibsen wrote:
>>
>> Hi Charles
>>
>> Convertion from the dataformat JAXB to Order is supported out of the box
>> in Camel with its Data Format:
>> http://activemq.apache.org/camel/data-format.html
>>
>> And the JAXB:
>> http://activemq.apache.org/camel/jaxb.html
>>
>>
>> DataFormat jaxb = new JaxbDataFormat("com.mycompany");
>> // where com.mycompany is the package where your domain objecs it - eg
>> Order
>>
>> from("File:///c:/temp").
>> unmarshal(jaxb).
>> to("bean:save);
>>
>> Then your Order class must be annotated with the JAXB annotations for
>> this.
>> And you should have a jaxb.index file the JAXB classes you have in the
>> package = Order.
>>
>> For examples see the camel-jaxb component that has a unit DataFormatTest
>> that does something like the above.
>>
>> See this unit test and its related files and you will have something to
>> go
>> along with.
>>
>>
>> Med venlig hilsen
>>  
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>> -----Original Message-----
>> From: cmoulliard [mailto:[hidden email]]
>> Sent: 4. juli 2008 18:05
>> To: [hidden email]
>> Subject: How can I set the content of the body when I left a bean and
>> before to go to the next bean ?
>>
>>
>> Hi,
>>
>> In a bean component receiving a message, I would like to transform the
>> content of a object received from something into something different
>> (like
>> from JAXB towards Order object).
>> To achieve this, I create a pipeline routes :
>>
>> from("File:///c:/temp").
>> to("bean:converter).
>> to("bean:save");
>>
>> Unfortunately, when I define :  
>>
>> in.getOut().setBody(order, Order.class)
>>
>> after the transformation step in order to send the message to my bean :
>> save, I see that the message is send back to my bean converter and not
>> propagated to the bean : save !!!!
>>
>> Where is the issue ? How Can I put the order object into the message that
>> Camel will send to bean : save
>>
>> Regards,
>>
>> Charles
>> --
>> View this message in context:
>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18310870.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>

--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18312377.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Charles Moulliard
Claus,

I use Camel 1.4-SNAPSHOT but I haven't made a build since around two weeks.

Regards,

Charles

Claus Ibsen wrote
Hi Charles,

I will try to hack a unit test that demonstrates your route and bean chain, to help identify the problem.

What version of Camel are you using?
Have you tried with the latest 1.4-SNAPSHOT version of Camel?


Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: cmoulliard [mailto:cmoulliard@gmail.com]
Sent: 7. juli 2008 10:42
To: camel-user@activemq.apache.org
Subject: RE: How can I set the content of the body when I left a bean and before to go to the next bean ?


Hi Claus,

Unfortunately, what you propose does not work. For your information, my
activemq is defined in my camelcontext as a vm queue.

When I use in my route "direct" endpoint instead of "activemq", the object
transformed is well send to the "save" bean.

From("File:///c:/temp")
.unmarshall(jaxb)
.to("direct:input");
 
2nd part :
From ("direct.input")
.to("bean:converter)
.to("bean:save");
.to("direct:output");

Regards,

Charles


Claus Ibsen wrote:
>
> Hi
>
> I assume since the original input is from a file you are doing an InOnly
> message exchange pattern (MEP).
>
> So whenever you receive a message from the jms queue:myqueue and it hasn't
> a reply-to set it should also be a InOnly message out-of-the-box.
>
> So I would expect that if you set the altered message on the In message
> then the save bean should see this change:
>
>     private void sendTransformedMesage(Exchange in, Object object) {
>         in.getIn().setBody(object);
>     }
>
>
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
>
> -----Original Message-----
> From: cmoulliard [mailto:cmoulliard@gmail.com]
> Sent: 7. juli 2008 08:40
> To: camel-user@activemq.apache.org
> Subject: RE: How can I set the content of the body when I left a bean and
> before to go to the next bean ?
>
>
> Hi claus,
>
> My explanation was not enough clear. The JAXB unmarshalling has already be
> done :
> Here is my routing for the first part of the job:
>
> DataFormat jaxb = new JaxbDataFormat("com.myapplication.schema.myschema");
>
> From("File:///c:/temp").
> unmarshall(jaxb)
> .to("activemq:queue:myqueue");
>
> 2nd part :
> From ("activemq:queue:myqueue")
> .to("bean:converter)
> .to("bean:save");
>
> My "converter" bean receives as input the JAXB object (through the message
> body coming from the queue) and has to perform a java to java
> transformation. In this bean, I perform the transformation and I would
> like
> to send the transformation result to the "save" bean endpoint.
>
> I try to send a new message using the following code (after analizing the
> pipeline camel test case) but without success :
>
> public Class Converter implements Processor (
>    
>     public void process(Exchange in) throws Exception (
>     .... part where transformation of the jaxb object into another java
> object took place
>     sendTransformedMessage(in, object);
>     }
>
>
>     private void sendTransformedMesage(Exchange in, Object object) {
>         in.getOut(true).copyFrom(Exchange.getIn());
>         in.getOut()/setBody(object);
>     }
>
> Should I have to define the pattern as a InOut between "converter" and
> "save" ?
>
> Regards,
>
> Charles
>
>
> Claus Ibsen wrote:
>>
>> Hi Charles
>>
>> Convertion from the dataformat JAXB to Order is supported out of the box
>> in Camel with its Data Format:
>> http://activemq.apache.org/camel/data-format.html
>>
>> And the JAXB:
>> http://activemq.apache.org/camel/jaxb.html
>>
>>
>> DataFormat jaxb = new JaxbDataFormat("com.mycompany");
>> // where com.mycompany is the package where your domain objecs it - eg
>> Order
>>
>> from("File:///c:/temp").
>> unmarshal(jaxb).
>> to("bean:save);
>>
>> Then your Order class must be annotated with the JAXB annotations for
>> this.
>> And you should have a jaxb.index file the JAXB classes you have in the
>> package = Order.
>>
>> For examples see the camel-jaxb component that has a unit DataFormatTest
>> that does something like the above.
>>
>> See this unit test and its related files and you will have something to
>> go
>> along with.
>>
>>
>> Med venlig hilsen
>>  
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>> -----Original Message-----
>> From: cmoulliard [mailto:cmoulliard@gmail.com]
>> Sent: 4. juli 2008 18:05
>> To: camel-user@activemq.apache.org
>> Subject: How can I set the content of the body when I left a bean and
>> before to go to the next bean ?
>>
>>
>> Hi,
>>
>> In a bean component receiving a message, I would like to transform the
>> content of a object received from something into something different
>> (like
>> from JAXB towards Order object).
>> To achieve this, I create a pipeline routes :
>>
>> from("File:///c:/temp").
>> to("bean:converter).
>> to("bean:save");
>>
>> Unfortunately, when I define :  
>>
>> in.getOut().setBody(order, Order.class)
>>
>> after the transformation step in order to send the message to my bean :
>> save, I see that the message is send back to my bean converter and not
>> propagated to the bean : save !!!!
>>
>> Where is the issue ? How Can I put the order object into the message that
>> Camel will send to bean : save
>>
>> Regards,
>>
>> Charles
>> --
>> View this message in context:
>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18310870.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>

--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18312377.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Apache Committer / Sr. Pr. Consultant at FuseSource.com
Email: [hidden email]
Twitter : @cmoulliard, @fusenews
Blog : http://cmoulliard.blogspot.com
Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Claus Ibsen
Hi

BTW: You can get the builds from the apache maven snapshot repo, so you don't have to build camel locally.

See:
http://activemq.apache.org/camel/download.html



Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: cmoulliard [mailto:[hidden email]]
Sent: 7. juli 2008 11:46
To: [hidden email]
Subject: RE: How can I set the content of the body when I left a bean and before to go to the next bean ?


Claus,

I use Camel 1.4-SNAPSHOT but I haven't made a build since around two weeks.

Regards,

Charles


Claus Ibsen wrote:

>
> Hi Charles,
>
> I will try to hack a unit test that demonstrates your route and bean
> chain, to help identify the problem.
>
> What version of Camel are you using?
> Have you tried with the latest 1.4-SNAPSHOT version of Camel?
>
>
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
>
> -----Original Message-----
> From: cmoulliard [mailto:[hidden email]]
> Sent: 7. juli 2008 10:42
> To: [hidden email]
> Subject: RE: How can I set the content of the body when I left a bean and
> before to go to the next bean ?
>
>
> Hi Claus,
>
> Unfortunately, what you propose does not work. For your information, my
> activemq is defined in my camelcontext as a vm queue.
>
> When I use in my route "direct" endpoint instead of "activemq", the object
> transformed is well send to the "save" bean.
>
> From("File:///c:/temp")
> .unmarshall(jaxb)
> .to("direct:input");
>  
> 2nd part :
> From ("direct.input")
> .to("bean:converter)
> .to("bean:save");
> .to("direct:output");
>
> Regards,
>
> Charles
>
>
> Claus Ibsen wrote:
>>
>> Hi
>>
>> I assume since the original input is from a file you are doing an InOnly
>> message exchange pattern (MEP).
>>
>> So whenever you receive a message from the jms queue:myqueue and it
>> hasn't
>> a reply-to set it should also be a InOnly message out-of-the-box.
>>
>> So I would expect that if you set the altered message on the In message
>> then the save bean should see this change:
>>
>>     private void sendTransformedMesage(Exchange in, Object object) {
>>         in.getIn().setBody(object);
>>     }
>>
>>
>> Med venlig hilsen
>>  
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>>
>> -----Original Message-----
>> From: cmoulliard [mailto:[hidden email]]
>> Sent: 7. juli 2008 08:40
>> To: [hidden email]
>> Subject: RE: How can I set the content of the body when I left a bean and
>> before to go to the next bean ?
>>
>>
>> Hi claus,
>>
>> My explanation was not enough clear. The JAXB unmarshalling has already
>> be
>> done :
>> Here is my routing for the first part of the job:
>>
>> DataFormat jaxb = new
>> JaxbDataFormat("com.myapplication.schema.myschema");
>>
>> From("File:///c:/temp").
>> unmarshall(jaxb)
>> .to("activemq:queue:myqueue");
>>
>> 2nd part :
>> From ("activemq:queue:myqueue")
>> .to("bean:converter)
>> .to("bean:save");
>>
>> My "converter" bean receives as input the JAXB object (through the
>> message
>> body coming from the queue) and has to perform a java to java
>> transformation. In this bean, I perform the transformation and I would
>> like
>> to send the transformation result to the "save" bean endpoint.
>>
>> I try to send a new message using the following code (after analizing the
>> pipeline camel test case) but without success :
>>
>> public Class Converter implements Processor (
>>    
>>     public void process(Exchange in) throws Exception (
>>     .... part where transformation of the jaxb object into another java
>> object took place
>>     sendTransformedMessage(in, object);
>>     }
>>
>>
>>     private void sendTransformedMesage(Exchange in, Object object) {
>>         in.getOut(true).copyFrom(Exchange.getIn());
>>         in.getOut()/setBody(object);
>>     }
>>
>> Should I have to define the pattern as a InOut between "converter" and
>> "save" ?
>>
>> Regards,
>>
>> Charles
>>
>>
>> Claus Ibsen wrote:
>>>
>>> Hi Charles
>>>
>>> Convertion from the dataformat JAXB to Order is supported out of the box
>>> in Camel with its Data Format:
>>> http://activemq.apache.org/camel/data-format.html
>>>
>>> And the JAXB:
>>> http://activemq.apache.org/camel/jaxb.html
>>>
>>>
>>> DataFormat jaxb = new JaxbDataFormat("com.mycompany");
>>> // where com.mycompany is the package where your domain objecs it - eg
>>> Order
>>>
>>> from("File:///c:/temp").
>>> unmarshal(jaxb).
>>> to("bean:save);
>>>
>>> Then your Order class must be annotated with the JAXB annotations for
>>> this.
>>> And you should have a jaxb.index file the JAXB classes you have in the
>>> package = Order.
>>>
>>> For examples see the camel-jaxb component that has a unit DataFormatTest
>>> that does something like the above.
>>>
>>> See this unit test and its related files and you will have something to
>>> go
>>> along with.
>>>
>>>
>>> Med venlig hilsen
>>>  
>>> Claus Ibsen
>>> ......................................
>>> Silverbullet
>>> Skovsgårdsvænget 21
>>> 8362 Hørning
>>> Tlf. +45 2962 7576
>>> Web: www.silverbullet.dk
>>> -----Original Message-----
>>> From: cmoulliard [mailto:[hidden email]]
>>> Sent: 4. juli 2008 18:05
>>> To: [hidden email]
>>> Subject: How can I set the content of the body when I left a bean and
>>> before to go to the next bean ?
>>>
>>>
>>> Hi,
>>>
>>> In a bean component receiving a message, I would like to transform the
>>> content of a object received from something into something different
>>> (like
>>> from JAXB towards Order object).
>>> To achieve this, I create a pipeline routes :
>>>
>>> from("File:///c:/temp").
>>> to("bean:converter).
>>> to("bean:save");
>>>
>>> Unfortunately, when I define :  
>>>
>>> in.getOut().setBody(order, Order.class)
>>>
>>> after the transformation step in order to send the message to my bean :
>>> save, I see that the message is send back to my bean converter and not
>>> propagated to the bean : save !!!!
>>>
>>> Where is the issue ? How Can I put the order object into the message
>>> that
>>> Camel will send to bean : save
>>>
>>> Regards,
>>>
>>> Charles
>>> --
>>> View this message in context:
>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18310870.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18312377.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>

--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18313223.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Charles Moulliard
I have made the test with the last build but the problem is always there.

Is this logical that the message could not delivered to the deadletterchannel configurated (in the routing) when I have a ClassCastException in the bean Converter ?

Claus Ibsen wrote
Hi

BTW: You can get the builds from the apache maven snapshot repo, so you don't have to build camel locally.

See:
http://activemq.apache.org/camel/download.html



Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: cmoulliard [mailto:cmoulliard@gmail.com]
Sent: 7. juli 2008 11:46
To: camel-user@activemq.apache.org
Subject: RE: How can I set the content of the body when I left a bean and before to go to the next bean ?


Claus,

I use Camel 1.4-SNAPSHOT but I haven't made a build since around two weeks.

Regards,

Charles


Claus Ibsen wrote:
>
> Hi Charles,
>
> I will try to hack a unit test that demonstrates your route and bean
> chain, to help identify the problem.
>
> What version of Camel are you using?
> Have you tried with the latest 1.4-SNAPSHOT version of Camel?
>
>
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
>
> -----Original Message-----
> From: cmoulliard [mailto:cmoulliard@gmail.com]
> Sent: 7. juli 2008 10:42
> To: camel-user@activemq.apache.org
> Subject: RE: How can I set the content of the body when I left a bean and
> before to go to the next bean ?
>
>
> Hi Claus,
>
> Unfortunately, what you propose does not work. For your information, my
> activemq is defined in my camelcontext as a vm queue.
>
> When I use in my route "direct" endpoint instead of "activemq", the object
> transformed is well send to the "save" bean.
>
> From("File:///c:/temp")
> .unmarshall(jaxb)
> .to("direct:input");
>  
> 2nd part :
> From ("direct.input")
> .to("bean:converter)
> .to("bean:save");
> .to("direct:output");
>
> Regards,
>
> Charles
>
>
> Claus Ibsen wrote:
>>
>> Hi
>>
>> I assume since the original input is from a file you are doing an InOnly
>> message exchange pattern (MEP).
>>
>> So whenever you receive a message from the jms queue:myqueue and it
>> hasn't
>> a reply-to set it should also be a InOnly message out-of-the-box.
>>
>> So I would expect that if you set the altered message on the In message
>> then the save bean should see this change:
>>
>>     private void sendTransformedMesage(Exchange in, Object object) {
>>         in.getIn().setBody(object);
>>     }
>>
>>
>> Med venlig hilsen
>>  
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>>
>> -----Original Message-----
>> From: cmoulliard [mailto:cmoulliard@gmail.com]
>> Sent: 7. juli 2008 08:40
>> To: camel-user@activemq.apache.org
>> Subject: RE: How can I set the content of the body when I left a bean and
>> before to go to the next bean ?
>>
>>
>> Hi claus,
>>
>> My explanation was not enough clear. The JAXB unmarshalling has already
>> be
>> done :
>> Here is my routing for the first part of the job:
>>
>> DataFormat jaxb = new
>> JaxbDataFormat("com.myapplication.schema.myschema");
>>
>> From("File:///c:/temp").
>> unmarshall(jaxb)
>> .to("activemq:queue:myqueue");
>>
>> 2nd part :
>> From ("activemq:queue:myqueue")
>> .to("bean:converter)
>> .to("bean:save");
>>
>> My "converter" bean receives as input the JAXB object (through the
>> message
>> body coming from the queue) and has to perform a java to java
>> transformation. In this bean, I perform the transformation and I would
>> like
>> to send the transformation result to the "save" bean endpoint.
>>
>> I try to send a new message using the following code (after analizing the
>> pipeline camel test case) but without success :
>>
>> public Class Converter implements Processor (
>>    
>>     public void process(Exchange in) throws Exception (
>>     .... part where transformation of the jaxb object into another java
>> object took place
>>     sendTransformedMessage(in, object);
>>     }
>>
>>
>>     private void sendTransformedMesage(Exchange in, Object object) {
>>         in.getOut(true).copyFrom(Exchange.getIn());
>>         in.getOut()/setBody(object);
>>     }
>>
>> Should I have to define the pattern as a InOut between "converter" and
>> "save" ?
>>
>> Regards,
>>
>> Charles
>>
>>
>> Claus Ibsen wrote:
>>>
>>> Hi Charles
>>>
>>> Convertion from the dataformat JAXB to Order is supported out of the box
>>> in Camel with its Data Format:
>>> http://activemq.apache.org/camel/data-format.html
>>>
>>> And the JAXB:
>>> http://activemq.apache.org/camel/jaxb.html
>>>
>>>
>>> DataFormat jaxb = new JaxbDataFormat("com.mycompany");
>>> // where com.mycompany is the package where your domain objecs it - eg
>>> Order
>>>
>>> from("File:///c:/temp").
>>> unmarshal(jaxb).
>>> to("bean:save);
>>>
>>> Then your Order class must be annotated with the JAXB annotations for
>>> this.
>>> And you should have a jaxb.index file the JAXB classes you have in the
>>> package = Order.
>>>
>>> For examples see the camel-jaxb component that has a unit DataFormatTest
>>> that does something like the above.
>>>
>>> See this unit test and its related files and you will have something to
>>> go
>>> along with.
>>>
>>>
>>> Med venlig hilsen
>>>  
>>> Claus Ibsen
>>> ......................................
>>> Silverbullet
>>> Skovsgårdsvænget 21
>>> 8362 Hørning
>>> Tlf. +45 2962 7576
>>> Web: www.silverbullet.dk
>>> -----Original Message-----
>>> From: cmoulliard [mailto:cmoulliard@gmail.com]
>>> Sent: 4. juli 2008 18:05
>>> To: camel-user@activemq.apache.org
>>> Subject: How can I set the content of the body when I left a bean and
>>> before to go to the next bean ?
>>>
>>>
>>> Hi,
>>>
>>> In a bean component receiving a message, I would like to transform the
>>> content of a object received from something into something different
>>> (like
>>> from JAXB towards Order object).
>>> To achieve this, I create a pipeline routes :
>>>
>>> from("File:///c:/temp").
>>> to("bean:converter).
>>> to("bean:save");
>>>
>>> Unfortunately, when I define :  
>>>
>>> in.getOut().setBody(order, Order.class)
>>>
>>> after the transformation step in order to send the message to my bean :
>>> save, I see that the message is send back to my bean converter and not
>>> propagated to the bean : save !!!!
>>>
>>> Where is the issue ? How Can I put the order object into the message
>>> that
>>> Camel will send to bean : save
>>>
>>> Regards,
>>>
>>> Charles
>>> --
>>> View this message in context:
>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18310870.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18312377.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>

--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18313223.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Apache Committer / Sr. Pr. Consultant at FuseSource.com
Email: [hidden email]
Twitter : @cmoulliard, @fusenews
Blog : http://cmoulliard.blogspot.com
Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Claus Ibsen
Hi

Could you show the route config?
No the DLC should kick in, there should be a default DLC to catch the situation and move the invalid message to a default LOG category at WARN level.

So the ClassCastException should be caught and retried 6 times and moved to a WARN log, by the DLC.



Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: cmoulliard [mailto:[hidden email]]
Sent: 7. juli 2008 13:06
To: [hidden email]
Subject: RE: How can I set the content of the body when I left a bean and before to go to the next bean ?


I have made the test with the last build but the problem is always there.

Is this logical that the message could not delivered to the
deadletterchannel configurated (in the routing) when I have a
ClassCastException in the bean Converter ?


Claus Ibsen wrote:

>
> Hi
>
> BTW: You can get the builds from the apache maven snapshot repo, so you
> don't have to build camel locally.
>
> See:
> http://activemq.apache.org/camel/download.html
>
>
>
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
>
> -----Original Message-----
> From: cmoulliard [mailto:[hidden email]]
> Sent: 7. juli 2008 11:46
> To: [hidden email]
> Subject: RE: How can I set the content of the body when I left a bean and
> before to go to the next bean ?
>
>
> Claus,
>
> I use Camel 1.4-SNAPSHOT but I haven't made a build since around two
> weeks.
>
> Regards,
>
> Charles
>
>
> Claus Ibsen wrote:
>>
>> Hi Charles,
>>
>> I will try to hack a unit test that demonstrates your route and bean
>> chain, to help identify the problem.
>>
>> What version of Camel are you using?
>> Have you tried with the latest 1.4-SNAPSHOT version of Camel?
>>
>>
>> Med venlig hilsen
>>  
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>>
>> -----Original Message-----
>> From: cmoulliard [mailto:[hidden email]]
>> Sent: 7. juli 2008 10:42
>> To: [hidden email]
>> Subject: RE: How can I set the content of the body when I left a bean and
>> before to go to the next bean ?
>>
>>
>> Hi Claus,
>>
>> Unfortunately, what you propose does not work. For your information, my
>> activemq is defined in my camelcontext as a vm queue.
>>
>> When I use in my route "direct" endpoint instead of "activemq", the
>> object
>> transformed is well send to the "save" bean.
>>
>> From("File:///c:/temp")
>> .unmarshall(jaxb)
>> .to("direct:input");
>>  
>> 2nd part :
>> From ("direct.input")
>> .to("bean:converter)
>> .to("bean:save");
>> .to("direct:output");
>>
>> Regards,
>>
>> Charles
>>
>>
>> Claus Ibsen wrote:
>>>
>>> Hi
>>>
>>> I assume since the original input is from a file you are doing an InOnly
>>> message exchange pattern (MEP).
>>>
>>> So whenever you receive a message from the jms queue:myqueue and it
>>> hasn't
>>> a reply-to set it should also be a InOnly message out-of-the-box.
>>>
>>> So I would expect that if you set the altered message on the In message
>>> then the save bean should see this change:
>>>
>>>     private void sendTransformedMesage(Exchange in, Object object) {
>>>         in.getIn().setBody(object);
>>>     }
>>>
>>>
>>> Med venlig hilsen
>>>  
>>> Claus Ibsen
>>> ......................................
>>> Silverbullet
>>> Skovsgårdsvænget 21
>>> 8362 Hørning
>>> Tlf. +45 2962 7576
>>> Web: www.silverbullet.dk
>>>
>>> -----Original Message-----
>>> From: cmoulliard [mailto:[hidden email]]
>>> Sent: 7. juli 2008 08:40
>>> To: [hidden email]
>>> Subject: RE: How can I set the content of the body when I left a bean
>>> and
>>> before to go to the next bean ?
>>>
>>>
>>> Hi claus,
>>>
>>> My explanation was not enough clear. The JAXB unmarshalling has already
>>> be
>>> done :
>>> Here is my routing for the first part of the job:
>>>
>>> DataFormat jaxb = new
>>> JaxbDataFormat("com.myapplication.schema.myschema");
>>>
>>> From("File:///c:/temp").
>>> unmarshall(jaxb)
>>> .to("activemq:queue:myqueue");
>>>
>>> 2nd part :
>>> From ("activemq:queue:myqueue")
>>> .to("bean:converter)
>>> .to("bean:save");
>>>
>>> My "converter" bean receives as input the JAXB object (through the
>>> message
>>> body coming from the queue) and has to perform a java to java
>>> transformation. In this bean, I perform the transformation and I would
>>> like
>>> to send the transformation result to the "save" bean endpoint.
>>>
>>> I try to send a new message using the following code (after analizing
>>> the
>>> pipeline camel test case) but without success :
>>>
>>> public Class Converter implements Processor (
>>>    
>>>     public void process(Exchange in) throws Exception (
>>>     .... part where transformation of the jaxb object into another java
>>> object took place
>>>     sendTransformedMessage(in, object);
>>>     }
>>>
>>>
>>>     private void sendTransformedMesage(Exchange in, Object object) {
>>>         in.getOut(true).copyFrom(Exchange.getIn());
>>>         in.getOut()/setBody(object);
>>>     }
>>>
>>> Should I have to define the pattern as a InOut between "converter" and
>>> "save" ?
>>>
>>> Regards,
>>>
>>> Charles
>>>
>>>
>>> Claus Ibsen wrote:
>>>>
>>>> Hi Charles
>>>>
>>>> Convertion from the dataformat JAXB to Order is supported out of the
>>>> box
>>>> in Camel with its Data Format:
>>>> http://activemq.apache.org/camel/data-format.html
>>>>
>>>> And the JAXB:
>>>> http://activemq.apache.org/camel/jaxb.html
>>>>
>>>>
>>>> DataFormat jaxb = new JaxbDataFormat("com.mycompany");
>>>> // where com.mycompany is the package where your domain objecs it - eg
>>>> Order
>>>>
>>>> from("File:///c:/temp").
>>>> unmarshal(jaxb).
>>>> to("bean:save);
>>>>
>>>> Then your Order class must be annotated with the JAXB annotations for
>>>> this.
>>>> And you should have a jaxb.index file the JAXB classes you have in the
>>>> package = Order.
>>>>
>>>> For examples see the camel-jaxb component that has a unit
>>>> DataFormatTest
>>>> that does something like the above.
>>>>
>>>> See this unit test and its related files and you will have something to
>>>> go
>>>> along with.
>>>>
>>>>
>>>> Med venlig hilsen
>>>>  
>>>> Claus Ibsen
>>>> ......................................
>>>> Silverbullet
>>>> Skovsgårdsvænget 21
>>>> 8362 Hørning
>>>> Tlf. +45 2962 7576
>>>> Web: www.silverbullet.dk
>>>> -----Original Message-----
>>>> From: cmoulliard [mailto:[hidden email]]
>>>> Sent: 4. juli 2008 18:05
>>>> To: [hidden email]
>>>> Subject: How can I set the content of the body when I left a bean and
>>>> before to go to the next bean ?
>>>>
>>>>
>>>> Hi,
>>>>
>>>> In a bean component receiving a message, I would like to transform the
>>>> content of a object received from something into something different
>>>> (like
>>>> from JAXB towards Order object).
>>>> To achieve this, I create a pipeline routes :
>>>>
>>>> from("File:///c:/temp").
>>>> to("bean:converter).
>>>> to("bean:save");
>>>>
>>>> Unfortunately, when I define :  
>>>>
>>>> in.getOut().setBody(order, Order.class)
>>>>
>>>> after the transformation step in order to send the message to my bean :
>>>> save, I see that the message is send back to my bean converter and not
>>>> propagated to the bean : save !!!!
>>>>
>>>> Where is the issue ? How Can I put the order object into the message
>>>> that
>>>> Camel will send to bean : save
>>>>
>>>> Regards,
>>>>
>>>> Charles
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18310870.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18312377.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18313223.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>

--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18314282.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Charles Moulliard
Here is what I define in my route :

errorHandler(deadLetterChannel("seda:errors").maximumRedeliveries(1).useExponentialBackoff());

Regards,

Charles

Claus Ibsen wrote
Hi

Could you show the route config?
No the DLC should kick in, there should be a default DLC to catch the situation and move the invalid message to a default LOG category at WARN level.

So the ClassCastException should be caught and retried 6 times and moved to a WARN log, by the DLC.



Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk

-----Original Message-----
From: cmoulliard [mailto:cmoulliard@gmail.com]
Sent: 7. juli 2008 13:06
To: camel-user@activemq.apache.org
Subject: RE: How can I set the content of the body when I left a bean and before to go to the next bean ?


I have made the test with the last build but the problem is always there.

Is this logical that the message could not delivered to the
deadletterchannel configurated (in the routing) when I have a
ClassCastException in the bean Converter ?


Claus Ibsen wrote:
>
> Hi
>
> BTW: You can get the builds from the apache maven snapshot repo, so you
> don't have to build camel locally.
>
> See:
> http://activemq.apache.org/camel/download.html
>
>
>
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
>
> -----Original Message-----
> From: cmoulliard [mailto:cmoulliard@gmail.com]
> Sent: 7. juli 2008 11:46
> To: camel-user@activemq.apache.org
> Subject: RE: How can I set the content of the body when I left a bean and
> before to go to the next bean ?
>
>
> Claus,
>
> I use Camel 1.4-SNAPSHOT but I haven't made a build since around two
> weeks.
>
> Regards,
>
> Charles
>
>
> Claus Ibsen wrote:
>>
>> Hi Charles,
>>
>> I will try to hack a unit test that demonstrates your route and bean
>> chain, to help identify the problem.
>>
>> What version of Camel are you using?
>> Have you tried with the latest 1.4-SNAPSHOT version of Camel?
>>
>>
>> Med venlig hilsen
>>  
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>>
>> -----Original Message-----
>> From: cmoulliard [mailto:cmoulliard@gmail.com]
>> Sent: 7. juli 2008 10:42
>> To: camel-user@activemq.apache.org
>> Subject: RE: How can I set the content of the body when I left a bean and
>> before to go to the next bean ?
>>
>>
>> Hi Claus,
>>
>> Unfortunately, what you propose does not work. For your information, my
>> activemq is defined in my camelcontext as a vm queue.
>>
>> When I use in my route "direct" endpoint instead of "activemq", the
>> object
>> transformed is well send to the "save" bean.
>>
>> From("File:///c:/temp")
>> .unmarshall(jaxb)
>> .to("direct:input");
>>  
>> 2nd part :
>> From ("direct.input")
>> .to("bean:converter)
>> .to("bean:save");
>> .to("direct:output");
>>
>> Regards,
>>
>> Charles
>>
>>
>> Claus Ibsen wrote:
>>>
>>> Hi
>>>
>>> I assume since the original input is from a file you are doing an InOnly
>>> message exchange pattern (MEP).
>>>
>>> So whenever you receive a message from the jms queue:myqueue and it
>>> hasn't
>>> a reply-to set it should also be a InOnly message out-of-the-box.
>>>
>>> So I would expect that if you set the altered message on the In message
>>> then the save bean should see this change:
>>>
>>>     private void sendTransformedMesage(Exchange in, Object object) {
>>>         in.getIn().setBody(object);
>>>     }
>>>
>>>
>>> Med venlig hilsen
>>>  
>>> Claus Ibsen
>>> ......................................
>>> Silverbullet
>>> Skovsgårdsvænget 21
>>> 8362 Hørning
>>> Tlf. +45 2962 7576
>>> Web: www.silverbullet.dk
>>>
>>> -----Original Message-----
>>> From: cmoulliard [mailto:cmoulliard@gmail.com]
>>> Sent: 7. juli 2008 08:40
>>> To: camel-user@activemq.apache.org
>>> Subject: RE: How can I set the content of the body when I left a bean
>>> and
>>> before to go to the next bean ?
>>>
>>>
>>> Hi claus,
>>>
>>> My explanation was not enough clear. The JAXB unmarshalling has already
>>> be
>>> done :
>>> Here is my routing for the first part of the job:
>>>
>>> DataFormat jaxb = new
>>> JaxbDataFormat("com.myapplication.schema.myschema");
>>>
>>> From("File:///c:/temp").
>>> unmarshall(jaxb)
>>> .to("activemq:queue:myqueue");
>>>
>>> 2nd part :
>>> From ("activemq:queue:myqueue")
>>> .to("bean:converter)
>>> .to("bean:save");
>>>
>>> My "converter" bean receives as input the JAXB object (through the
>>> message
>>> body coming from the queue) and has to perform a java to java
>>> transformation. In this bean, I perform the transformation and I would
>>> like
>>> to send the transformation result to the "save" bean endpoint.
>>>
>>> I try to send a new message using the following code (after analizing
>>> the
>>> pipeline camel test case) but without success :
>>>
>>> public Class Converter implements Processor (
>>>    
>>>     public void process(Exchange in) throws Exception (
>>>     .... part where transformation of the jaxb object into another java
>>> object took place
>>>     sendTransformedMessage(in, object);
>>>     }
>>>
>>>
>>>     private void sendTransformedMesage(Exchange in, Object object) {
>>>         in.getOut(true).copyFrom(Exchange.getIn());
>>>         in.getOut()/setBody(object);
>>>     }
>>>
>>> Should I have to define the pattern as a InOut between "converter" and
>>> "save" ?
>>>
>>> Regards,
>>>
>>> Charles
>>>
>>>
>>> Claus Ibsen wrote:
>>>>
>>>> Hi Charles
>>>>
>>>> Convertion from the dataformat JAXB to Order is supported out of the
>>>> box
>>>> in Camel with its Data Format:
>>>> http://activemq.apache.org/camel/data-format.html
>>>>
>>>> And the JAXB:
>>>> http://activemq.apache.org/camel/jaxb.html
>>>>
>>>>
>>>> DataFormat jaxb = new JaxbDataFormat("com.mycompany");
>>>> // where com.mycompany is the package where your domain objecs it - eg
>>>> Order
>>>>
>>>> from("File:///c:/temp").
>>>> unmarshal(jaxb).
>>>> to("bean:save);
>>>>
>>>> Then your Order class must be annotated with the JAXB annotations for
>>>> this.
>>>> And you should have a jaxb.index file the JAXB classes you have in the
>>>> package = Order.
>>>>
>>>> For examples see the camel-jaxb component that has a unit
>>>> DataFormatTest
>>>> that does something like the above.
>>>>
>>>> See this unit test and its related files and you will have something to
>>>> go
>>>> along with.
>>>>
>>>>
>>>> Med venlig hilsen
>>>>  
>>>> Claus Ibsen
>>>> ......................................
>>>> Silverbullet
>>>> Skovsgårdsvænget 21
>>>> 8362 Hørning
>>>> Tlf. +45 2962 7576
>>>> Web: www.silverbullet.dk
>>>> -----Original Message-----
>>>> From: cmoulliard [mailto:cmoulliard@gmail.com]
>>>> Sent: 4. juli 2008 18:05
>>>> To: camel-user@activemq.apache.org
>>>> Subject: How can I set the content of the body when I left a bean and
>>>> before to go to the next bean ?
>>>>
>>>>
>>>> Hi,
>>>>
>>>> In a bean component receiving a message, I would like to transform the
>>>> content of a object received from something into something different
>>>> (like
>>>> from JAXB towards Order object).
>>>> To achieve this, I create a pipeline routes :
>>>>
>>>> from("File:///c:/temp").
>>>> to("bean:converter).
>>>> to("bean:save");
>>>>
>>>> Unfortunately, when I define :  
>>>>
>>>> in.getOut().setBody(order, Order.class)
>>>>
>>>> after the transformation step in order to send the message to my bean :
>>>> save, I see that the message is send back to my bean converter and not
>>>> propagated to the bean : save !!!!
>>>>
>>>> Where is the issue ? How Can I put the order object into the message
>>>> that
>>>> Camel will send to bean : save
>>>>
>>>> Regards,
>>>>
>>>> Charles
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18310870.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18312377.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18313223.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>

--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18314282.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Apache Committer / Sr. Pr. Consultant at FuseSource.com
Email: [hidden email]
Twitter : @cmoulliard, @fusenews
Blog : http://cmoulliard.blogspot.com
Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Claus Ibsen
Hi

Could you post your route configuration in full please?

Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk
-----Original Message-----
From: cmoulliard [mailto:[hidden email]]
Sent: 7. juli 2008 14:02
To: [hidden email]
Subject: RE: How can I set the content of the body when I left a bean and before to go to the next bean ?


Here is what I define in my route :

errorHandler(deadLetterChannel("seda:errors").maximumRedeliveries(1).useExponentialBackoff());

Regards,

Charles


Claus Ibsen wrote:

>
> Hi
>
> Could you show the route config?
> No the DLC should kick in, there should be a default DLC to catch the
> situation and move the invalid message to a default LOG category at WARN
> level.
>
> So the ClassCastException should be caught and retried 6 times and moved
> to a WARN log, by the DLC.
>
>
>
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
>
> -----Original Message-----
> From: cmoulliard [mailto:[hidden email]]
> Sent: 7. juli 2008 13:06
> To: [hidden email]
> Subject: RE: How can I set the content of the body when I left a bean and
> before to go to the next bean ?
>
>
> I have made the test with the last build but the problem is always there.
>
> Is this logical that the message could not delivered to the
> deadletterchannel configurated (in the routing) when I have a
> ClassCastException in the bean Converter ?
>
>
> Claus Ibsen wrote:
>>
>> Hi
>>
>> BTW: You can get the builds from the apache maven snapshot repo, so you
>> don't have to build camel locally.
>>
>> See:
>> http://activemq.apache.org/camel/download.html
>>
>>
>>
>> Med venlig hilsen
>>  
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>>
>> -----Original Message-----
>> From: cmoulliard [mailto:[hidden email]]
>> Sent: 7. juli 2008 11:46
>> To: [hidden email]
>> Subject: RE: How can I set the content of the body when I left a bean and
>> before to go to the next bean ?
>>
>>
>> Claus,
>>
>> I use Camel 1.4-SNAPSHOT but I haven't made a build since around two
>> weeks.
>>
>> Regards,
>>
>> Charles
>>
>>
>> Claus Ibsen wrote:
>>>
>>> Hi Charles,
>>>
>>> I will try to hack a unit test that demonstrates your route and bean
>>> chain, to help identify the problem.
>>>
>>> What version of Camel are you using?
>>> Have you tried with the latest 1.4-SNAPSHOT version of Camel?
>>>
>>>
>>> Med venlig hilsen
>>>  
>>> Claus Ibsen
>>> ......................................
>>> Silverbullet
>>> Skovsgårdsvænget 21
>>> 8362 Hørning
>>> Tlf. +45 2962 7576
>>> Web: www.silverbullet.dk
>>>
>>> -----Original Message-----
>>> From: cmoulliard [mailto:[hidden email]]
>>> Sent: 7. juli 2008 10:42
>>> To: [hidden email]
>>> Subject: RE: How can I set the content of the body when I left a bean
>>> and
>>> before to go to the next bean ?
>>>
>>>
>>> Hi Claus,
>>>
>>> Unfortunately, what you propose does not work. For your information, my
>>> activemq is defined in my camelcontext as a vm queue.
>>>
>>> When I use in my route "direct" endpoint instead of "activemq", the
>>> object
>>> transformed is well send to the "save" bean.
>>>
>>> From("File:///c:/temp")
>>> .unmarshall(jaxb)
>>> .to("direct:input");
>>>  
>>> 2nd part :
>>> From ("direct.input")
>>> .to("bean:converter)
>>> .to("bean:save");
>>> .to("direct:output");
>>>
>>> Regards,
>>>
>>> Charles
>>>
>>>
>>> Claus Ibsen wrote:
>>>>
>>>> Hi
>>>>
>>>> I assume since the original input is from a file you are doing an
>>>> InOnly
>>>> message exchange pattern (MEP).
>>>>
>>>> So whenever you receive a message from the jms queue:myqueue and it
>>>> hasn't
>>>> a reply-to set it should also be a InOnly message out-of-the-box.
>>>>
>>>> So I would expect that if you set the altered message on the In message
>>>> then the save bean should see this change:
>>>>
>>>>     private void sendTransformedMesage(Exchange in, Object object) {
>>>>         in.getIn().setBody(object);
>>>>     }
>>>>
>>>>
>>>> Med venlig hilsen
>>>>  
>>>> Claus Ibsen
>>>> ......................................
>>>> Silverbullet
>>>> Skovsgårdsvænget 21
>>>> 8362 Hørning
>>>> Tlf. +45 2962 7576
>>>> Web: www.silverbullet.dk
>>>>
>>>> -----Original Message-----
>>>> From: cmoulliard [mailto:[hidden email]]
>>>> Sent: 7. juli 2008 08:40
>>>> To: [hidden email]
>>>> Subject: RE: How can I set the content of the body when I left a bean
>>>> and
>>>> before to go to the next bean ?
>>>>
>>>>
>>>> Hi claus,
>>>>
>>>> My explanation was not enough clear. The JAXB unmarshalling has already
>>>> be
>>>> done :
>>>> Here is my routing for the first part of the job:
>>>>
>>>> DataFormat jaxb = new
>>>> JaxbDataFormat("com.myapplication.schema.myschema");
>>>>
>>>> From("File:///c:/temp").
>>>> unmarshall(jaxb)
>>>> .to("activemq:queue:myqueue");
>>>>
>>>> 2nd part :
>>>> From ("activemq:queue:myqueue")
>>>> .to("bean:converter)
>>>> .to("bean:save");
>>>>
>>>> My "converter" bean receives as input the JAXB object (through the
>>>> message
>>>> body coming from the queue) and has to perform a java to java
>>>> transformation. In this bean, I perform the transformation and I would
>>>> like
>>>> to send the transformation result to the "save" bean endpoint.
>>>>
>>>> I try to send a new message using the following code (after analizing
>>>> the
>>>> pipeline camel test case) but without success :
>>>>
>>>> public Class Converter implements Processor (
>>>>    
>>>>     public void process(Exchange in) throws Exception (
>>>>     .... part where transformation of the jaxb object into another java
>>>> object took place
>>>>     sendTransformedMessage(in, object);
>>>>     }
>>>>
>>>>
>>>>     private void sendTransformedMesage(Exchange in, Object object) {
>>>>         in.getOut(true).copyFrom(Exchange.getIn());
>>>>         in.getOut()/setBody(object);
>>>>     }
>>>>
>>>> Should I have to define the pattern as a InOut between "converter" and
>>>> "save" ?
>>>>
>>>> Regards,
>>>>
>>>> Charles
>>>>
>>>>
>>>> Claus Ibsen wrote:
>>>>>
>>>>> Hi Charles
>>>>>
>>>>> Convertion from the dataformat JAXB to Order is supported out of the
>>>>> box
>>>>> in Camel with its Data Format:
>>>>> http://activemq.apache.org/camel/data-format.html
>>>>>
>>>>> And the JAXB:
>>>>> http://activemq.apache.org/camel/jaxb.html
>>>>>
>>>>>
>>>>> DataFormat jaxb = new JaxbDataFormat("com.mycompany");
>>>>> // where com.mycompany is the package where your domain objecs it - eg
>>>>> Order
>>>>>
>>>>> from("File:///c:/temp").
>>>>> unmarshal(jaxb).
>>>>> to("bean:save);
>>>>>
>>>>> Then your Order class must be annotated with the JAXB annotations for
>>>>> this.
>>>>> And you should have a jaxb.index file the JAXB classes you have in the
>>>>> package = Order.
>>>>>
>>>>> For examples see the camel-jaxb component that has a unit
>>>>> DataFormatTest
>>>>> that does something like the above.
>>>>>
>>>>> See this unit test and its related files and you will have something
>>>>> to
>>>>> go
>>>>> along with.
>>>>>
>>>>>
>>>>> Med venlig hilsen
>>>>>  
>>>>> Claus Ibsen
>>>>> ......................................
>>>>> Silverbullet
>>>>> Skovsgårdsvænget 21
>>>>> 8362 Hørning
>>>>> Tlf. +45 2962 7576
>>>>> Web: www.silverbullet.dk
>>>>> -----Original Message-----
>>>>> From: cmoulliard [mailto:[hidden email]]
>>>>> Sent: 4. juli 2008 18:05
>>>>> To: [hidden email]
>>>>> Subject: How can I set the content of the body when I left a bean and
>>>>> before to go to the next bean ?
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> In a bean component receiving a message, I would like to transform the
>>>>> content of a object received from something into something different
>>>>> (like
>>>>> from JAXB towards Order object).
>>>>> To achieve this, I create a pipeline routes :
>>>>>
>>>>> from("File:///c:/temp").
>>>>> to("bean:converter).
>>>>> to("bean:save");
>>>>>
>>>>> Unfortunately, when I define :  
>>>>>
>>>>> in.getOut().setBody(order, Order.class)
>>>>>
>>>>> after the transformation step in order to send the message to my bean
>>>>> :
>>>>> save, I see that the message is send back to my bean converter and not
>>>>> propagated to the bean : save !!!!
>>>>>
>>>>> Where is the issue ? How Can I put the order object into the message
>>>>> that
>>>>> Camel will send to bean : save
>>>>>
>>>>> Regards,
>>>>>
>>>>> Charles
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18310870.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18312377.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18313223.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18314282.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>

--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18315141.html
Sent from the Camel - Users mailing list archive at Nabble.com.

Reply | Threaded
Open this post in threaded view
|

RE: How can I set the content of the body when I left a bean and before to go to the next bean ?

Charles Moulliard
Here it is :

Class Unmarshall

errorHandler(deadLetterChannel("seda:errors").maximumRedeliveries(1).useExponentialBackoff());
from("file:///c:/temp")
.unmarshall(jaxb)
.to("activemq:queue:myqueue");

Class Transform

errorHandler(deadLetterChannel("seda:errors").maximumRedeliveries(1).useExponentialBackoff());
from ("activemq:queue:myqueue")
.to("bean:converter)
.to("bean:save");
.to("direct:output");

Regards,

Charles

Claus Ibsen wrote
Hi

Could you post your route configuration in full please?

Med venlig hilsen
 
Claus Ibsen
......................................
Silverbullet
Skovsgårdsvænget 21
8362 Hørning
Tlf. +45 2962 7576
Web: www.silverbullet.dk
-----Original Message-----
From: cmoulliard [mailto:cmoulliard@gmail.com]
Sent: 7. juli 2008 14:02
To: camel-user@activemq.apache.org
Subject: RE: How can I set the content of the body when I left a bean and before to go to the next bean ?


Here is what I define in my route :

errorHandler(deadLetterChannel("seda:errors").maximumRedeliveries(1).useExponentialBackoff());

Regards,

Charles


Claus Ibsen wrote:
>
> Hi
>
> Could you show the route config?
> No the DLC should kick in, there should be a default DLC to catch the
> situation and move the invalid message to a default LOG category at WARN
> level.
>
> So the ClassCastException should be caught and retried 6 times and moved
> to a WARN log, by the DLC.
>
>
>
> Med venlig hilsen
>  
> Claus Ibsen
> ......................................
> Silverbullet
> Skovsgårdsvænget 21
> 8362 Hørning
> Tlf. +45 2962 7576
> Web: www.silverbullet.dk
>
> -----Original Message-----
> From: cmoulliard [mailto:cmoulliard@gmail.com]
> Sent: 7. juli 2008 13:06
> To: camel-user@activemq.apache.org
> Subject: RE: How can I set the content of the body when I left a bean and
> before to go to the next bean ?
>
>
> I have made the test with the last build but the problem is always there.
>
> Is this logical that the message could not delivered to the
> deadletterchannel configurated (in the routing) when I have a
> ClassCastException in the bean Converter ?
>
>
> Claus Ibsen wrote:
>>
>> Hi
>>
>> BTW: You can get the builds from the apache maven snapshot repo, so you
>> don't have to build camel locally.
>>
>> See:
>> http://activemq.apache.org/camel/download.html
>>
>>
>>
>> Med venlig hilsen
>>  
>> Claus Ibsen
>> ......................................
>> Silverbullet
>> Skovsgårdsvænget 21
>> 8362 Hørning
>> Tlf. +45 2962 7576
>> Web: www.silverbullet.dk
>>
>> -----Original Message-----
>> From: cmoulliard [mailto:cmoulliard@gmail.com]
>> Sent: 7. juli 2008 11:46
>> To: camel-user@activemq.apache.org
>> Subject: RE: How can I set the content of the body when I left a bean and
>> before to go to the next bean ?
>>
>>
>> Claus,
>>
>> I use Camel 1.4-SNAPSHOT but I haven't made a build since around two
>> weeks.
>>
>> Regards,
>>
>> Charles
>>
>>
>> Claus Ibsen wrote:
>>>
>>> Hi Charles,
>>>
>>> I will try to hack a unit test that demonstrates your route and bean
>>> chain, to help identify the problem.
>>>
>>> What version of Camel are you using?
>>> Have you tried with the latest 1.4-SNAPSHOT version of Camel?
>>>
>>>
>>> Med venlig hilsen
>>>  
>>> Claus Ibsen
>>> ......................................
>>> Silverbullet
>>> Skovsgårdsvænget 21
>>> 8362 Hørning
>>> Tlf. +45 2962 7576
>>> Web: www.silverbullet.dk
>>>
>>> -----Original Message-----
>>> From: cmoulliard [mailto:cmoulliard@gmail.com]
>>> Sent: 7. juli 2008 10:42
>>> To: camel-user@activemq.apache.org
>>> Subject: RE: How can I set the content of the body when I left a bean
>>> and
>>> before to go to the next bean ?
>>>
>>>
>>> Hi Claus,
>>>
>>> Unfortunately, what you propose does not work. For your information, my
>>> activemq is defined in my camelcontext as a vm queue.
>>>
>>> When I use in my route "direct" endpoint instead of "activemq", the
>>> object
>>> transformed is well send to the "save" bean.
>>>
>>> From("File:///c:/temp")
>>> .unmarshall(jaxb)
>>> .to("direct:input");
>>>  
>>> 2nd part :
>>> From ("direct.input")
>>> .to("bean:converter)
>>> .to("bean:save");
>>> .to("direct:output");
>>>
>>> Regards,
>>>
>>> Charles
>>>
>>>
>>> Claus Ibsen wrote:
>>>>
>>>> Hi
>>>>
>>>> I assume since the original input is from a file you are doing an
>>>> InOnly
>>>> message exchange pattern (MEP).
>>>>
>>>> So whenever you receive a message from the jms queue:myqueue and it
>>>> hasn't
>>>> a reply-to set it should also be a InOnly message out-of-the-box.
>>>>
>>>> So I would expect that if you set the altered message on the In message
>>>> then the save bean should see this change:
>>>>
>>>>     private void sendTransformedMesage(Exchange in, Object object) {
>>>>         in.getIn().setBody(object);
>>>>     }
>>>>
>>>>
>>>> Med venlig hilsen
>>>>  
>>>> Claus Ibsen
>>>> ......................................
>>>> Silverbullet
>>>> Skovsgårdsvænget 21
>>>> 8362 Hørning
>>>> Tlf. +45 2962 7576
>>>> Web: www.silverbullet.dk
>>>>
>>>> -----Original Message-----
>>>> From: cmoulliard [mailto:cmoulliard@gmail.com]
>>>> Sent: 7. juli 2008 08:40
>>>> To: camel-user@activemq.apache.org
>>>> Subject: RE: How can I set the content of the body when I left a bean
>>>> and
>>>> before to go to the next bean ?
>>>>
>>>>
>>>> Hi claus,
>>>>
>>>> My explanation was not enough clear. The JAXB unmarshalling has already
>>>> be
>>>> done :
>>>> Here is my routing for the first part of the job:
>>>>
>>>> DataFormat jaxb = new
>>>> JaxbDataFormat("com.myapplication.schema.myschema");
>>>>
>>>> From("File:///c:/temp").
>>>> unmarshall(jaxb)
>>>> .to("activemq:queue:myqueue");
>>>>
>>>> 2nd part :
>>>> From ("activemq:queue:myqueue")
>>>> .to("bean:converter)
>>>> .to("bean:save");
>>>>
>>>> My "converter" bean receives as input the JAXB object (through the
>>>> message
>>>> body coming from the queue) and has to perform a java to java
>>>> transformation. In this bean, I perform the transformation and I would
>>>> like
>>>> to send the transformation result to the "save" bean endpoint.
>>>>
>>>> I try to send a new message using the following code (after analizing
>>>> the
>>>> pipeline camel test case) but without success :
>>>>
>>>> public Class Converter implements Processor (
>>>>    
>>>>     public void process(Exchange in) throws Exception (
>>>>     .... part where transformation of the jaxb object into another java
>>>> object took place
>>>>     sendTransformedMessage(in, object);
>>>>     }
>>>>
>>>>
>>>>     private void sendTransformedMesage(Exchange in, Object object) {
>>>>         in.getOut(true).copyFrom(Exchange.getIn());
>>>>         in.getOut()/setBody(object);
>>>>     }
>>>>
>>>> Should I have to define the pattern as a InOut between "converter" and
>>>> "save" ?
>>>>
>>>> Regards,
>>>>
>>>> Charles
>>>>
>>>>
>>>> Claus Ibsen wrote:
>>>>>
>>>>> Hi Charles
>>>>>
>>>>> Convertion from the dataformat JAXB to Order is supported out of the
>>>>> box
>>>>> in Camel with its Data Format:
>>>>> http://activemq.apache.org/camel/data-format.html
>>>>>
>>>>> And the JAXB:
>>>>> http://activemq.apache.org/camel/jaxb.html
>>>>>
>>>>>
>>>>> DataFormat jaxb = new JaxbDataFormat("com.mycompany");
>>>>> // where com.mycompany is the package where your domain objecs it - eg
>>>>> Order
>>>>>
>>>>> from("File:///c:/temp").
>>>>> unmarshal(jaxb).
>>>>> to("bean:save);
>>>>>
>>>>> Then your Order class must be annotated with the JAXB annotations for
>>>>> this.
>>>>> And you should have a jaxb.index file the JAXB classes you have in the
>>>>> package = Order.
>>>>>
>>>>> For examples see the camel-jaxb component that has a unit
>>>>> DataFormatTest
>>>>> that does something like the above.
>>>>>
>>>>> See this unit test and its related files and you will have something
>>>>> to
>>>>> go
>>>>> along with.
>>>>>
>>>>>
>>>>> Med venlig hilsen
>>>>>  
>>>>> Claus Ibsen
>>>>> ......................................
>>>>> Silverbullet
>>>>> Skovsgårdsvænget 21
>>>>> 8362 Hørning
>>>>> Tlf. +45 2962 7576
>>>>> Web: www.silverbullet.dk
>>>>> -----Original Message-----
>>>>> From: cmoulliard [mailto:cmoulliard@gmail.com]
>>>>> Sent: 4. juli 2008 18:05
>>>>> To: camel-user@activemq.apache.org
>>>>> Subject: How can I set the content of the body when I left a bean and
>>>>> before to go to the next bean ?
>>>>>
>>>>>
>>>>> Hi,
>>>>>
>>>>> In a bean component receiving a message, I would like to transform the
>>>>> content of a object received from something into something different
>>>>> (like
>>>>> from JAXB towards Order object).
>>>>> To achieve this, I create a pipeline routes :
>>>>>
>>>>> from("File:///c:/temp").
>>>>> to("bean:converter).
>>>>> to("bean:save");
>>>>>
>>>>> Unfortunately, when I define :  
>>>>>
>>>>> in.getOut().setBody(order, Order.class)
>>>>>
>>>>> after the transformation step in order to send the message to my bean
>>>>> :
>>>>> save, I see that the message is send back to my bean converter and not
>>>>> propagated to the bean : save !!!!
>>>>>
>>>>> Where is the issue ? How Can I put the order object into the message
>>>>> that
>>>>> Camel will send to bean : save
>>>>>
>>>>> Regards,
>>>>>
>>>>> Charles
>>>>> --
>>>>> View this message in context:
>>>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18282228.html
>>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>>
>>>>>
>>>>>
>>>>
>>>> --
>>>> View this message in context:
>>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18310870.html
>>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>>
>>>>
>>>>
>>>
>>> --
>>> View this message in context:
>>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18312377.html
>>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>>
>>>
>>>
>>
>> --
>> View this message in context:
>> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18313223.html
>> Sent from the Camel - Users mailing list archive at Nabble.com.
>>
>>
>>
>
> --
> View this message in context:
> http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18314282.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
>

--
View this message in context: http://www.nabble.com/How-can-I-set-the-content-of-the-body-when-I-left-a-bean-and-before-to-go-to-the-next-bean---tp18282228s22882p18315141.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Apache Committer / Sr. Pr. Consultant at FuseSource.com
Email: [hidden email]
Twitter : @cmoulliard, @fusenews
Blog : http://cmoulliard.blogspot.com