Hey !
A new option is available for the stream:file to close it when done
(closeOnDone). This option is appeared in 2.11 after my jira (
https://issues.apache.org/jira/browse/CAMEL-6147)
File unlock (or released or closed) looks to doesn't works fine if last
line is not passed to the endpoint
Example :
We have a CSV with X line. We want to write a part of it in a file
out_1.csv and a second part in a file out_2.csv according to a business
rule, in my example the rule is after two lines readed.
An example is :
from("file://C:/Temp/camel/rep1/?noop=true")
.log("start process file => ${file:name}")
.split()
.tokenize("\n")
.streaming()
.process(new Processor() {
public void process(Exchange exchange) throws Exception {
// After 2 lines, next lines are rejected via an exchange
property
i++ ;
if( i > 2) {
exchange.setProperty("FILE_1", true );
} else {
exchange.setProperty("FILE_1", false);
}
}
})
.choice()
.when(property("FILE_1").isEqualTo(Boolean.TRUE))
.to("stream:file?fileName=C:/Temp/camel/rep1/out/out_1.csv&closeOnDone=true")
.when(property("FILE_2").isEqualTo(Boolean.TRUE))
.to("stream:file?fileName=C:/Temp/camel/rep1/out/out_2.csv&closeOnDone=true")
.end()
.end()
.log("end process file => ${file:name}")
.end()
;
It create two files, and out_1.csv is still locked.
Should I update the jira or open a new ?
Thanks
Jeff