You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by Charles Moulliard <cm...@gmail.com> on 2009/06/18 09:58:28 UTC

Can I call umarshall/marshall process/endpoint from a camel bean ?

Hi,

I would like to know if it is possible for a camel bean to call an
unmarshall/marshall endpoint/process (I don't know if it must be considerate
as an endpoint or process) from a Camel bean ?

In a normal routing, we call unmarshall/marshall like this :

  <route>
    <from uri="direct:start"/>
    <marshal ref="myJaxb"/>
    <to uri="direct:marshalled"/>
  </route>

What I would like to do is to declare marshal/unmarshal in a spring
DSL file (if it possible) and call it inside a bean ?
Why, because the payload to be marshalled/unmarshalled is part of an
object and I would like to keep this object during the pipeline route.

ex

<from uri=file://temp/data/>
<convertBodyTo type="java.io.String"/>
<bean ref="ServiceHelper" method="createRequest" /> // The Request
object is an object used by Hibernate and will contain the content of
the file. So this object cannot be unmarshalled/marshalled by its
content well
<bean ref="ServiceHelper" method="parseRequest" /> // Method who will
call the unmarshall/marshall endpoint / process defined in Spring DSL
file. This method send the string content to the endpoint
who will unmarshall by example the content into a collection of
Objects. The result is saved into the object Request
<bean ref=ServiceHelper" method="saveRequest"/>

because it is not possible to do this without loosing the Request object

<from uri=file://temp/data/>
<convertBodyTo type="java.io.String"/>
<bean ref="ServiceHelper" method="createRequest" />
<unmarshall ref="csbBindyDataFormat"/>
<bean ref=ServiceHelper" method="saveRequest"/>


Regards,

Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com

Re: Can I call umarshall/marshall process/endpoint from a camel bean ?

Posted by Claus Ibsen <cl...@gmail.com>.
On Thu, Jun 18, 2009 at 1:11 PM, Charles Moulliard <cm...@gmail.com>wrote:

> For me too. Camel bindy uses the echange for classloading of the model
> classes and use converter
>

I am wondering if a DataFormat could implement CamelContextAware and get
that injected.
>From the camel context we can get hold of the type converter and class
resolvers.

So it could/should be possible. Then we can have a neutral Object as
parameter.

But need to take a deeper look into how all of the xxx DataFormat currently
is implemented.

Charles feel free to create a ticket about this then we could look into it
in 2.1

It is after all a good idea to provide neutral Data Formats so you can use
it more freely.




>
> BTW, I think that I will create a BindyContext (like JAXBcontext) that I
> could use to parse the messages without Camel
>

Good idea.


