public T findSingleByType()

in extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java [171:208]


    public <T> T findSingleByType(Class<T> type) {
        ArcContainer container = Arc.container();
        Optional<Annotation[]> qualifiers = resolveQualifiersForType(type);
        if (container != null) {
            List<InstanceHandle<T>> handles;
            if (qualifiers.isPresent()) {
                handles = container.listAll(type, qualifiers.get());
            } else {
                handles = container.listAll(type);
            }

            List<InstanceHandle<T>> sortedHandles = new ArrayList<>(handles.size());
            sortedHandles.addAll(handles);

            if (sortedHandles.size() > 1) {
                sortedHandles.sort((bean1, bean2) -> {
                    Integer priority2 = bean2.getBean().getPriority();
                    Integer priority1 = bean1.getBean().getPriority();

                    int result = priority2.compareTo(priority1);
                    // If the priority is same, the default bean wins
                    if (result == 0) {
                        if (isDefaultBean(bean1.getBean())) {
                            result = -1;
                        } else if (isDefaultBean(bean2.getBean())) {
                            result = 1;
                        }
                    }
                    return result;
                });
            }

            if (sortedHandles.size() > 0) {
                return sortedHandles.get(0).get();
            }
        }
        return null;
    }