I guess that camel has got elegant decision for it
Firstly, define your POJO class as a CSV bindy
@CsvRecord(separator = ",", crlf = "UNIX")
public class Person {
@DataField(pos = 1)
private String name;
@DataField(pos = 2)
private String surname;
@DataField(pos = 3)
private String addresses;
@DataField(pos = 4)
private String phones;
public String getName() {
return name;
}
public String getSurname() {
return surname;
}
public List<String> getAddress() {
return Arrays.asList(addresses.split("\\|"));
}
public List<String> getPhones() {
return Arrays.asList(phones.split("\\|"));
}
}
then you can use it in unmarshalling like this one
<camelContext id="camel" trace="true" xmlns="http://camel.apache.org/schema/spring">
<dataFormats>
<bindy id="bindyDataformat" type="Csv" classType="test.Person"/>
</dataFormats>
<route>
<from uri="file:src/data?noop=true"/>
<unmarshal ref="bindyDataformat"/>
<split>
<simple>body</simple>
<to uri="mock:queue.csv"/>
</split>
</route>
</camelContext>