>
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
>
>
> On Thu, Jun 18, 2009 at 11:32 AM, Claus Ibsen <cl...@gmail.com>
> wrote:
>
> > Hi
> > I cannot see how we can easily add support for using Camel DataFormat as
> a
> > POJO without the Exchange parameter.
> >
> >
> >
> > On Thu, Jun 18, 2009 at 11:25 AM, Claus Ibsen <cl...@gmail.com>
> > wrote:
> >
> > > Hi
> > > Yeah but do not use DataFormat but use your own POJO that just does
> what
> > > Camel does to invoke the real marshaller / unmarshaller logic.
> > >
> > > You do not have to try shoehorn this into DataFormat that cannot work
> > > without Exchange.
> > > Use POJO and let Camel invoke your POJO as a "data format"
> > >
> > >
> > >
> > > On Thu, Jun 18, 2009 at 11:21 AM, Charles Moulliard <
> > cmoulliard@gmail.com>wrote:
> > >
> > >> This is what I have done but unfortunately, Exchange is a required
> > >> parameter
> > >> in both methods of DataFormat (
> > >>
> > >>
> >
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html
> > >> ):
> > >>
> > >>  void *marshal<
> > >>
> >
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html#marshal%28org.apache.camel.Exchange,%20java.lang.Object,%20java.io.OutputStream%29
> > >> >
> > >> *(Exchange<
> > >>
> >
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/Exchange.html
> > >> >
> > >> exchange,
> > >> Object<
> > >>
> >
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true
> > >> >
> > >> graph,
> > >> OutputStream<
> > >>
> >
> http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html?is-external=true
> > >> >
> > >>  stream)
> > >>          Marshals the object to the given Stream.
> > >>
> > >>  Object<
> > >>
> >
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true
> > >> >
> > >> *unmarshal<
> > >>
> >
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html#unmarshal%28org.apache.camel.Exchange,%20java.io.InputStream%29
> > >> >
> > >> *(Exchange<
> > >>
> >
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/Exchange.html
> > >> >
> > >> exchange,
> > >> InputStream<
> > >>
> >
> http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html?is-external=true
> > >> >
> > >>  stream)
> > >>          Unmarshals the given stream into an object.
> > >>
> > >>
> > >>
> > >> On Thu, Jun 18, 2009 at 10:41 AM, Claus Ibsen <cl...@gmail.com>
> > >> wrote:
> > >>
> > >> > Hi
> > >> > The Data Format abstraction in Camel is a thin layer. So you could
> > >> create
> > >> > your own POJO layer you can invoke.
> > >> > And in the impl of the POJO layer you more or less do the same as
> > Camel
> > >> > does, but without the Exchange as parameter.
> > >> >
> > >> >
> > >> >
> > >> > On Thu, Jun 18, 2009 at 9:58 AM, Charles Moulliard <
> > >> cmoulliard@gmail.com
> > >> > >wrote:
> > >> >
> > >> > > Hi,
> > >> > >
> > >> > > I would like to know if it is possible for a camel bean to call an
> > >> > > unmarshall/marshall endpoint/process (I don't know if it must be
> > >> > > considerate
> > >> > > as an endpoint or process) from a Camel bean ?
> > >> > >
> > >> > > In a normal routing, we call unmarshall/marshall like this :
> > >> > >
> > >> > >  <route>
> > >> > >    <from uri="direct:start"/>
> > >> > >    <marshal ref="myJaxb"/>
> > >> > >    <to uri="direct:marshalled"/>
> > >> > >  </route>
> > >> > >
> > >> > > What I would like to do is to declare marshal/unmarshal in a
> spring
> > >> > > DSL file (if it possible) and call it inside a bean ?
> > >> > > Why, because the payload to be marshalled/unmarshalled is part of
> an
> > >> > > object and I would like to keep this object during the pipeline
> > route.
> > >> > >
> > >> > > ex
> > >> > >
> > >> > > <from uri=file://temp/data/>
> > >> > > <convertBodyTo type="java.io.String"/>
> > >> > > <bean ref="ServiceHelper" method="createRequest" /> // The Request
> > >> > > object is an object used by Hibernate and will contain the content
> > of
> > >> > > the file. So this object cannot be unmarshalled/marshalled by its
> > >> > > content well
> > >> > > <bean ref="ServiceHelper" method="parseRequest" /> // Method who
> > will
> > >> > > call the unmarshall/marshall endpoint / process defined in Spring
> > DSL
> > >> > > file. This method send the string content to the endpoint
> > >> > > who will unmarshall by example the content into a collection of
> > >> > > Objects. The result is saved into the object Request
> > >> > > <bean ref=ServiceHelper" method="saveRequest"/>
> > >> > >
> > >> > > because it is not possible to do this without loosing the Request
> > >> object
> > >> > >
> > >> > > <from uri=file://temp/data/>
> > >> > > <convertBodyTo type="java.io.String"/>
> > >> > > <bean ref="ServiceHelper" method="createRequest" />
> > >> > > <unmarshall ref="csbBindyDataFormat"/>
> > >> > > <bean ref=ServiceHelper" method="saveRequest"/>
> > >> > >
> > >> > >
> > >> > > Regards,
> > >> > >
> > >> > > Charles Moulliard
> > >> > > Senior Enterprise Architect
> > >> > > Apache Camel Committer
> > >> > >
> > >> > > *****************************
> > >> > > blog : http://cmoulliard.blogspot.com
> > >> > >
> > >> >
> > >> >
> > >> >
> > >> > --
> > >> > Claus Ibsen
> > >> > Apache Camel Committer
> > >> >
> > >> > Open Source Integration: http://fusesource.com
> > >> > Blog: http://davsclaus.blogspot.com/
> > >> > Twitter: http://twitter.com/davsclaus
> > >> >
> > >>
> > >
> > >
> > >
> > > --
> > > Claus Ibsen
> > > Apache Camel Committer
> > >
> > > Open Source Integration: http://fusesource.com
> > > Blog: http://davsclaus.blogspot.com/
> > > Twitter: http://twitter.com/davsclaus
> > >
> > >
> >
> >
> > --
> > Claus Ibsen
> > Apache Camel Committer
> >
> > Open Source Integration: http://fusesource.com
> > Blog: http://davsclaus.blogspot.com/
> > Twitter: http://twitter.com/davsclaus
> >
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Re: Can I call umarshall/marshall process/endpoint from a camel bean ?

