В Avro IDL, как я могу импортировать предоставленную извне схему? - PullRequest
0 голосов
/ 22 мая 2018

Простой пример иллюстрирует мою проблему.

По сути, я работаю над большим проектом, в котором код разделен на несколько репозиториев.В репо 1 есть схема Avro "S1", определенная в файле .avdl, который компилируется в его сгенерированный класс Avro.

В репо 2, который использует скомпилированные артефакты репо 1 в качестве зависимостей, мне нужносоздать новую схему, которая имеет несколько записей, а также необходимо внедрить схему «S1» репо 1.

В репо 2 у меня есть файл IDL, в котором есть все схемы репо 2, но я не могу найтинет способа включить схему репо 1 в этот IDL.Я не могу импортировать его, поскольку в репо 2 у меня нет доступа к файлу схемы в репо 1. У меня есть доступ к сгенерированному классу Avro из репо 1, но, похоже, IDL не поддерживает способ ссылаться на это.

Как я могу это сделать?Если это невозможно в IDL, как бы я сделал это в JSON?- Спасибо!

1 Ответ

0 голосов
/ 06 июня 2018

Оператор импорта Avro IDL сначала ищет именованный файл относительно входного файла.Но если это не удается, он выглядит на Java classpath.Таким образом, если файл jar из репо 1 содержит файл IDL, то файл IDL в репо 2 должен иметь возможность импортировать его по его пути в файле jar.

https://github.com/apache/avro/blob/master/lang/java/compiler/src/main/javacc/org/apache/avro/compiler/idl/idl.jj#L153

Это не представляется документально подтвержденным.Дайте мне знать, если это работает для вас.

...