void syntheticBeans()

in extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/InjectionPointsProcessor.java [219:270]


    void syntheticBeans(
            CamelRecorder recorder,
            CombinedIndexBuildItem index,
            Capabilities capabilities,
            BuildProducer<SyntheticBeanBuildItem> syntheticBeans,
            BuildProducer<NativeImageProxyDefinitionBuildItem> proxyDefinitions) {

        Set<String> injectionPointIdentifiers = new HashSet<>();

        for (AnnotationInstance annotationInstance : index.getIndex().getAnnotations(ENDPOINT_INJECT_ANNOTATION)) {
            final AnnotationTarget target = annotationInstance.target();
            switch (target.kind()) {
            case FIELD: {
                // Avoid producing multiple beans for the same @EndpointInject URI
                String identifier = annotationIdentifier(annotationInstance);
                if (injectionPointIdentifiers.add(identifier)) {
                    endpointInjectBeans(recorder, syntheticBeans, index.getIndex(), annotationInstance, target.asField());
                }
                break;
            }
            case METHOD: {
                final MethodInfo methodInfo = target.asMethod();
                fail(methodInfo, ENDPOINT_INJECT_ANNOTATION);
                break;
            }
            default:
                throw new IllegalStateException("Expected field, got " + target.kind());
            }
        }

        for (AnnotationInstance annotation : index.getIndex().getAnnotations(PRODUCE_ANNOTATION)) {
            final AnnotationTarget target = annotation.target();
            String identifier = annotationIdentifier(annotation);

            switch (target.kind()) {
            case FIELD: {
                if (injectionPointIdentifiers.add(identifier)) {
                    produceBeans(recorder, capabilities, syntheticBeans, proxyDefinitions, index.getIndex(), annotation,
                            target.asField());
                }
                break;
            }
            case METHOD: {
                final MethodInfo methodInfo = target.asMethod();
                fail(methodInfo, PRODUCE_ANNOTATION);
                break;
            }
            default:
                throw new IllegalStateException("Expected field, got " + target.kind());
            }
        }
    }