Camel: пропуск нескольких строк заголовка в файле фиксированной длины возвращает ссылку на объект итератора - PullRequest
1 голос
/ 19 июня 2019

Предисловие вопрос это именно то, что я ищу.Единственная разница в том, что я использую файл фиксированной длины.

Моя проблема в том, что я использую этот метод, и мне кажется, что возвращается объект Iterator, а не файл с удаленным заголовком с 3 линиями.

Маршрут Camel должен использовать файл .txt, удалить первые 3 строки и затем отправить результат в конечную точку файла.

Я пробовал разные варианты простого языка, но безрезультатно.Я не могу найти какой-либо конкретный случай в книге, документации или онлайн.

См. Мой верблюжий маршрут ниже

    from(inputFilePath).routeId("MyRoute")
            .streamCaching()
            .threads(threadPoolSize)
            .log("${headers.CamelFileName}: Unmarshalling to Java POJO")
            .log("${body} Body Before Transform")
            .convertBodyTo(String.class)
            .transform().simple("skip(3)")
            .log("${body} Body After Transform")
            .to(outputFilePath)

Я ожидаю, что файл .txt будет возвращен с первыми 3убраны строки и остальная часть структуры не будет изменена.

Вместо этого я получаю ссылку на объект итератора -> 2019-06-19 14:55:30.497 INFO 2868 --- [ad #2 - Threads] MyRoute : org.apache.camel.util.SkipIterator@4d894ea5 Body After Transform

Любая помощь или предложения будут с благодарностью!

1 Ответ

2 голосов
/ 20 июня 2019

Простая функция skip(n) предназначена для пропуска n предметов в List, но ваше тело String. Вам нужно получить List<String> строк ( Tokenize language ), чтобы использовать его.

Чтобы присоединиться к этому списку обратно к String, вы можете использовать, например, EIP Bean для вызова org.apache.commons.lang3.StringUtils.

from(inputFilePath)
        .transform(body().tokenize("\n"))
        .transform(simple("${skip(3)}"))
        .bean(StringUtils.class, "join(${body}, '\n')")
        .to(outputFilePath);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...