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; + } }
