SnakeYAML полиморфия - PullRequest
       9

SnakeYAML полиморфия

0 голосов
/ 26 февраля 2019

Я хочу проанализировать Docker-compose.yml с помощью SnakeYAML (или другого анализатора).Проблема, с которой я сталкиваюсь, связана с атрибутами, которые могут быть как String, так и более сложными объектами, такими как configs , которые поддерживают «короткий» синтаксис и «длинный» синтаксис:

short

version: "3.3"
services:
  redis:
    image: redis:latest
    deploy:
      replicas: 1
    configs:
      - my_config
      - my_other_config
configs:
  my_config:
    file: ./my_config.txt
  my_other_config:
    external: true

long

version: "3.3"
services:
  redis:
    image: redis:latest
    deploy:
      replicas: 1
    configs:
      - source: my_config
        target: /redis_config
        uid: '103'
        gid: '103'
        mode: 0440
configs:
  my_config:
    file: ./my_config.txt
  my_other_config:
    external: true

Как я могу сопоставить это с SnakeYAML?В настоящее время я создал Java Beans для моделирования различных элементов и настройки конфигурации как List<String>, но это, очевидно, работает только для краткого синтаксиса.

1 Ответ

0 голосов
/ 21 марта 2019

Если SnakeYaml встречает String, где он ожидает десериализацию объекта, он ищет конструктор с аргументом String.

Так что в этом примере достаточно определить JavaBean для длинного синтаксиса config, а затем добавьте конструктор к тому, который принимает короткий синтаксис в качестве аргумента.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...