in extensions/beanio/deployment/src/main/java/org/apache/camel/quarkus/component/beanio/deployment/BeanioProcessor.java [74:123]
void registerForReflection(
BeanioPropertiesBuildItem beanioProperties,
CombinedIndexBuildItem combinedIndex,
BuildProducer<ReflectiveClassBuildItem> reflectiveClass) {
Properties properties = beanioProperties.getProperties();
Set<String> handlersAndFactories = properties.keySet()
.stream()
.filter(key -> key.toString().contains("Factory") || key.toString().contains("Handler"))
.map(properties::get)
.map(Object::toString)
.collect(Collectors.toUnmodifiableSet());
reflectiveClass.produce(ReflectiveClassBuildItem.builder(handlersAndFactories.toArray(new String[0])).build());
IndexView index = combinedIndex.getIndex();
Set<String> recordParsers = index.getAllKnownImplementors(RecordParserFactory.class)
.stream()
.map(ClassInfo::name)
.map(DotName::toString)
.collect(Collectors.toUnmodifiableSet());
reflectiveClass.produce(ReflectiveClassBuildItem.builder(recordParsers.toArray(new String[0])).methods(true).build());
Set<String> parserConfiguration = index.getKnownClasses()
.stream()
.map(ClassInfo::name)
.map(DotName::toString)
.filter(name -> name.startsWith("org.beanio") && name.endsWith("ParserConfiguration"))
.collect(Collectors.toUnmodifiableSet());
reflectiveClass
.produce(ReflectiveClassBuildItem.builder(parserConfiguration.toArray(new String[0])).methods(true).build());
Set<String> errorHandlers = index.getAllKnownImplementors(BeanReaderErrorHandler.class)
.stream()
.map(ClassInfo::name)
.map(DotName::toString)
.collect(Collectors.toUnmodifiableSet());
reflectiveClass.produce(ReflectiveClassBuildItem.builder(errorHandlers.toArray(new String[0])).build());
Set<String> recordClasses = index.getAnnotations(Record.class)
.stream()
.map(AnnotationInstance::target)
.filter(target -> target.kind().equals(Kind.CLASS))
.map(AnnotationTarget::asClass)
.map(ClassInfo::name)
.map(DotName::toString)
.collect(Collectors.toUnmodifiableSet());
reflectiveClass
.produce(ReflectiveClassBuildItem.builder(recordClasses.toArray(new String[0])).fields(true).methods(true)
.build());
}