Hi Charles, I've created the requested ticket: https://issues.apache.org/jira/browse/CAMEL-7862 Thank you in advance. I've implemented the onException() method already to log and handle other occurring exceptions in that route. Therefore I'd like to avoid the IllegalArgumentException if possible.
@Claus, Thank you for your suggestions. I will test them. -----Ursprüngliche Nachricht----- Gesendet: Wednesday, 24 September 2014 um 19:18:06 Uhr Von: "Charles Moulliard" <[email protected]> An: [email protected] Betreff: Re: Why does Bindy prohibit empty files? Hi, We could certainly improve Bindy and implements what you suggest. Could you please raise a ticket concerning your request ? Until now, I suggest that you add a onException() to handle the exception throws by Bindy when the data stream is empty Regards, On Wed, Sep 24, 2014 at 5:36 PM, <[email protected]> wrote: > Prolog: Camel Bindy will throw an IllegalArgumentException if the current > InputStream doesn't contain any data (see > https://fisheye6.atlassian.com/browse/camel-git/components/camel-bindy/src/main/java/org/apache/camel/dataformat/bindy/csv/BindyCsvDataFormat.java?hb=true > at line 174 and 200). > > I have the following scenario: > An external program provides my program with csv files containing some > data. My program grabs that data, fills in missing entries and writes > everything to a storage. If the external program provides an empty file to > signalize no new data, my program should still fill the missing data, > because now every expected entry is missing. > Currently I bypassed the exception of the unmarshal process with a choice > and an expression to check the file length which is kind of unpleasant. > .choice().when(simple("${body.length} == 0")) > .setBody(constant(ImmutableList.of())) > .otherwise() > .unmarshal(format) > .... > > I know it is a good idea to check if any data is available at that stream, > but why should that method throw an Exception instead of return an empty > collection? The calling method could handle that if it wants to. Or if it > is mandatory that the Exception gets thrown in the unmarshal method, then > an additional annotation would be great to explicitly allow empty files to > be parsed (and get an empty collection in return). Something like > @CsvRecord(allowEmptyFiles = true). > > Thanks in advance for any feedback. > -- Charles Moulliard Apache Committer / Architect @RedHat Twitter : @cmoulliard | Blog : http://cmoulliard.github.io
