You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Willem Jiang (JIRA)" <ji...@apache.org> on 2014/05/06 08:59:15 UTC

[jira] [Commented] (CAMEL-7415) lazyLoad with CSV blows up on last line

    [ https://issues.apache.org/jira/browse/CAMEL-7415?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13990360#comment-13990360 ] 

Willem Jiang commented on CAMEL-7415:
-------------------------------------

This issue is caused by the UnmarshalProcessor always wants to close the inputstream even the marshalled object is iterator.
The input stream can be closed by the iterator, so leave the input stream if the result object is iterator solve the issue.

> lazyLoad with CSV blows up on last line
> ---------------------------------------
>
>                 Key: CAMEL-7415
>                 URL: https://issues.apache.org/jira/browse/CAMEL-7415
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-csv
>    Affects Versions: 2.12.3, 2.13.0
>            Reporter: Willem Jiang
>            Assignee: Willem Jiang
>             Fix For: 2.12.4, 2.13.1
>
>
> {code}
> CsvDataFormat csv = new CsvDataFormat() 
> csv.setDelimiter(' ') 
> csv.setSkipFirstLine(false) 
> csv.setLazyLoad(true) 
> CamelContext camelContext = new DefaultCamelContext() 
> camelContext.addRoutes(new RouteBuilder() { 
> def void configure() { 
> from('direct:start') 
> .unmarshal(csv) 
> .split(body()).streaming() 
> .log('row: ${body}') 
> } 
> }) 
> camelContext.start() 
> ProducerTemplate t = camelContext.createProducerTemplate() 
> t.sendBody('direct:start', new File('/Users/timbo/data/test.txt')) 
> camelContext.stop() 
> {code}
> Here is the exception when camel try to access the last line of the file.
> {code}
> java.lang.IllegalStateException: java.io.IOException: Stream closed 
> at 
> org.apache.camel.dataformat.csv.CsvIterator.next(CsvIterator.java:61) 
> at 
> org.apache.camel.processor.Splitter$SplitterIterable$1.next(Splitter.java:170) 
> at 
> org.apache.camel.processor.Splitter$SplitterIterable$1.next(Splitter.java:146) 
> at 
> org.apache.camel.processor.MulticastProcessor.doProcessSequential(MulticastProcessor.java:502) 
> {code}



--
This message was sent by Atlassian JIRA
(v6.2#6252)