Hi,

We are working with apache camel for past 4 months. Here, we unmarshal a csv 
file and perform some operation with that data.

The problem we are facing now is, while unmarshalling a csv file we are getting 
a particular column with nested double quotes value. Due to that, the csv file 
parsing fails and throws exception.


The piece of code to unmarshal csv is,

[cid:417c1e38-de27-49dd-9ed1-c4e07c05259f]

Our csv data look like below,

[cid:f71aab81-b854-42b2-9d98-86666a8304aa]

The unexpected data that we receive,

[cid:4e0965b6-3bfb-47c1-9615-e950134253f4]

The Data "lastname "5"" has nested double quotes. The data cannot be changed 
since we receive it from client feed.


The exception we are getting while unmarshalling the csv file is attached with 
this mail.


Kindly respond us as soon as possible.

Thanks in advance.


Regards,

Priyadharshini S.





This message was secured by Zix(R).
CaughtExceptionType: java.lang.IllegalStateException, CaughtExceptionMessage: 
IOException reading next record: java.io.IOException: (line 1) invalid char 
between encapsulated token and delimiter, StackTrace: 
java.lang.IllegalStateException: IOException reading next record: 
java.io.IOException: (line 1) invalid char between encapsulated token and 
delimiter
        at org.apache.commons.csv.CSVParser$1.getNextRecord(CSVParser.java:530)
        at org.apache.commons.csv.CSVParser$1.hasNext(CSVParser.java:540)
        at 
org.apache.camel.dataformat.csv.CsvUnmarshaller$BulkCsvUnmarshaller.asList(CsvUnmarshaller.java:105)
        at 
org.apache.camel.dataformat.csv.CsvUnmarshaller$BulkCsvUnmarshaller.unmarshal(CsvUnmarshaller.java:97)
        at 
org.apache.camel.dataformat.csv.CsvDataFormat.unmarshal(CsvDataFormat.java:90)
        at 
org.apache.camel.processor.UnmarshalProcessor.process(UnmarshalProcessor.java:69)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
        at 
org.apache.camel.processor.TryProcessor.process(TryProcessor.java:113)
        at org.apache.camel.processor.TryProcessor.process(TryProcessor.java:84)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at 
org.apache.camel.component.direct.DirectBlockingProducer.process(DirectBlockingProducer.java:53)
        at 
org.apache.camel.processor.SendProcessor.process(SendProcessor.java:148)
        at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at 
org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:117)
        at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
        at 
org.apache.camel.processor.ChoiceProcessor.process(ChoiceProcessor.java:117)
        at 
org.apache.camel.processor.RedeliveryErrorHandler.process(RedeliveryErrorHandler.java:548)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:138)
        at org.apache.camel.processor.Pipeline.process(Pipeline.java:101)
        at 
org.apache.camel.processor.CamelInternalProcessor.process(CamelInternalProcessor.java:201)
        at 
org.apache.camel.component.file.GenericFileConsumer.processExchange(GenericFileConsumer.java:454)
        at 
org.apache.camel.component.file.GenericFileConsumer.processBatch(GenericFileConsumer.java:223)
        at 
org.apache.camel.component.file.GenericFileConsumer.poll(GenericFileConsumer.java:187)
        at 
org.apache.camel.impl.ScheduledPollConsumer.doRun(ScheduledPollConsumer.java:174)
        at 
org.apache.camel.impl.ScheduledPollConsumer.run(ScheduledPollConsumer.java:101)
        at 
java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
        at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:308)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$301(ScheduledThreadPoolExecutor.java:180)
        at 
java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:294)
        at 
java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
        at 
java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
        at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException: (line 1) invalid char between encapsulated 
token and delimiter
        at org.apache.commons.csv.Lexer.parseEncapsulatedToken(Lexer.java:281)
        at org.apache.commons.csv.Lexer.nextToken(Lexer.java:158)
        at org.apache.commons.csv.CSVParser.nextRecord(CSVParser.java:586)
        at org.apache.commons.csv.CSVParser$1.getNextRecord(CSVParser.java:527)
        ... 41 more

Reply via email to