Hi No you should use the # syntax. See the FromFtpFilterTest.
On Wed, Oct 21, 2020 at 10:00 AM Mikael Andersson Wigander <mikael.andersson.wigan...@pm.me.invalid> wrote: > > We have a running SFTP route using the &filter option to accept files using a > regular expression. This is working fine in Camel 2.25.0. > > Migrating to Camel 3.5.0 it is not working at all. Every file in the > directory is downloaded, disregarding the filter option. > > I can't find any documentation about what might have changed EXCEPT that the > &filter option has changed so that the bean reference should be without the > "#" character prefix. > > Bean definition > ============ > > @Bean > public static StatusFileFilter<String> shuttleStatusFileFilter() { > return new StatusFileFilter<>(); > } > > Class definition > ============ > > @Component > public class StatusFileFilter<T> implements GenericFileFilter<T> { > /** > * The Shuttle file. > */ > @Value("${shuttle.status-filename.regexp}") > private String shuttleFile; > > @Override > public boolean accept(final GenericFile<T> genericFile) { > final long fileLength = genericFile.getFileLength(); > final String fileName = genericFile.getFileName(); > final boolean matches = fileName.matches(shuttleFile); > return (fileLength > 0 && matches); > } > } > > The route: > ======== > > final String fromStatusFilesStr = "{{shuttle.ftp.incoming-status-files.url}}" > + > "&username={{shuttle.ftp.username}}" + > "&password={{shuttle.ftp.password}}" + > "&allowNullBody=false" + > "&filter=shuttleStatusFileFilter" + > "&bridgeErrorHandler=true" + > "&throwExceptionOnConnectFailed=true"; > > from(fromStatusFilesStr) > .to("log:StatusFiles?showHeaders=true&showProperties=true&multiline=true") > .choice() > .when(body().isNotNull()) > .split(bodyAs(String.class).tokenize("\n")) //<.> > .parallelProcessing(true) > .streaming() > .to("{{jms.queue.statefiles}}") > .to("log:StateFiles?level=INFO&groupInterval=10000&groupActiveOnly=true") > .choice() > .when(simple("${header.CamelSplitComplete} == true")) > .log("Number of records split: ${header.CamelSplitSize}") > .log("Importing complete: ${header.CamelFileName}") > .endChoice() > .end(); > > I have tried to log whatever is going on in the bean but no log statements > are present so that's why I think it is not working properly, the bean is not > activated. > > The documentation still points out the hash-char as prefix so that must still > be wrong: > https://camel.apache.org/components/latest/file-component.html#_filter_using_org_apache_camel_component_file_genericfilefilter > > Pls advice what could be wrong and/or point me to some documentation > > Thx > > /M -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2