camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Claus Ibsen <claus.ib...@gmail.com>
Subject Re: Camel Bindy - Issues with returntype
Date Thu, 17 Apr 2014 23:42:41 GMT
Hi

Bindy does not support mapping to java.util.Map. The idea is that you
may from flatfile/csv to POJOs, where you annotate the POJOs with how
to map.

Maybe take a look at some of the other csv components/data formats,
such as beanio, csv, flatpack

You can see the list here
http://camel.apache.org/data-format.html

On Wed, Apr 16, 2014 at 11:00 PM, contactreji <contactreji@gmail.com> wrote:
> Hi
>
> I am trying to parse some CSV data. Camel Bindy component seems to be doing
> its job well.
> When I am taking the data to a processor to access each Object separately
> and do the processing, I see that  Bindy returns a List and the List
> contains a Hashmap!!
>
> Is there a way to configure Bindy to return a list of Java Objects instead
> of Hashmap?
>
> I did a debug and the screenshot attached. In the debug view, we see that
> exchange->in contains a HashMap.
>
> Can you suggest how can i retrieve the data? If its HashMap, what would be
> the keys to retrieve the value?
>
> <http://camel.465427.n5.nabble.com/file/n5750340/Bindy.jpg>
>
>
>
> My Camel Code is
>
> *
> <beans xmlns="http://www.springframework.org/schema/beans"
>         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
> xmlns:amq="http://activemq.apache.org/schema/core"
>         xsi:schemaLocation="
>        http://www.springframework.org/schema/beans
> http://www.springframework.org/schema/beans/spring-beans.xsd
>        http://camel.apache.org/schema/spring
> http://camel.apache.org/schema/spring/camel-spring.xsd
>        http://activemq.apache.org/schema/core
> http://activemq.apache.org/schema/core/activemq-core.xsd">
>
>
>
>         <bean id="bindyDataformat"
>                 class="org.apache.camel.dataformat.bindy.csv.BindyCsvDataFormat">
>                 <constructor-arg value="com.poc.camel.csv.java.bindy" />
>         </bean>
>
>         <bean id="csv" class="com.poc.camel.csv.java.bindy.HandleOrderBean" />
>
>         <camelContext xmlns="http://camel.apache.org/schema/spring">
>
>                 <dataFormats>
>                         <jaxb id="myJaxb" prettyPrint="true"
> contextPath="com.poc.camel.csv.java.bindy" />
>                 </dataFormats>
>
>
>
>                   <route streamCache="true">
>             <from uri="file://C:/Users/Mathews/Desktop/in" />
>             <unmarshal ref="bindyDataformat" />
>             <to uri="bean:csv" />
>
>         </route>
>
>         <route>
>             <from uri="seda:queue:in" />
>             <to uri="log:reached route 2"/>
>             <marshal ref="myJaxb" />
>             <to uri="file://C:/Users/Mathews/Desktop/out" />
>         </route>
>
>         </camelContext>
>
> </beans>
>
>
> *
>
>
> And Java code is
>
> *
> package com.poc.camel.csv.java.bindy;
>
> import java.util.ArrayList;
> import java.util.HashMap;
> import java.util.List;
> import java.util.Map;
>
> import org.apache.camel.Exchange;
> import org.apache.camel.Processor;
>
> public class HandleOrderBean implements Processor {
>
>
>         @SuppressWarnings("unchecked")
>         @Override
>         public void process(Exchange exchange) throws Exception {
>                 // TODO Auto-generated method stub
>
>                 List list=new ArrayList<Result>();
>
>
>                 list = (List) exchange.getIn().getBody();
>
>
>                 System.out.println("Wanna convert things into XML now");
>
>                 System.out.println("Wanna convert things into XML now");
>                 /*list.toString();*/
>
>                 }
>
>
>
>
>         }
>
>
> *
>
>
> and My POJO class is
>
> package com.poc.camel.csv.java.bindy;
>
> import java.io.Serializable;
>
> import javax.xml.bind.annotation.XmlRootElement;
> import org.apache.camel.dataformat.bindy.annotation.CsvRecord;
> import org.apache.camel.dataformat.bindy.annotation.DataField;
>
> @XmlRootElement
> @CsvRecord(separator = ",",crlf="WINDOWS",generateHeaderColumns=false)
> public class Result implements Serializable{
>
>     @DataField(pos = 1)
>     private String firstName;
>
>     @DataField(pos = 2)
>     private String lastName;
>
>     @DataField(pos = 3)
>     private String rollNo;
>
>     @DataField(pos = 4)
>     private String result;
>
>         public String getFirstName() {
>                 return firstName;
>         }
>
>         public void setFirstName(String firstName) {
>                 this.firstName = firstName;
>         }
>
>         public String getLastName() {
>                 return lastName;
>         }
>
>         public void setLastName(String lastName) {
>                 this.lastName = lastName;
>         }
>
>         public String getRollNo() {
>                 return rollNo;
>         }
>
>         public void setRollNo(String rollNo) {
>                 this.rollNo = rollNo;
>         }
>
>         public String getResult() {
>                 return result;
>         }
>
>         public void setResult(String result) {
>                 this.result = result;
>         }
>
>
>
> }
>
>
>
> --
> View this message in context: http://camel.465427.n5.nabble.com/Camel-Bindy-Issues-with-returntype-tp5750340.html
> Sent from the Camel - Users mailing list archive at Nabble.com.



-- 
Claus Ibsen
-----------------
Red Hat, Inc.
Email: cibsen@redhat.com
Twitter: davsclaus
Blog: http://davsclaus.com
Author of Camel in Action: http://www.manning.com/ibsen
hawtio: http://hawt.io/
fabric8: http://fabric8.io/

Mime
View raw message