Posted by Charles Moulliard <cm...@gmail.com>.
For me too. Camel bindy uses the echange for classloading of the model
classes and use converter

BTW, I think that I will create a BindyContext (like JAXBcontext) that I
could use to parse the messages without Camel


Charles Moulliard
Senior Enterprise Architect
Apache Camel Committer

*****************************
blog : http://cmoulliard.blogspot.com


On Thu, Jun 18, 2009 at 11:32 AM, Claus Ibsen <cl...@gmail.com> wrote:

> Hi
> I cannot see how we can easily add support for using Camel DataFormat as a
> POJO without the Exchange parameter.
>
>
>
> On Thu, Jun 18, 2009 at 11:25 AM, Claus Ibsen <cl...@gmail.com>
> wrote:
>
> > Hi
> > Yeah but do not use DataFormat but use your own POJO that just does what
> > Camel does to invoke the real marshaller / unmarshaller logic.
> >
> > You do not have to try shoehorn this into DataFormat that cannot work
> > without Exchange.
> > Use POJO and let Camel invoke your POJO as a "data format"
> >
> >
> >
> > On Thu, Jun 18, 2009 at 11:21 AM, Charles Moulliard <
> cmoulliard@gmail.com>wrote:
> >
> >> This is what I have done but unfortunately, Exchange is a required
> >> parameter
> >> in both methods of DataFormat (
> >>
> >>
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html
> >> ):
> >>
> >>  void *marshal<
> >>
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html#marshal%28org.apache.camel.Exchange,%20java.lang.Object,%20java.io.OutputStream%29
> >> >
> >> *(Exchange<
> >>
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/Exchange.html
> >> >
> >> exchange,
> >> Object<
> >>
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true
> >> >
> >> graph,
> >> OutputStream<
> >>
> http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html?is-external=true
> >> >
> >>  stream)
> >>          Marshals the object to the given Stream.
> >>
> >>  Object<
> >>
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true
> >> >
> >> *unmarshal<
> >>
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html#unmarshal%28org.apache.camel.Exchange,%20java.io.InputStream%29
> >> >
> >> *(Exchange<
> >>
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/Exchange.html
> >> >
> >> exchange,
> >> InputStream<
> >>
> http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html?is-external=true
> >> >
> >>  stream)
> >>          Unmarshals the given stream into an object.
> >>
> >>
> >>
> >> On Thu, Jun 18, 2009 at 10:41 AM, Claus Ibsen <cl...@gmail.com>
> >> wrote:
> >>
> >> > Hi
> >> > The Data Format abstraction in Camel is a thin layer. So you could
> >> create
> >> > your own POJO layer you can invoke.
> >> > And in the impl of the POJO layer you more or less do the same as
> Camel
> >> > does, but without the Exchange as parameter.
> >> >
> >> >
> >> >
> >> > On Thu, Jun 18, 2009 at 9:58 AM, Charles Moulliard <
> >> cmoulliard@gmail.com
> >> > >wrote:
> >> >
> >> > > Hi,
> >> > >
> >> > > I would like to know if it is possible for a camel bean to call an
> >> > > unmarshall/marshall endpoint/process (I don't know if it must be
> >> > > considerate
> >> > > as an endpoint or process) from a Camel bean ?
> >> > >
> >> > > In a normal routing, we call unmarshall/marshall like this :
> >> > >
> >> > >  <route>
> >> > >    <from uri="direct:start"/>
> >> > >    <marshal ref="myJaxb"/>
> >> > >    <to uri="direct:marshalled"/>
> >> > >  </route>
> >> > >
> >> > > What I would like to do is to declare marshal/unmarshal in a spring
> >> > > DSL file (if it possible) and call it inside a bean ?
> >> > > Why, because the payload to be marshalled/unmarshalled is part of an
> >> > > object and I would like to keep this object during the pipeline
> route.
> >> > >
> >> > > ex
> >> > >
> >> > > <from uri=file://temp/data/>
> >> > > <convertBodyTo type="java.io.String"/>
> >> > > <bean ref="ServiceHelper" method="createRequest" /> // The Request
> >> > > object is an object used by Hibernate and will contain the content
> of
> >> > > the file. So this object cannot be unmarshalled/marshalled by its
> >> > > content well
> >> > > <bean ref="ServiceHelper" method="parseRequest" /> // Method who
> will
> >> > > call the unmarshall/marshall endpoint / process defined in Spring
> DSL
> >> > > file. This method send the string content to the endpoint
> >> > > who will unmarshall by example the content into a collection of
> >> > > Objects. The result is saved into the object Request
> >> > > <bean ref=ServiceHelper" method="saveRequest"/>
> >> > >
> >> > > because it is not possible to do this without loosing the Request
> >> object
> >> > >
> >> > > <from uri=file://temp/data/>
> >> > > <convertBodyTo type="java.io.String"/>
> >> > > <bean ref="ServiceHelper" method="createRequest" />
> >> > > <unmarshall ref="csbBindyDataFormat"/>
> >> > > <bean ref=ServiceHelper" method="saveRequest"/>
> >> > >
> >> > >
> >> > > Regards,
> >> > >
> >> > > Charles Moulliard
> >> > > Senior Enterprise Architect
> >> > > Apache Camel Committer
> >> > >
> >> > > *****************************
> >> > > blog : http://cmoulliard.blogspot.com
> >> > >
> >> >
> >> >
> >> >
> >> > --
> >> > Claus Ibsen
> >> > Apache Camel Committer
> >> >
> >> > Open Source Integration: http://fusesource.com
> >> > Blog: http://davsclaus.blogspot.com/
> >> > Twitter: http://twitter.com/davsclaus
> >> >
> >>
> >
> >
> >
> > --
> > Claus Ibsen
> > Apache Camel Committer
> >
> > Open Source Integration: http://fusesource.com
> > Blog: http://davsclaus.blogspot.com/
> > Twitter: http://twitter.com/davsclaus
> >
> >
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>

