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

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

commit d24458f2e70b66810d85c51f1a1d5440478faeb8
Author: James Netherton <jamesnether...@gmail.com>
AuthorDate: Fri Jan 27 14:42:11 2023 +0000

    Add notes to CDI user guide for usage of @Identifier
---
 docs/modules/ROOT/pages/user-guide/cdi.adoc        | 33 ++++++++++++++++++++++
 .../quarkus/core/deployment/CamelProcessor.java    | 14 +++++----
 .../CamelBeanLookupWithIdentifierTest.java         |  2 --
 .../quarkus/component/bean/IdentifiedBean.java     |  2 --
 4 files changed, 41 insertions(+), 10 deletions(-)

diff --git a/docs/modules/ROOT/pages/user-guide/cdi.adoc 
b/docs/modules/ROOT/pages/user-guide/cdi.adoc
index ef97787072..3dab2d247b 100644
--- a/docs/modules/ROOT/pages/user-guide/cdi.adoc
+++ b/docs/modules/ROOT/pages/user-guide/cdi.adoc
@@ -178,6 +178,39 @@ public class CamelRoute extends RouteBuilder {
 }
 ----
 
+As an alternative to `@Named`, you may also use 
`io.smallrye.common.annotation.Identifier` to name and identify a bean.
+
+[source,java]
+----
+import javax.enterprise.context.ApplicationScoped;
+import io.quarkus.runtime.annotations.RegisterForReflection;
+import io.smallrye.common.annotation.Identifier;
+
+@ApplicationScoped
+@Identifier("myBeanIdentifier")
+@RegisterForReflection
+public class MyBean {
+    public String hello(String name) {
+        return "Hello " + name + " from MyBean";
+    }
+}
+----
+
+Then refer to the identifier value within the Camel route:
+
+[source,java]
+----
+import org.apache.camel.builder.RouteBuilder;
+public class CamelRoute extends RouteBuilder {
+    @Override
+    public void configure() {
+        from("direct:start")
+                .bean("myBeanIdentifier", "Camel");
+    }
+}
+----
+
+
 NOTE: We aim at supporting all use cases listed in 
xref:manual::bean-binding.adoc[Bean binding] section of Camel documentation.
 Do not hesitate to https://github.com/apache/camel-quarkus/issues[file an 
issue] if some bean binding scenario does not work for you.
 
diff --git 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
index 194d24d275..e17134c203 100644
--- 
a/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
+++ 
b/extensions-core/core/deployment/src/main/java/org/apache/camel/quarkus/core/deployment/CamelProcessor.java
@@ -46,6 +46,7 @@ import 
io.quarkus.deployment.builditem.nativeimage.NativeImageResourceBuildItem;
 import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
 import io.quarkus.maven.dependency.ArtifactKey;
 import io.quarkus.runtime.RuntimeValue;
+import io.smallrye.common.annotation.Identifier;
 import org.apache.camel.Converter;
 import org.apache.camel.impl.converter.BaseTypeConverterRegistry;
 import org.apache.camel.quarkus.core.CamelCapabilities;
@@ -347,14 +348,15 @@ class CamelProcessor {
     }
 
     @BuildStep
-    UnremovableBeanBuildItem unremovableRoutesBuilders() {
-        return new UnremovableBeanBuildItem(
-                b -> 
b.getTypes().stream().map(Type::name).anyMatch(UNREMOVABLE_BEANS_TYPES::contains));
-    }
+    void unremovableBeans(
+            BuildProducer<AdditionalBeanBuildItem> beanProducer,
+            BuildProducer<UnremovableBeanBuildItem> unremovableBeans) {
 
-    @BuildStep
-    void unremovableBeans(BuildProducer<AdditionalBeanBuildItem> beanProducer) 
{
         
beanProducer.produce(AdditionalBeanBuildItem.unremovableOf(CamelProducers.class));
+
+        
unremovableBeans.produce(UnremovableBeanBuildItem.targetWithAnnotation(DotName.createSimple(Identifier.class)));
+        unremovableBeans.produce(new UnremovableBeanBuildItem(
+                b -> 
b.getTypes().stream().map(Type::name).anyMatch(UNREMOVABLE_BEANS_TYPES::contains)));
     }
 
     @BuildStep(onlyIf = { CamelConfigFlags.RoutesDiscoveryEnabled.class })
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 6d173c5fd9..7ff384a28c 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
@@ -24,7 +24,6 @@ import java.util.Properties;
 import javax.enterprise.inject.Produces;
 import javax.inject.Inject;
 
-import io.quarkus.arc.Unremovable;
 import io.quarkus.test.QuarkusUnitTest;
 import io.smallrye.common.annotation.Identifier;
 import org.apache.camel.CamelContext;
@@ -78,7 +77,6 @@ public class CamelBeanLookupWithIdentifierTest {
     }
 
     @Produces
-    @Unremovable
     @Identifier("my-identifier")
     public MyIdentifiedBean createIdentifiedBean() {
         return new MyIdentifiedBean();
diff --git 
a/integration-test-groups/foundation/bean/src/main/java/org/apache/camel/quarkus/component/bean/IdentifiedBean.java
 
b/integration-test-groups/foundation/bean/src/main/java/org/apache/camel/quarkus/component/bean/IdentifiedBean.java
index 828d8533ae..4ce031e49e 100644
--- 
a/integration-test-groups/foundation/bean/src/main/java/org/apache/camel/quarkus/component/bean/IdentifiedBean.java
+++ 
b/integration-test-groups/foundation/bean/src/main/java/org/apache/camel/quarkus/component/bean/IdentifiedBean.java
@@ -18,7 +18,6 @@ package org.apache.camel.quarkus.component.bean;
 
 import javax.enterprise.context.ApplicationScoped;
 
-import io.quarkus.arc.Unremovable;
 import io.quarkus.runtime.annotations.RegisterForReflection;
 import io.smallrye.common.annotation.Identifier;
 
@@ -27,7 +26,6 @@ import io.smallrye.common.annotation.Identifier;
  */
 @ApplicationScoped
 @Identifier("identifiedBean")
-@Unremovable
 @RegisterForReflection
 public class IdentifiedBean {
 

Reply via email to