Я пытаюсь адаптировать библиотеку для использования в собственном режиме Quarkus. Так как он требует много размышлений, мне нужно вручную зарегистрировать все реализации определенных интерфейсов.
То, что я сделал до сих пор и что, кажется, отлично работает для пользовательского кода:
private static void registerAllImplementations(CombinedIndexBuildItem combinedIndexBuildItem,
BuildProducer<ReflectiveHierarchyBuildItem> reflectiveHierarchyClass,
Class<?>... classNames) {
for (Class<?> klass : classNames) {
combinedIndexBuildItem.getIndex().getAllKnownImplementors(DotName.createSimple(klass.getName())).stream()
.map(ci -> new ReflectiveHierarchyBuildItem(Type.create(ci.name(), Type.Kind.CLASS)))
.forEach(reflectiveHierarchyClass::produce);
}
}
Однако нижеприведенная строка не учитывает разработчиков, исходящих от внешних jar-файлов:
combinedIndexBuildItem.getIndex().getAllKnownImplementors(...)
Это не трагедия, но было бы гораздо более перспективным, если бы не нужно было обращать внимание на внутренности некоторого внешнего jar-файла и убедитесь, что все соответствующие реализации зарегистрированы вручную.
У вас есть какие-либо подсказки?