HI

I'm converting a route from Camel 2.25.0 Spring Boot to latest Quarkus.
The route parses a CSV file, splits it and use either headers if exist or 
creates headers if not, sends it to a bean for further processing ending up as 
amessage in a JMS.

This was working fine but now when I run it in Quarkus I receive the following 
Exception:

Caused by: java.lang.IllegalArgumentException: Could not find a suitable setter 
for property: header as there isn't a setter method with same type: 
java.lang.String nor type conversion possible: No type converter available to 
convert from type: java.lang.String to the required type: java.lang.String[] 
with value [status, trade_date, sec_settle_date, fund_name, client_account, 
trade_reference, uti, broker_id, security_code, isin, fee, quantity, currency, 
market_price, loan_value, trade_time, trade_venue]

Route:

from(seda("textImporter"))

.description("DATA-IMPORTER-TEXT",

"Imports data from text files such as .txt, .csv, .tab",

"en")

.toD("dataformat:csv:unmarshal?delimiter=${header.FileSplitter}&useOrderedMaps=${header.UseHeader}")

.split()

.body()

.streaming()

.parallelProcessing(false)

.process(exchange -> {

final Message in = exchange.getIn();

final Map<String, Object> body = new LinkedHashMap<>();

if (!in.getHeader("UseHeader", Boolean.class)) {

final List list = in.getBody(List.class);

IntStream.range(0, list.size())

.forEach(i -> body.put(i + "", list.get(i)));

} else {

body.putAll(in.getBody(Map.class));

}

final Set<String> headers = body.keySet();

in.setHeader("ColumnNames", new ArrayList<>(headers));

final String idPath = in.getHeader("IdPath", String.class);

in.setHeader("InternalReference", body.get(idPath));

final List<Map<String, Object>> newList = new ArrayList<>(Set.of(body));

in.setBody(newList, List.class);

})

.toD("dataformat:csv:marshal?header=${header.ColumnNames}")

.convertBodyTo(String.class)

.log(LoggingLevel.DEBUG, "${body}")

.bean(XSDMapping.class, "create")

.marshal(jaxbDataFormat)

.convertBodyTo(String.class)

.to("{{jms.queue.outgoing}}")

.to(log("FILE-IMPORTER-TEXT").level("DEBUG")

.groupInterval(5000L)

.groupActiveOnly(true))

.choice()

.when(simple("${header.CamelSplitComplete} == true"))

.log("Number of records split: ${header.CamelSplitSize}")

.log("Importing complete: ${header.CamelFileName}")

.endChoice()

.end();

Using Quarkus 2.2.3.Final on Java 11, Camel 3.11.1

/M

Reply via email to