You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@camel.apache.org by llecaroz <lo...@sap.com> on 2009/10/21 18:52:47 UTC
Re: How to save a select result from camel-sql componnent to xml (
No type converter available to convert from type: java.util.ArrayList
issue )
Claus Ibsen-2 wrote:
>
>
> You can use Java code to transform the payload into a more appropriate
> format.
>
> You can use a org.apache.camel.Processor or POJO
>
> <camel:processRef ref="myTransformProcessor"/>
> <camel:to uri="file://target/data"/>
>
> <bean id="myTransformProcessor"
> class="com.mycompany.MyTransformProcessor"/>
>
> public class MyTransformProcessor implements Processor {
> ...
> List data = exchange.getIn().getBody(List.class);
> // use regular java code to transform to a better form
> exchange.getIn().setBody(betterBody);
> }
>
>
>
> See more at the Message Translator EIP
> http://camel.apache.org/message-translator.html
>
> The SQL component returns raw data in a List that is like the sql
> ResultSet.
> You gotta transform that manually to something else using Java code.
>
> Or use some ORM that can map from the database to POJO classes which
> are easier to marshal to XML using camel-xstream or JAXB annotations
> etc.
>
>
>
Hello Claus, firt, I would like to thank you for your answer.
That's a little bit sad :( regarding the power of the sql camel component.
At this time due to the constraint of implementing a translator EIP, it is
easier for me in my project to call a bean method with the camel-bean
"bean:" uri & to give the sql parameter as parameter !
Why ? because as I use Hibernate
-I added jpa+jaxb annotations on the same class, by the way,
-When I execute the sql request, it returns a list of entity,
-I just have next to add the sql results returned in a list of entities in a
xml root/parent element, & finally,
-to simply returns the parent node which contains the entities !
So in term of code it is (from my personnal point of view of sure &
preferences & as I already write this code as workaround), easier to do as
this instead of having the sql result being stored in the inbody of the
camel message to be converted & next to be returned. for sure, it the
converter type is really interesting in term of re-usability in multiple
workflows...
But I feel that lot of users (me ;) ), would like to use the caml-sql "sql:"
component & next would like to work directly on the result by using the
"split" or choice, or other camel components. It would be also really
interesting to have the camel-sql being able as enhencement request to
automatically map the result in a parent xml node (something like sql:select
from table?dataSourceRef=mydataSource&parentJaxbElement=org.sample.user) :
<user>
<phone>1</phone2>
<phone>2</phone2>
</user>
So the phone & user class implementations contains @XMLRootElement & also
@Entity annotations.
Just imagine the power of having a camel-sql returning an "understandable"
format by other camel componnent like "split" or choice with xpath, ect...
I hope that I was able to give a clear feedback on my attended/wanted usage
of the camel sql component & why in my situation it is simple to use a bean,
returning sql results in a jaxb/jpa annotated member of an annoated jaxb
class.
But I would like to really thank you as your contribution in this discussion
really helped me to do the good choice on my project.
Regards
Louis
--
View this message in context: http://www.nabble.com/How-to-save-a-select-result-from-camel-sql-componnent-to-xml-%28-No-type-converter-available-to-convert-from-type%3A-java.util.ArrayList-issue-%29-tp25927249p25996212.html
Sent from the Camel - Users mailing list archive at Nabble.com.
Re: How to save a select result from camel-sql componnent to xml ( No
type converter available to convert from type: java.util.ArrayList issue )
Posted by Claus Ibsen <cl...@gmail.com>.
Hi
Long post :)
Camel is not going into the ORM world. That is left for Hibernate,
JPA, iBatis (is a sql mapper) etc.
Camel adheres much to the NIH principle and instead leverage the best
of bread frameworks.
For SQL stuff the camel SQL component is a very simple component for
executing queries and getting the result back as a kind of ResultSet.
If you want the other stuff then look at Hibernate, JPA and whatnot.
On Wed, Oct 21, 2009 at 6:52 PM, llecaroz <lo...@sap.com> wrote:
>
>
>
> Claus Ibsen-2 wrote:
>>
>>
>> You can use Java code to transform the payload into a more appropriate
>> format.
>>
>> You can use a org.apache.camel.Processor or POJO
>>
>> <camel:processRef ref="myTransformProcessor"/>
>> <camel:to uri="file://target/data"/>
>>
>> <bean id="myTransformProcessor"
>> class="com.mycompany.MyTransformProcessor"/>
>>
>> public class MyTransformProcessor implements Processor {
>> ...
>> List data = exchange.getIn().getBody(List.class);
>> // use regular java code to transform to a better form
>> exchange.getIn().setBody(betterBody);
>> }
>>
>>
>>
>> See more at the Message Translator EIP
>> http://camel.apache.org/message-translator.html
>>
>> The SQL component returns raw data in a List that is like the sql
>> ResultSet.
>> You gotta transform that manually to something else using Java code.
>>
>> Or use some ORM that can map from the database to POJO classes which
>> are easier to marshal to XML using camel-xstream or JAXB annotations
>> etc.
>>
>>
>>
> Hello Claus, firt, I would like to thank you for your answer.
> That's a little bit sad :( regarding the power of the sql camel component.
> At this time due to the constraint of implementing a translator EIP, it is
> easier for me in my project to call a bean method with the camel-bean
> "bean:" uri & to give the sql parameter as parameter !
> Why ? because as I use Hibernate
> -I added jpa+jaxb annotations on the same class, by the way,
> -When I execute the sql request, it returns a list of entity,
> -I just have next to add the sql results returned in a list of entities in a
> xml root/parent element, & finally,
> -to simply returns the parent node which contains the entities !
>
> So in term of code it is (from my personnal point of view of sure &
> preferences & as I already write this code as workaround), easier to do as
> this instead of having the sql result being stored in the inbody of the
> camel message to be converted & next to be returned. for sure, it the
> converter type is really interesting in term of re-usability in multiple
> workflows...
>
> But I feel that lot of users (me ;) ), would like to use the caml-sql "sql:"
> component & next would like to work directly on the result by using the
> "split" or choice, or other camel components. It would be also really
> interesting to have the camel-sql being able as enhencement request to
> automatically map the result in a parent xml node (something like sql:select
> from table?dataSourceRef=mydataSource&parentJaxbElement=org.sample.user) :
>
> <user>
> <phone>1</phone2>
> <phone>2</phone2>
> </user>
>
> So the phone & user class implementations contains @XMLRootElement & also
> @Entity annotations.
>
> Just imagine the power of having a camel-sql returning an "understandable"
> format by other camel componnent like "split" or choice with xpath, ect...
>
> I hope that I was able to give a clear feedback on my attended/wanted usage
> of the camel sql component & why in my situation it is simple to use a bean,
> returning sql results in a jaxb/jpa annotated member of an annoated jaxb
> class.
>
> But I would like to really thank you as your contribution in this discussion
> really helped me to do the good choice on my project.
>
> Regards
> Louis
> --
> View this message in context: http://www.nabble.com/How-to-save-a-select-result-from-camel-sql-componnent-to-xml-%28-No-type-converter-available-to-convert-from-type%3A-java.util.ArrayList-issue-%29-tp25927249p25996212.html
> Sent from the Camel - Users mailing list archive at Nabble.com.
>
>
--
Claus Ibsen
Apache Camel Committer
Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus