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

Reply via email to