SFTPOutboundGateway - использование команды ls для вывода списка файлов вместе с выражением фильтра списка файлов - PullRequest
0 голосов
/ 07 января 2020

Я пишу sftpoutboundgateway для вывода списка файлов с удаленного сервера, в то же время хочу передать выражение в setFilter, которое динамически оценивается во время выполнения с использованием выражений SpEL. Идея состоит в том, чтобы использовать один и тот же сервис-активатор для составления списка файлов по нескольким путям и использования разных параметров фильтра файлов. Мой метод шлюза принимает несколько аргументов - см. Код

@Gateway(requestChannel = "sftplistchannel")
@Payload("T(java.util.Arrays).asList(#args[0],#args[1])")
List<SftpFileInfo> list(String directory, String fileFilterExprsn);

Что-то вроде ниже - обратите внимание, что моя полезная нагрузка на самом деле List {'remote-directory-name', 'filter-exprssion'}

Теперь я хочу передать полезную нагрузку [0] в качестве пути к удаленному каталогу и

полезную нагрузку [1] в качестве фильтра- бывшее выражение.

   SftpOutboundGateway listGw = new SftpOutboundGateway(sftpSessionFactory(), AbstractRemoteFileOutboundGateway.Command.LS.getCommand(), PARSER.parseExpression("payload[0]").getExpressionString());
listGw.setFilter(new SftpSimplePatternFileListFilter(PARSER.parseExpression("payload[1]").getExpressionString()));
...