Re: Can I call umarshall/marshall process/endpoint from a camel bean ?

Posted by Claus Ibsen <cl...@gmail.com>.
Hi
I cannot see how we can easily add support for using Camel DataFormat as a
POJO without the Exchange parameter.



On Thu, Jun 18, 2009 at 11:25 AM, Claus Ibsen <cl...@gmail.com> wrote:

> Hi
> Yeah but do not use DataFormat but use your own POJO that just does what
> Camel does to invoke the real marshaller / unmarshaller logic.
>
> You do not have to try shoehorn this into DataFormat that cannot work
> without Exchange.
> Use POJO and let Camel invoke your POJO as a "data format"
>
>
>
> On Thu, Jun 18, 2009 at 11:21 AM, Charles Moulliard <cm...@gmail.com>wrote:
>
>> This is what I have done but unfortunately, Exchange is a required
>> parameter
>> in both methods of DataFormat (
>>
>> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html
>> ):
>>
>>  void *marshal<
>> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html#marshal%28org.apache.camel.Exchange,%20java.lang.Object,%20java.io.OutputStream%29
>> >
>> *(Exchange<
>> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/Exchange.html
>> >
>> exchange,
>> Object<
>> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true
>> >
>> graph,
>> OutputStream<
>> http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html?is-external=true
>> >
>>  stream)
>>          Marshals the object to the given Stream.
>>
>>  Object<
>> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true
>> >
>> *unmarshal<
>> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html#unmarshal%28org.apache.camel.Exchange,%20java.io.InputStream%29
>> >
>> *(Exchange<
>> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/Exchange.html
>> >
>> exchange,
>> InputStream<
>> http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html?is-external=true
>> >
>>  stream)
>>          Unmarshals the given stream into an object.
>>
>>
>>
>> On Thu, Jun 18, 2009 at 10:41 AM, Claus Ibsen <cl...@gmail.com>
>> wrote:
>>
>> > Hi
>> > The Data Format abstraction in Camel is a thin layer. So you could
>> create
>> > your own POJO layer you can invoke.
>> > And in the impl of the POJO layer you more or less do the same as Camel
>> > does, but without the Exchange as parameter.
>> >
>> >
>> >
>> > On Thu, Jun 18, 2009 at 9:58 AM, Charles Moulliard <
>> cmoulliard@gmail.com
>> > >wrote:
>> >
>> > > Hi,
>> > >
>> > > I would like to know if it is possible for a camel bean to call an
>> > > unmarshall/marshall endpoint/process (I don't know if it must be
>> > > considerate
>> > > as an endpoint or process) from a Camel bean ?
>> > >
>> > > In a normal routing, we call unmarshall/marshall like this :
>> > >
>> > >  <route>
>> > >    <from uri="direct:start"/>
>> > >    <marshal ref="myJaxb"/>
>> > >    <to uri="direct:marshalled"/>
>> > >  </route>
>> > >
>> > > What I would like to do is to declare marshal/unmarshal in a spring
>> > > DSL file (if it possible) and call it inside a bean ?
>> > > Why, because the payload to be marshalled/unmarshalled is part of an
>> > > object and I would like to keep this object during the pipeline route.
>> > >
>> > > ex
>> > >
>> > > <from uri=file://temp/data/>
>> > > <convertBodyTo type="java.io.String"/>
>> > > <bean ref="ServiceHelper" method="createRequest" /> // The Request
>> > > object is an object used by Hibernate and will contain the content of
>> > > the file. So this object cannot be unmarshalled/marshalled by its
>> > > content well
>> > > <bean ref="ServiceHelper" method="parseRequest" /> // Method who will
>> > > call the unmarshall/marshall endpoint / process defined in Spring DSL
>> > > file. This method send the string content to the endpoint
>> > > who will unmarshall by example the content into a collection of
>> > > Objects. The result is saved into the object Request
>> > > <bean ref=ServiceHelper" method="saveRequest"/>
>> > >
>> > > because it is not possible to do this without loosing the Request
>> object
>> > >
>> > > <from uri=file://temp/data/>
>> > > <convertBodyTo type="java.io.String"/>
>> > > <bean ref="ServiceHelper" method="createRequest" />
>> > > <unmarshall ref="csbBindyDataFormat"/>
>> > > <bean ref=ServiceHelper" method="saveRequest"/>
>> > >
>> > >
>> > > Regards,
>> > >
>> > > Charles Moulliard
>> > > Senior Enterprise Architect
>> > > Apache Camel Committer
>> > >
>> > > *****************************
>> > > blog : http://cmoulliard.blogspot.com
>> > >
>> >
>> >
>> >
>> > --
>> > Claus Ibsen
>> > Apache Camel Committer
>> >
>> > Open Source Integration: http://fusesource.com
>> > Blog: http://davsclaus.blogspot.com/
>> > Twitter: http://twitter.com/davsclaus
>> >
>>
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>
>


