Я пишу 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()));