This is an automated email from the ASF dual-hosted git repository.

jamesnetherton pushed a commit to branch 3.20.x
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit 29937fbd35344613e3bdce0d8ed1c03a19b4708a
Author: James Netherton <[email protected]>
AuthorDate: Wed Jul 30 07:06:36 2025 +0100

    Fallback to resolving bean names from @Identifier for 
RuntimeBeanRepository.findByTypeWithName
    
    Fixes #7558
---
 .../deployment/CamelBeanLookupWithIdentifierTest.java |  9 +++++++++
 .../camel/quarkus/core/RuntimeBeanRepository.java     | 19 ++++++++++++++++++-
 2 files changed, 27 insertions(+), 1 deletion(-)

diff --git 
a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/CamelBeanLookupWithIdentifierTest.java
 
b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/CamelBeanLookupWithIdentifierTest.java
index bedcf623d1..b6182a1c9c 100644
--- 
a/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/CamelBeanLookupWithIdentifierTest.java
+++ 
b/extensions-core/core/deployment/src/test/java/org/apache/camel/quarkus/core/deployment/CamelBeanLookupWithIdentifierTest.java
@@ -19,6 +19,7 @@ package org.apache.camel.quarkus.core.deployment;
 import java.io.IOException;
 import java.io.StringWriter;
 import java.io.Writer;
+import java.util.Map;
 import java.util.Properties;
 
 import io.quarkus.test.QuarkusUnitTest;
@@ -75,6 +76,14 @@ public class CamelBeanLookupWithIdentifierTest {
         assertEquals("Hello World", template.request(String.class));
     }
 
+    @Test
+    void resolveIdentifierWithName() {
+        Map<String, MyIdentifiedBean> typeWithName = 
context.getRegistry().findByTypeWithName(MyIdentifiedBean.class);
+        assertNotNull(typeWithName);
+        assertEquals(1, typeWithName.size());
+        assertNotNull(typeWithName.get("my-identifier"));
+    }
+
     @Produces
     @Identifier("my-identifier")
     public MyIdentifiedBean createIdentifiedBean() {
diff --git 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
index 6ecb21dedc..ad0e568118 100644
--- 
a/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
+++ 
b/extensions-core/core/runtime/src/main/java/org/apache/camel/quarkus/core/RuntimeBeanRepository.java
@@ -34,6 +34,7 @@ import jakarta.enterprise.inject.Default;
 import jakarta.enterprise.inject.literal.NamedLiteral;
 import jakarta.enterprise.inject.spi.BeanManager;
 import org.apache.camel.spi.BeanRepository;
+import org.apache.camel.util.ObjectHelper;
 
 public final class RuntimeBeanRepository implements BeanRepository {
     private static final Annotation[] EMPTY_ANNOTATIONS = new Annotation[0];
@@ -128,7 +129,10 @@ public final class RuntimeBeanRepository implements 
BeanRepository {
                 .stream()
                 .filter(InstanceHandle::isAvailable)
                 .forEach(instanceHandle -> {
-                    beans.put(instanceHandle.getBean().getName(), 
instanceHandle.get());
+                    String name = resolveBeanName(instanceHandle.getBean());
+                    if (ObjectHelper.isNotEmpty(name)) {
+                        beans.put(name, instanceHandle.get());
+                    }
                 });
         return beans;
     }
@@ -201,4 +205,17 @@ public final class RuntimeBeanRepository implements 
BeanRepository {
     private boolean isDefaultBean(InjectableBean<?> bean) {
         return bean.getQualifiers().stream().anyMatch(q -> 
q.annotationType().equals(Default.class));
     }
+
+    private static String resolveBeanName(InjectableBean<?> bean) {
+        String name = bean.getName();
+        if (name == null) {
+            for (Annotation qualifier : bean.getQualifiers()) {
+                if (qualifier instanceof Identifier) {
+                    name = ((Identifier) qualifier).value();
+                    break;
+                }
+            }
+        }
+        return name;
+    }
 }

Reply via email to