void registerForReflection()

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());
    }