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
The following commit(s) were added to refs/heads/main by this push:
new 49118198b6 Automatically register beans with methods annotated with
@Handler for reflection
49118198b6 is described below
commit 49118198b6b644711b2a1570b51d687354ed7cdc
Author: shravani <[email protected]>
AuthorDate: Tue Oct 31 12:56:20 2023 +0530
Automatically register beans with methods annotated with @Handler for
reflection
---
.../quarkus/component/bean/deployment/BeanProcessor.java | 16 ++++++++++++++++
.../camel/quarkus/component/bean/WithHandlerBean.java | 2 --
.../main/java/org/apache/camel/quarkus/main/MyBean.java | 2 --
3 files changed, 16 insertions(+), 4 deletions(-)
diff --git
a/extensions/bean/deployment/src/main/java/org/apache/camel/quarkus/component/bean/deployment/BeanProcessor.java
b/extensions/bean/deployment/src/main/java/org/apache/camel/quarkus/component/bean/deployment/BeanProcessor.java
index 8edf2c75c8..4cafbf54dc 100644
---
a/extensions/bean/deployment/src/main/java/org/apache/camel/quarkus/component/bean/deployment/BeanProcessor.java
+++
b/extensions/bean/deployment/src/main/java/org/apache/camel/quarkus/component/bean/deployment/BeanProcessor.java
@@ -21,6 +21,7 @@ import io.quarkus.deployment.annotations.BuildStep;
import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
import io.quarkus.deployment.builditem.FeatureBuildItem;
import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.apache.camel.Handler;
import org.apache.camel.support.language.DefaultAnnotationExpressionFactory;
import org.apache.camel.support.language.LanguageAnnotation;
import org.jboss.jandex.AnnotationInstance;
@@ -36,6 +37,7 @@ class BeanProcessor {
private static final String FEATURE = "camel-bean";
private static final Logger LOGGER =
LoggerFactory.getLogger(BeanProcessor.class);
private static final DotName LANGUAGE_ANNOTATION =
DotName.createSimple(LanguageAnnotation.class.getName());
+ private static final DotName HANDLER_ANNOTATION =
DotName.createSimple(Handler.class.getName());
@BuildStep
FeatureBuildItem feature() {
@@ -68,4 +70,18 @@ class BeanProcessor {
}
}
+ @BuildStep
+ void
registerBeanHandlersForReflection(BuildProducer<ReflectiveClassBuildItem>
reflectiveClass,
+ CombinedIndexBuildItem combinedIndex) {
+ IndexView index = combinedIndex.getIndex();
+ index.getAnnotations(HANDLER_ANNOTATION).forEach(annotationInstance ->
{
+ DotName className =
annotationInstance.target().asMethod().declaringClass().name();
+ ReflectiveClassBuildItem reflectiveClassBuildItem =
ReflectiveClassBuildItem.builder(className.toString())
+ .methods()
+ .build();
+
+ reflectiveClass.produce(reflectiveClassBuildItem);
+
+ });
+ }
}
diff --git
a/integration-test-groups/foundation/bean/src/main/java/org/apache/camel/quarkus/component/bean/WithHandlerBean.java
b/integration-test-groups/foundation/bean/src/main/java/org/apache/camel/quarkus/component/bean/WithHandlerBean.java
index 05e960bf35..7f78a6f753 100644
---
a/integration-test-groups/foundation/bean/src/main/java/org/apache/camel/quarkus/component/bean/WithHandlerBean.java
+++
b/integration-test-groups/foundation/bean/src/main/java/org/apache/camel/quarkus/component/bean/WithHandlerBean.java
@@ -16,7 +16,6 @@
*/
package org.apache.camel.quarkus.component.bean;
-import io.quarkus.runtime.annotations.RegisterForReflection;
import jakarta.enterprise.context.ApplicationScoped;
import jakarta.inject.Named;
import org.apache.camel.Exchange;
@@ -24,7 +23,6 @@ import org.apache.camel.Handler;
@ApplicationScoped
@Named("withHandlerOnProxy")
-@RegisterForReflection
public class WithHandlerBean {
/**
* Just set an hello message.
diff --git
a/integration-tests/main-xml-io-with-beans/src/main/java/org/apache/camel/quarkus/main/MyBean.java
b/integration-tests/main-xml-io-with-beans/src/main/java/org/apache/camel/quarkus/main/MyBean.java
index 4a92a6d086..2ba2d425cb 100644
---
a/integration-tests/main-xml-io-with-beans/src/main/java/org/apache/camel/quarkus/main/MyBean.java
+++
b/integration-tests/main-xml-io-with-beans/src/main/java/org/apache/camel/quarkus/main/MyBean.java
@@ -16,10 +16,8 @@
*/
package org.apache.camel.quarkus.main;
-import io.quarkus.runtime.annotations.RegisterForReflection;
import org.apache.camel.Handler;
-@RegisterForReflection
public class MyBean {
@Handler