-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Re: Can I call umarshall/marshall process/endpoint from a camel bean ?

Posted by Claus Ibsen <cl...@gmail.com>.
Hi
Yeah but do not use DataFormat but use your own POJO that just does what
Camel does to invoke the real marshaller / unmarshaller logic.

You do not have to try shoehorn this into DataFormat that cannot work
without Exchange.
Use POJO and let Camel invoke your POJO as a "data format"



On Thu, Jun 18, 2009 at 11:21 AM, Charles Moulliard <cm...@gmail.com>wrote:

> This is what I have done but unfortunately, Exchange is a required
> parameter
> in both methods of DataFormat (
>
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html
> ):
>
>  void *marshal<
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html#marshal%28org.apache.camel.Exchange,%20java.lang.Object,%20java.io.OutputStream%29
> >
> *(Exchange<
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/Exchange.html
> >
> exchange,
> Object<
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true
> >
> graph,
> OutputStream<
> http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html?is-external=true
> >
>  stream)
>          Marshals the object to the given Stream.
>
>  Object<
> http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true
> >
> *unmarshal<
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html#unmarshal%28org.apache.camel.Exchange,%20java.io.InputStream%29
> >
> *(Exchange<
> http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/Exchange.html
> >
> exchange,
> InputStream<
> http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html?is-external=true
> >
>  stream)
>          Unmarshals the given stream into an object.
>
>
>
> On Thu, Jun 18, 2009 at 10:41 AM, Claus Ibsen <cl...@gmail.com>
> wrote:
>
> > Hi
> > The Data Format abstraction in Camel is a thin layer. So you could create
> > your own POJO layer you can invoke.
> > And in the impl of the POJO layer you more or less do the same as Camel
> > does, but without the Exchange as parameter.
> >
> >
> >
> > On Thu, Jun 18, 2009 at 9:58 AM, Charles Moulliard <cmoulliard@gmail.com
> > >wrote:
> >
> > > Hi,
> > >
> > > I would like to know if it is possible for a camel bean to call an
> > > unmarshall/marshall endpoint/process (I don't know if it must be
> > > considerate
> > > as an endpoint or process) from a Camel bean ?
> > >
> > > In a normal routing, we call unmarshall/marshall like this :
> > >
> > >  <route>
> > >    <from uri="direct:start"/>
> > >    <marshal ref="myJaxb"/>
> > >    <to uri="direct:marshalled"/>
> > >  </route>
> > >
> > > What I would like to do is to declare marshal/unmarshal in a spring
> > > DSL file (if it possible) and call it inside a bean ?
> > > Why, because the payload to be marshalled/unmarshalled is part of an
> > > object and I would like to keep this object during the pipeline route.
> > >
> > > ex
> > >
> > > <from uri=file://temp/data/>
> > > <convertBodyTo type="java.io.String"/>
> > > <bean ref="ServiceHelper" method="createRequest" /> // The Request
> > > object is an object used by Hibernate and will contain the content of
> > > the file. So this object cannot be unmarshalled/marshalled by its
> > > content well
> > > <bean ref="ServiceHelper" method="parseRequest" /> // Method who will
> > > call the unmarshall/marshall endpoint / process defined in Spring DSL
> > > file. This method send the string content to the endpoint
> > > who will unmarshall by example the content into a collection of
> > > Objects. The result is saved into the object Request
> > > <bean ref=ServiceHelper" method="saveRequest"/>
> > >
> > > because it is not possible to do this without loosing the Request
> object
> > >
> > > <from uri=file://temp/data/>
> > > <convertBodyTo type="java.io.String"/>
> > > <bean ref="ServiceHelper" method="createRequest" />
> > > <unmarshall ref="csbBindyDataFormat"/>
> > > <bean ref=ServiceHelper" method="saveRequest"/>
> > >
> > >
> > > Regards,
> > >
> > > Charles Moulliard
> > > Senior Enterprise Architect
> > > Apache Camel Committer
> > >
> > > *****************************
> > > blog : http://cmoulliard.blogspot.com
> > >
> >
> >
> >
> > --
> > Claus Ibsen
> > Apache Camel Committer
> >
> > Open Source Integration: http://fusesource.com
> > Blog: http://davsclaus.blogspot.com/
> > Twitter: http://twitter.com/davsclaus
> >
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Re: Can I call umarshall/marshall process/endpoint from a camel bean ?

