Thanks Claus. I do believe that the "PredicateBuilder.toPredicate" method I use does take an expression as a parameter and returns a Predicate. Which method should I have used?
/Bengt 2013/8/15 Claus Ibsen <[email protected]> > 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 >
