public void execute()

in arthur-impl/src/main/java/org/apache/geronimo/arthur/impl/nativeimage/generator/extension/AnnotationExtension.java [49:112]


    public void execute(final Context context) {
        ofNullable(context.getProperty("extension.annotation.custom.annotations.class"))
                .ifPresent(names -> Stream.of(names.split(","))
                        .map(String::trim)
                        .filter(it -> !it.isEmpty())
                        .forEach(config -> { // syntax is: <annotation fqn>:<RegisterClass method=true|false>, if only fqn then all=true is supposed
                            final int sep = config.indexOf(':');
                            final String fqn = sep < 0 ? config : config.substring(0, sep);
                            final RegisterClass registerClass = newRegisterClass(sep < 0 ? "all=true" : config.substring(sep + 1));
                            context.findAnnotatedClasses(context.loadClass(fqn.trim()).asSubclass(Annotation.class)).stream()
                                    .flatMap(clazz -> register(clazz, registerClass))
                                    .forEach(context::register);
                        }));
        ofNullable(context.getProperty("extension.annotation.custom.annotations.properties"))
                .ifPresent(names -> Stream.of(names.split(","))
                        .map(String::trim)
                        .filter(it -> !it.isEmpty())
                        .forEach(config -> { // syntax is: <annotation fqn>:<RegisterClass method=true|false>, if only fqn then all=true is supposed
                            final int sep = config.indexOf(':');
                            final String fqn = sep < 0 ? config : config.substring(0, sep);
                            final RegisterClass registerClass = newRegisterClass(sep < 0 ? "all=true" : config.substring(sep + 1));
                            final Class<? extends Annotation> annot = context.loadClass(fqn.trim()).asSubclass(Annotation.class);
                            Stream.concat(
                                    context.findAnnotatedMethods(annot).stream().map(Method::getDeclaringClass),
                                    context.findAnnotatedFields(annot).stream().map(Field::getDeclaringClass))
                                    .distinct()
                                    .flatMap(clazz -> register(clazz, registerClass))
                                    .forEach(context::register);
                        }));

        context.findAnnotatedClasses(RegisterClass.class).stream()
                .flatMap(clazz -> register(clazz, clazz.getAnnotation(RegisterClass.class)))
                .forEach(context::register);

        final Collection<RegisterResource> resources = context.findAnnotatedClasses(RegisterResource.class).stream()
                .flatMap(clazz -> Stream.of(clazz.getAnnotation(RegisterResource.class)))
                .collect(toList());
        resources.stream()
                .flatMap(rr -> Stream.of(rr.patterns()))
                .map(pattern -> {
                    final ResourceModel resourceModel = new ResourceModel();
                    resourceModel.setPattern(pattern);
                    return resourceModel;
                })
                .distinct()
                .forEach(context::register);
        resources.stream()
                .flatMap(rr -> Stream.of(rr.bundles()))
                .map(name -> {
                    final ResourceBundleModel bundleModel = new ResourceBundleModel();
                    bundleModel.setName(name);
                    return bundleModel;
                })
                .distinct()
                .forEach(context::register);
        context.findAnnotatedClasses(RegisterClasses.Entry.class).stream()
                .map(it -> it.getAnnotation(RegisterClasses.Entry.class))
                .flatMap(entry -> doRegisterEntry(context, entry))
                .forEach(context::register);
        context.findAnnotatedClasses(RegisterClasses.class).stream()
                .flatMap(it -> Stream.of(it.getAnnotation(RegisterClasses.class).value()))
                .flatMap(entry -> doRegisterEntry(context, entry))
                .forEach(context::register);
    }