Как эффективно управлять документами YAML в Java с помощью jacksoon-dataformat-yaml? - PullRequest
0 голосов
/ 10 декабря 2018

Я ищу предложения о том, как повысить эффективность синтеза файлов docker-compose.yml из приложения Java.Я хотел бы изучить возможность использования механизмов стиля Java-привязки для этого (аналогично тому, что JAXB позволяет с XML).

Это должно быть очень распространенным явлением для людей.Тем не менее, я не могу найти описание принципиального и четко определенного подхода для этого.

С XML я бы подал схему XSD в инструмент связывания JAXB, который сгенерирует для меня соответствующую иерархию классов Javaа также [не] маршаллинг кода.Затем я буду заполнять классы Java в памяти и сериализовать их в виде XML-файлов / потоков.

Вот мои вопросы:

  • Существует ли такая концепция, как схема YAML?Поиск в Интернете ведет меня по множеству направлений, ни одно из которых, кажется, не предлагает принципиальной обработки предмета.

  • Кто-нибудь видел опубликованную схему для форматов docker-compose?Нужно ли самому писать один для текстовой спецификации, определенной здесь: (https://docs.docker.com/compose/compose-file/)?

  • Может ли инструмент jackson yaml импортировать схему YAML и сгенерировать иерархию классов Java?

  • Примеры инструмента jackson yaml предполагают, что, когда у меня есть иерархия классов, я могу сам написать код маршаллинга, и это очень просто, но кажется немного более трудоемким, чем то, что было бы использовать маршаллер JAXB.

Будем весьма благодарны за любые предложения по вышеуказанным пунктам.

1 Ответ

0 голосов
/ 27 декабря 2018

Я думаю, что никто не может дать мне хороший ответ, поэтому я решил проблему неоптимальным образом, но все же лучше, чем использование какой-то эвристики:

  1. Я создалпростая XML-схема, содержащая подмножество данных, присутствующих в спецификации YAML docker_compose.Это единственный шаг в моем процессе, который является приближением к реальности, а не полностью правильной реализацией.Схема неполная и включает в себя только то, что мне небезразлично.Я могу расширить его позже, когда буду разрабатывать потребности в дополнительных опциях docker_compose.

  2. Я использую JAXB для установления привязки этой приблизительной модели к иерархии классов Java.

  3. Я программно заполнил классы из этой иерархии данными, а затем использовал плагин jackson yaml, чтобы упорядочить файл docker_compose.yml с нужным мне содержимым.

Этот подходочень неоптимальный, но, кажется, работает.Все еще хотелось бы сделать это лучше, но мне придется согласиться на это приближение в данный момент.Другие предложения приветствуются.

...