Posted by Charles Moulliard <cm...@gmail.com>.
This is what I have done but unfortunately, Exchange is a required parameter
in both methods of DataFormat (
http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html
):

  void *marshal<http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html#marshal%28org.apache.camel.Exchange,%20java.lang.Object,%20java.io.OutputStream%29>
*(Exchange<http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/Exchange.html>
exchange,
Object<http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true>
graph,
OutputStream<http://java.sun.com/j2se/1.5.0/docs/api/java/io/OutputStream.html?is-external=true>
 stream)
          Marshals the object to the given Stream.

  Object<http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true>
*unmarshal<http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/model/dataformat/DataFormatType.html#unmarshal%28org.apache.camel.Exchange,%20java.io.InputStream%29>
*(Exchange<http://camel.apache.org/maven/camel-core/apidocs/org/apache/camel/Exchange.html>
exchange,
InputStream<http://java.sun.com/j2se/1.5.0/docs/api/java/io/InputStream.html?is-external=true>
 stream)
          Unmarshals the given stream into an object.



On Thu, Jun 18, 2009 at 10:41 AM, Claus Ibsen <cl...@gmail.com> wrote:

> Hi
> The Data Format abstraction in Camel is a thin layer. So you could create
> your own POJO layer you can invoke.
> And in the impl of the POJO layer you more or less do the same as Camel
> does, but without the Exchange as parameter.
>
>
>
> On Thu, Jun 18, 2009 at 9:58 AM, Charles Moulliard <cmoulliard@gmail.com
> >wrote:
>
> > Hi,
> >
> > I would like to know if it is possible for a camel bean to call an
> > unmarshall/marshall endpoint/process (I don't know if it must be
> > considerate
> > as an endpoint or process) from a Camel bean ?
> >
> > In a normal routing, we call unmarshall/marshall like this :
> >
> >  <route>
> >    <from uri="direct:start"/>
> >    <marshal ref="myJaxb"/>
> >    <to uri="direct:marshalled"/>
> >  </route>
> >
> > What I would like to do is to declare marshal/unmarshal in a spring
> > DSL file (if it possible) and call it inside a bean ?
> > Why, because the payload to be marshalled/unmarshalled is part of an
> > object and I would like to keep this object during the pipeline route.
> >
> > ex
> >
> > <from uri=file://temp/data/>
> > <convertBodyTo type="java.io.String"/>
> > <bean ref="ServiceHelper" method="createRequest" /> // The Request
> > object is an object used by Hibernate and will contain the content of
> > the file. So this object cannot be unmarshalled/marshalled by its
> > content well
> > <bean ref="ServiceHelper" method="parseRequest" /> // Method who will
> > call the unmarshall/marshall endpoint / process defined in Spring DSL
> > file. This method send the string content to the endpoint
> > who will unmarshall by example the content into a collection of
> > Objects. The result is saved into the object Request
> > <bean ref=ServiceHelper" method="saveRequest"/>
> >
> > because it is not possible to do this without loosing the Request object
> >
> > <from uri=file://temp/data/>
> > <convertBodyTo type="java.io.String"/>
> > <bean ref="ServiceHelper" method="createRequest" />
> > <unmarshall ref="csbBindyDataFormat"/>
> > <bean ref=ServiceHelper" method="saveRequest"/>
> >
> >
> > Regards,
> >
> > Charles Moulliard
> > Senior Enterprise Architect
> > Apache Camel Committer
> >
> > *****************************
> > blog : http://cmoulliard.blogspot.com
> >
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>

