Hi This is because you use the simple language "wrong" as you create an expression, and NOT a predicate.
I have logged a ticket to improve on this, so you have static methods to easily create a predicate https://issues.apache.org/jira/browse/CAMEL-6639 On Thu, Aug 15, 2013 at 9:49 AM, Bengt Rodehav <[email protected]> wrote: > My original code that has been working for 2-3 years looks like this: > > *Predicate emptyFile = > PredicateBuilder.toPredicate(SimpleLanguage.simple("${file:length} == 0")); > > interceptFrom().when(emptyFile).setHeader("recipient").simple("file://${file:parent}/skipped/${date:now:yyyyMMdd}").recipientList(header("recipient")).stop(); > * > > For some reason, when using Camel 2.11.0, the above code causes all files > to be skipped (even the non-empty ones). I have found another way of doing > this that works with Camel 2.11.0. It looks as follows: > > * > interceptFrom().when(header("CamelFileLength").isEqualTo(0)).setHeader("recipient").simple("file://${file:parent}/skipped/${date:now:yyyyMMdd}").recipientList(header("recipient")).stop(); > * > > I'm not sure what is happening. Since I have a workaround I'm OK but it > seems like the behaviour of the SimpleLanguage has changed somehow. Could > be a bug or at least something worth documenting. > > Any thoughts? > > /Bengt > > > > > > 2013/8/14 Bengt Rodehav <[email protected]> > >> Thanks for the tip. It would probably be good enough although I also want >> to move the empty files to a dedicated directory to clearly show what took >> place. >> >> Do you know f the syntax for checking the file length has changed in >> Simple language (or rather File language)? Looking at the documentation I >> can't see that I'm doing anything wrong. >> >> /Bengt >> >> >> 2013/8/14 Claus Ibsen <[email protected]> >> >>> See also the readLockMinLength option >>> >>> On Wed, Aug 14, 2013 at 4:26 PM, Bengt Rodehav <[email protected]> wrote: >>> > I have recently upgraded Camel to version 2.11.0. In my file transfer >>> > services I have used a predicate together with interceptors to avoid >>> > transferring empty files but instead move them into a subfolder called >>> > "skipped". However, this has stopped working. My predicate looks like >>> this: >>> > >>> > *Predicate emptyFile = >>> > PredicateBuilder.toPredicate(SimpleLanguage.simple("${file:length} == >>> 0")); >>> > * >>> > >>> > I'm not exactly sure in what version this functionality broke but I'm >>> sure >>> > it worked in version 2.7.1. >>> > >>> > Is there a better way to do this in Camel 2.11.0? >>> > >>> > /Bengt >>> >>> >>> >>> -- >>> Claus Ibsen >>> ----------------- >>> Red Hat, Inc. >>> Email: [email protected] >>> Twitter: davsclaus >>> Blog: http://davsclaus.com >>> Author of Camel in Action: http://www.manning.com/ibsen >>> >> >> -- Claus Ibsen ----------------- Red Hat, Inc. Email: [email protected] Twitter: davsclaus Blog: http://davsclaus.com Author of Camel in Action: http://www.manning.com/ibsen
