Чтение содержимого файла, содержащего пары ключ-значение, без обычного синтаксического анализа

Мой сценарий состоит в том, чтобы прочитать файл из конечной точки файла, которая содержит только значения ключа, такие как файл свойств, и взять из него несколько данных на основе ключа.

Любая идея, как сделать их другими, используя пользовательский компонент bean или java.

Я хотел бы знать, возможно ли это каким-либо образом в Mule или Camel.

Заранее спасибо.


person Naveen Raj    schedule 20.03.2014    source источник


Ответы (2)


Если вы хотите использовать маршрут Camel для загрузки файлов, то что-то вроде этого

from("file:inbox")
   .convertBodyTo(Properties.class)
   .log("The foo value is {${body[foo]}")
   .log("The bar value is {${body[bar]}")

Затем нам нужен преобразователь типов из java.io.File -> java.util.Properties. Который мы могли бы добавить в camel-core из коробки.

Я зарегистрировал билет, чтобы добавить этот конвертер типов из коробки в Camel: https://issues.apache.org/jira/browse/CAMEL-7312

person Claus Ibsen    schedule 20.03.2014
comment
К этому еще один вопрос. Могу ли я использовать то же самое, если входящая конечная точка является очередью/темой? - person Naveen Raj; 20.03.2014
comment
Свойства могут загружаться только из File/InputStream/Reader, поэтому вам нужно будет сделать 2x convertyBodyTo, например, convertBodyTo(InputStream.class), а затем в Properties.class - person Claus Ibsen; 20.03.2014
comment
Спасибо, Клаус Ибсен - person Naveen Raj; 20.03.2014
comment
@ Клаус: я преобразовал, как вы сказали (для сценария Queue, где я получаю строку) 1. ‹convertBodyTo type=java.io.InputStream› и 2. ‹convertBodyTo type=java.util.Properties›. Первый дает ByteArrayInputStream, и я получаю сообщение об ошибке, например, не могу преобразовать из ByteArrayInputStream в Properties. Есть идеи? - person Naveen Raj; 26.03.2014
comment
Да, вам нужно дождаться следующего выпуска Camel или создать конвертер типов самостоятельно. - person Claus Ibsen; 26.03.2014
comment
Я думал, что это уже было, и только сейчас я получил ваш ответ. Спасибо за ваш ответ, я буду работать над пользовательским конвертером. - person Naveen Raj; 26.03.2014

Я думаю, что для объяснения этой проблемы очень простым решением является использование класса java.util.Properties. Загрузите файл с помощью класса Properties, который поддерживает только пару значений ключа.

person Saurabh Arora    schedule 20.03.2014