Re: Can I call umarshall/marshall process/endpoint from a camel bean ?

Posted by Claus Ibsen <cl...@gmail.com>.
Hi
The Data Format abstraction in Camel is a thin layer. So you could create
your own POJO layer you can invoke.
And in the impl of the POJO layer you more or less do the same as Camel
does, but without the Exchange as parameter.



On Thu, Jun 18, 2009 at 9:58 AM, Charles Moulliard <cm...@gmail.com>wrote:

> Hi,
>
> I would like to know if it is possible for a camel bean to call an
> unmarshall/marshall endpoint/process (I don't know if it must be
> considerate
> as an endpoint or process) from a Camel bean ?
>
> In a normal routing, we call unmarshall/marshall like this :
>
>  <route>
>    <from uri="direct:start"/>
>    <marshal ref="myJaxb"/>
>    <to uri="direct:marshalled"/>
>  </route>
>
> What I would like to do is to declare marshal/unmarshal in a spring
> DSL file (if it possible) and call it inside a bean ?
> Why, because the payload to be marshalled/unmarshalled is part of an
> object and I would like to keep this object during the pipeline route.
>
> ex
>
> <from uri=file://temp/data/>
> <convertBodyTo type="java.io.String"/>
> <bean ref="ServiceHelper" method="createRequest" /> // The Request
> object is an object used by Hibernate and will contain the content of
> the file. So this object cannot be unmarshalled/marshalled by its
> content well
> <bean ref="ServiceHelper" method="parseRequest" /> // Method who will
> call the unmarshall/marshall endpoint / process defined in Spring DSL
> file. This method send the string content to the endpoint
> who will unmarshall by example the content into a collection of
> Objects. The result is saved into the object Request
> <bean ref=ServiceHelper" method="saveRequest"/>
>
> because it is not possible to do this without loosing the Request object
>
> <from uri=file://temp/data/>
> <convertBodyTo type="java.io.String"/>
> <bean ref="ServiceHelper" method="createRequest" />
> <unmarshall ref="csbBindyDataFormat"/>
> <bean ref=ServiceHelper" method="saveRequest"/>
>
>
> Regards,
>
> Charles Moulliard
> Senior Enterprise Architect
> Apache Camel Committer
>
> *****************************
> blog : http://cmoulliard.blogspot.com
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus