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 {