camel-users mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Bengt Rodehav <be...@rodehav.com>
Subject Re: How to check that a file is empty
Date Thu, 15 Aug 2013 07:49:50 GMT
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 <bengt@rodehav.com>

> 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 <claus.ibsen@gmail.com>
>
>> See also the readLockMinLength option
>>
>> On Wed, Aug 14, 2013 at 4:26 PM, Bengt Rodehav <bengt@rodehav.com> 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: cibsen@redhat.com
>> Twitter: davsclaus
>> Blog: http://davsclaus.com
>> Author of Camel in Action: http://www.manning.com/ibsen
>>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message