You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pp...@apache.org on 2021/04/30 15:49:01 UTC

[camel-quarkus] 02/02: Test bean binding #2492

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

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

commit bdbc3554a361ba840c75fd6b5a90ab4311feab46
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Thu Apr 29 16:58:28 2021 +0200

    Test bean binding #2492
---
 .../camel/quarkus/component/bean/BeanResource.java | 101 ++++++++---------
 .../camel/quarkus/component/bean/BeanRoutes.java   |  19 ++++
 .../{NamedBean.java => CompletionStageBean.java}   |  21 +++-
 .../{NamedBean.java => ConsumeAnnotationBean.java} |  18 ++--
 .../component/bean/EagerAppScopedRouteBuilder.java |   2 +-
 .../{NamedBean.java => EndpointInjectBean.java}    |  19 ++--
 .../camel/quarkus/component/bean/NamedBean.java    |  15 +++
 .../bean/{NamedBean.java => ParametersBean.java}   |  33 +++++-
 .../quarkus/component/bean/BeanInjectMockTest.java |   4 +-
 .../camel/quarkus/component/bean/BeanTest.java     | 119 +++++++++++++++++++--
 10 files changed, 254 insertions(+), 97 deletions(-)

diff --git a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/BeanResource.java b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/BeanResource.java
index 369fdac..ce095bc 100644
--- a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/BeanResource.java
+++ b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/BeanResource.java
@@ -22,10 +22,14 @@ import javax.ws.rs.Consumes;
 import javax.ws.rs.GET;
 import javax.ws.rs.POST;
 import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
 import javax.ws.rs.Produces;
 import javax.ws.rs.core.MediaType;
 
+import org.apache.camel.ConsumerTemplate;
+import org.apache.camel.Exchange;
 import org.apache.camel.ProducerTemplate;
+import org.apache.camel.quarkus.component.bean.model.Employee;
 
 @Path("/bean")
 @ApplicationScoped
@@ -39,51 +43,38 @@ public class BeanResource {
     @Inject
     EagerAppScopedRouteBuilder routeBuilder;
 
-    @Path("/process-order")
-    @POST
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.TEXT_PLAIN)
-    public String processOrder(String statement) {
-        return template.requestBody("direct:process-order", statement, String.class);
-    }
+    @Inject
+    EndpointInjectBean endpointInjectBean;
 
-    @Path("/named")
-    @POST
-    @Consumes(MediaType.TEXT_PLAIN)
-    @Produces(MediaType.TEXT_PLAIN)
-    public String named(String statement) {
-        return template.requestBody("direct:named", statement, String.class);
-    }
+    @Inject
+    ConsumerTemplate endpointInjectConsumer;
 
-    @Path("/method")
+    @Path("/route/{route}")
     @POST
     @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.TEXT_PLAIN)
-    public String method(String statement) {
-        return template.requestBody("direct:method", statement, String.class);
+    public String route(String statement, @PathParam("route") String route) {
+        return template.requestBody("direct:" + route, statement, String.class);
     }
 
-    @Path("/handler")
-    @POST
-    @Consumes(MediaType.TEXT_PLAIN)
+    @Path("/route/{route}")
+    @GET
     @Produces(MediaType.TEXT_PLAIN)
-    public String handler(String statement) {
-        return template.requestBody("direct:handler", statement, String.class);
+    public String route(@PathParam("route") String route) {
+        return template.requestBody("direct:" + route, null, String.class);
     }
 
-    @Path("/handlerOnProxy")
+    @Path("/beanMethodInHeader")
     @POST
     @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.TEXT_PLAIN)
-    public String handlerOnProxy(String statement) {
-        return template.requestBody("direct:handlerOnProxy", statement, String.class);
-    }
-
-    @Path("/increment")
-    @GET
-    @Produces(MediaType.TEXT_PLAIN)
-    public String increment() {
-        return template.requestBody("direct:counter", null, String.class);
+    public String beanMethodInHeader(String statement) {
+        return template.requestBodyAndHeader(
+                "direct:named",
+                statement,
+                Exchange.BEAN_METHOD_NAME,
+                "hi",
+                String.class);
     }
 
     @Path("/counter")
@@ -93,13 +84,6 @@ public class BeanResource {
         return counter.getValue();
     }
 
-    @Path("/config-property")
-    @GET
-    @Produces(MediaType.TEXT_PLAIN)
-    public String configProperty() {
-        return template.requestBody("direct:config-property", null, String.class);
-    }
-
     @Path("/route-builder-instance-counter")
     @GET
     @Produces(MediaType.TEXT_PLAIN)
@@ -121,13 +105,6 @@ public class BeanResource {
         return routeBuilder.getCounter().getValue();
     }
 
-    @Path("/lazy")
-    @GET
-    @Produces(MediaType.TEXT_PLAIN)
-    public String lazy() {
-        return template.requestBody("direct:lazy", null, String.class);
-    }
-
     @Path("/camel-configure-counter")
     @GET
     @Produces(MediaType.TEXT_PLAIN)
@@ -135,18 +112,34 @@ public class BeanResource {
         return BeanRoutes.CONFIGURE_COUNTER.get();
     }
 
-    @Path("/with-producer")
-    @GET
+    @Path("/endpointInject")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.TEXT_PLAIN)
-    public String withProducer() {
-        return template.requestBody("direct:with-producer", null, String.class);
+    public String endpointInject(String payload) {
+        endpointInjectBean.forward(payload);
+        return endpointInjectConsumer.receiveBody("direct:endpointInject", 10000, String.class);
     }
 
-    @Path("/with-language-param-bindings")
-    @GET
+    @Path("/employee/{route}")
+    @POST
+    @Consumes(MediaType.APPLICATION_JSON)
+    @Produces(MediaType.TEXT_PLAIN)
+    public String methodWithExchangeArg(Employee employee, @PathParam("route") String route) {
+        return template.requestBody("direct:" + route, employee, String.class);
+    }
+
+    @Path("/parameterBindingAnnotations/{greeting}")
+    @POST
+    @Consumes(MediaType.TEXT_PLAIN)
     @Produces(MediaType.TEXT_PLAIN)
-    public String withLanguageParamBindings() {
-        return template.requestBody("direct:with-language-param-bindings", null, String.class);
+    public String parameterBindingAnnotations(String statement, @PathParam("greeting") String greeting) {
+        return template.requestBodyAndHeader(
+                "direct:parameterBindingAnnotations",
+                statement,
+                "parameterBinding.greeting",
+                greeting,
+                String.class);
     }
 
 }
diff --git a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/BeanRoutes.java b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/BeanRoutes.java
index 93c41b0..1eb9b64 100644
--- a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/BeanRoutes.java
+++ b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/BeanRoutes.java
@@ -84,6 +84,25 @@ public class BeanRoutes extends RouteBuilder {
                 .routeId("wlpb-route-31wp")
                 .to("bean:withLanguageParamBindingsBean")
                 .to("log:withLanguageParamBindings");
+
+        from("direct:methodWithExchangeArg")
+                .to("bean:namedBean");
+
+        from("direct:completionStageBean")
+                .to("bean:completionStageBean?method=hello");
+
+        from("direct:multiArgMethod")
+                .to("bean:parametersBean?method=multiArgMethod");
+
+        from("direct:parameterBindingAnnotations")
+                .to("bean:parametersBean?method=parameterBindingAnnotations");
+
+        from("direct:parameterLiterals")
+                .to("bean:parametersBean?method=parameterLiterals(*, true)");
+
+        from("direct:parameterTypes")
+                .to("bean:parametersBean?method=parameterTypes(String)");
+
     }
 
     @SuppressWarnings("unchecked")
diff --git a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/CompletionStageBean.java
similarity index 66%
copy from integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
copy to integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/CompletionStageBean.java
index 6a6e053..75f5dc0 100644
--- a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
+++ b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/CompletionStageBean.java
@@ -16,6 +16,9 @@
  */
 package org.apache.camel.quarkus.component.bean;
 
+import java.util.concurrent.CompletableFuture;
+import java.util.concurrent.CompletionStage;
+
 import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Named;
 
@@ -25,11 +28,19 @@ import io.quarkus.runtime.annotations.RegisterForReflection;
  * A bean referenced from a route (and from nowhere else) by name.
  */
 @ApplicationScoped
-@Named("namedBean")
-@RegisterForReflection // Let Quarkus register this class for reflection during the native build
-public class NamedBean {
+@Named("completionStageBean")
+@RegisterForReflection
+public class CompletionStageBean {
 
-    public String hello(String name) {
-        return "Hello " + name + " from the NamedBean";
+    public CompletionStage<String> hello(final String name) {
+        return CompletableFuture.supplyAsync(() -> {
+            try {
+                Thread.sleep(200);
+            } catch (InterruptedException e) {
+                Thread.currentThread().interrupt();
+            }
+            return "Hello " + name + " from CompletionStageBean";
+        });
     }
+
 }
diff --git a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/ConsumeAnnotationBean.java
similarity index 65%
copy from integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
copy to integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/ConsumeAnnotationBean.java
index 6a6e053..2119785 100644
--- a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
+++ b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/ConsumeAnnotationBean.java
@@ -16,20 +16,16 @@
  */
 package org.apache.camel.quarkus.component.bean;
 
-import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Named;
-
-import io.quarkus.runtime.annotations.RegisterForReflection;
+import org.apache.camel.Consume;
 
 /**
- * A bean referenced from a route (and from nowhere else) by name.
+ * A bean annotated with {@code @Consume}
  */
-@ApplicationScoped
-@Named("namedBean")
-@RegisterForReflection // Let Quarkus register this class for reflection during the native build
-public class NamedBean {
+public class ConsumeAnnotationBean {
 
-    public String hello(String name) {
-        return "Hello " + name + " from the NamedBean";
+    @Consume("direct:consumeAnnotation")
+    public String consumeAnnotation(String name) {
+        return "Consumed " + name;
     }
+
 }
diff --git a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/EagerAppScopedRouteBuilder.java b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/EagerAppScopedRouteBuilder.java
index f6cfc37..7fdf57f 100644
--- a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/EagerAppScopedRouteBuilder.java
+++ b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/EagerAppScopedRouteBuilder.java
@@ -59,7 +59,7 @@ public class EagerAppScopedRouteBuilder extends RouteBuilder {
          * counter and config-property should actually work without the bean extension. Doing it here because we have
          * quarkus.camel.enable-main=true in the core itest
          */
-        from("direct:counter")
+        from("direct:increment")
                 .id("counter")
                 .setBody(exchange -> counter.increment())
                 .to("log:counter");
diff --git a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/EndpointInjectBean.java
similarity index 74%
copy from integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
copy to integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/EndpointInjectBean.java
index 6a6e053..aa62160 100644
--- a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
+++ b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/EndpointInjectBean.java
@@ -17,19 +17,20 @@
 package org.apache.camel.quarkus.component.bean;
 
 import javax.enterprise.context.ApplicationScoped;
-import javax.inject.Named;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
+import org.apache.camel.EndpointInject;
+import org.apache.camel.ProducerTemplate;
 
-/**
- * A bean referenced from a route (and from nowhere else) by name.
- */
 @ApplicationScoped
-@Named("namedBean")
-@RegisterForReflection // Let Quarkus register this class for reflection during the native build
-public class NamedBean {
+@RegisterForReflection
+public class EndpointInjectBean {
+
+    @EndpointInject("direct:endpointInject")
+    ProducerTemplate producer;
 
-    public String hello(String name) {
-        return "Hello " + name + " from the NamedBean";
+    public void forward(String payload) {
+        producer.sendBody("Sent to an @EndpointInject: " + payload);
     }
+
 }
diff --git a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
index 6a6e053..8be2c04 100644
--- a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
+++ b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
@@ -20,6 +20,8 @@ import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Named;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
+import org.apache.camel.Exchange;
+import org.apache.camel.quarkus.component.bean.model.Employee;
 
 /**
  * A bean referenced from a route (and from nowhere else) by name.
@@ -32,4 +34,17 @@ public class NamedBean {
     public String hello(String name) {
         return "Hello " + name + " from the NamedBean";
     }
+
+    public String hello(Integer i) {
+        return "Hello number " + i + " from the NamedBean";
+    }
+
+    public String hi(String name) {
+        return "Hi " + name + " from the NamedBean";
+    }
+
+    public void methodWithExchangeArg(Exchange exchange) {
+        exchange.getMessage().setBody("Hello " + exchange.getMessage().getBody(Employee.class).getFirstName());
+    }
+
 }
diff --git a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/ParametersBean.java
similarity index 51%
copy from integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
copy to integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/ParametersBean.java
index 6a6e053..f400e98 100644
--- a/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/NamedBean.java
+++ b/integration-tests/bean/src/main/java/org/apache/camel/quarkus/component/bean/ParametersBean.java
@@ -20,16 +20,41 @@ import javax.enterprise.context.ApplicationScoped;
 import javax.inject.Named;
 
 import io.quarkus.runtime.annotations.RegisterForReflection;
+import org.apache.camel.Body;
+import org.apache.camel.Exchange;
+import org.apache.camel.Header;
+import org.apache.camel.quarkus.component.bean.model.Employee;
+import org.apache.camel.spi.Registry;
 
 /**
  * A bean referenced from a route (and from nowhere else) by name.
  */
 @ApplicationScoped
-@Named("namedBean")
+@Named("parametersBean")
 @RegisterForReflection // Let Quarkus register this class for reflection during the native build
-public class NamedBean {
+public class ParametersBean {
 
-    public String hello(String name) {
-        return "Hello " + name + " from the NamedBean";
+    public String parameterTypes(String employeeAsString) {
+        return "employeeAsString: " + employeeAsString;
     }
+
+    public String parameterTypes(Employee employee) {
+        return "Employee: " + employee.getFirstName();
+    }
+
+    public String parameterBindingAnnotations(
+            @Header("parameterBinding.greeting") String greeting,
+            @Body String body) {
+        return greeting + " " + body + " from parameterBindingAnnotations";
+    }
+
+    public String parameterLiterals(String body, boolean bool) {
+        return "Hello " + body + " from parameterLiterals(*, " + bool + ")";
+    }
+
+    public String multiArgMethod(String body, Exchange exchange, Registry registry) {
+        return "Hello " + body + " from multiArgMethod: " + (exchange != null ? "got exchange" : "") + " "
+                + (registry != null ? "got registry" : "");
+    }
+
 }
diff --git a/integration-tests/bean/src/test/java/org/apache/camel/quarkus/component/bean/BeanInjectMockTest.java b/integration-tests/bean/src/test/java/org/apache/camel/quarkus/component/bean/BeanInjectMockTest.java
index 124c9fc..815b74b 100644
--- a/integration-tests/bean/src/test/java/org/apache/camel/quarkus/component/bean/BeanInjectMockTest.java
+++ b/integration-tests/bean/src/test/java/org/apache/camel/quarkus/component/bean/BeanInjectMockTest.java
@@ -41,7 +41,7 @@ public class BeanInjectMockTest {
     public void namedBeanMockedForAllTests() {
         RestAssured.given()
                 .body("Kermit")
-                .post("/bean/named")
+                .post("/bean/route/named")
                 .then()
                 .body(is("Hello * from NamedBean mock (class level)"));
     }
@@ -51,7 +51,7 @@ public class BeanInjectMockTest {
         when(mockNamedBean.hello(anyString())).thenReturn("Hello * from NamedBean mock (test level)");
         RestAssured.given()
                 .body("Kermit")
-                .post("/bean/named")
+                .post("/bean/route/named")
                 .then()
                 .body(is("Hello * from NamedBean mock (test level)"));
     }
diff --git a/integration-tests/bean/src/test/java/org/apache/camel/quarkus/component/bean/BeanTest.java b/integration-tests/bean/src/test/java/org/apache/camel/quarkus/component/bean/BeanTest.java
index f7c189f..540c3b2 100644
--- a/integration-tests/bean/src/test/java/org/apache/camel/quarkus/component/bean/BeanTest.java
+++ b/integration-tests/bean/src/test/java/org/apache/camel/quarkus/component/bean/BeanTest.java
@@ -19,6 +19,8 @@ package org.apache.camel.quarkus.component.bean;
 import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
+import org.apache.camel.quarkus.component.bean.model.Employee;
+import org.junit.jupiter.api.Disabled;
 import org.junit.jupiter.api.Test;
 
 import static org.hamcrest.Matchers.equalTo;
@@ -27,7 +29,10 @@ import static org.hamcrest.Matchers.equalTo;
 public class BeanTest {
     @Test
     public void testRoutes() {
-        RestAssured.given().contentType(ContentType.TEXT).body("nuts@bolts").post("/bean/process-order").then()
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("nuts@bolts")
+                .post("/bean/route/process-order").then()
                 .body(equalTo("{success=true, lines=[(id=1,item=nuts), (id=2,item=bolts)]}"));
 
         /* Ensure that the RoutesBuilder.configure() was not called multiple times on CamelRoute */
@@ -43,17 +48,27 @@ public class BeanTest {
         RestAssured.given()
                 .contentType(ContentType.TEXT)
                 .body("Kermit")
-                .post("/bean/named")
+                .post("/bean/route/named")
                 .then()
                 .body(equalTo("Hello Kermit from the NamedBean"));
     }
 
     @Test
+    public void beanMethodInHeader() {
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("Kermit")
+                .post("/bean/beanMethodInHeader")
+                .then()
+                .body(equalTo("Hi Kermit from the NamedBean"));
+    }
+
+    @Test
     public void method() {
         RestAssured.given()
                 .contentType(ContentType.TEXT)
                 .body("Kermit")
-                .post("/bean/method")
+                .post("/bean/route/method")
                 .then()
                 .body(equalTo("Hello Kermit from the MyBean"));
     }
@@ -63,7 +78,7 @@ public class BeanTest {
         RestAssured.given()
                 .contentType(ContentType.TEXT)
                 .body("Kermit")
-                .post("/bean/handler")
+                .post("/bean/route/handler")
                 .then()
                 .body(equalTo("Hello Kermit from the WithHandlerBean"));
     }
@@ -73,7 +88,7 @@ public class BeanTest {
         RestAssured.given()
                 .contentType(ContentType.TEXT)
                 .body("Kermit")
-                .post("/bean/handlerOnProxy")
+                .post("/bean/route/handlerOnProxy")
                 .then()
                 .body(equalTo("Hello Kermit from the WithHandlerBean"));
     }
@@ -84,16 +99,16 @@ public class BeanTest {
         /* Ensure that @Inject works */
         RestAssured.when().get("/bean/counter").then().body(equalTo("0"));
         RestAssured.when().get("/bean/route-builder-injected-count").then().body(equalTo("0"));
-        RestAssured.when().get("/bean/increment").then().body(equalTo("1"));
+        RestAssured.when().get("/bean/route/increment").then().body(equalTo("1"));
         RestAssured.when().get("/bean/counter").then().body(equalTo("1"));
         RestAssured.when().get("/bean/route-builder-injected-count").then().body(equalTo("1"));
-        RestAssured.when().get("/bean/increment").then().body(equalTo("2"));
+        RestAssured.when().get("/bean/route/increment").then().body(equalTo("2"));
         RestAssured.when().get("/bean/counter").then().body(equalTo("2"));
         RestAssured.when().get("/bean/route-builder-injected-count").then().body(equalTo("2"));
 
         /* Ensure that @ConfigProperty works */
         RestAssured.when()
-                .get("/bean/config-property")
+                .get("/bean/route/config-property")
                 .then()
                 .statusCode(200)
                 .body(equalTo("myFooValue = foo"));
@@ -115,18 +130,100 @@ public class BeanTest {
 
     @Test
     public void lazy() {
-        RestAssured.when().get("/bean/lazy").then().body(equalTo("lazy"));
+        RestAssured.when().get("/bean/route/lazy").then().body(equalTo("lazy"));
     }
 
     @Test
     public void withProducer() {
-        RestAssured.when().get("/bean/with-producer").then().body(equalTo("with-producer"));
+        RestAssured.when().get("/bean/route/with-producer").then().body(equalTo("with-producer"));
     }
 
     @Test
     public void withLanguageParamBindings() {
-        RestAssured.when().get("/bean/with-language-param-bindings").then()
+        RestAssured.when().get("/bean/route/with-language-param-bindings").then()
                 .body(equalTo("wlpb-hello(wlpb-route-31wp,cflap-bean-31wp)"));
     }
 
+    @Disabled("https://github.com/apache/camel-quarkus/issues/2539")
+    @Test
+    public void consumeAnnotation() {
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("foo")
+                .post("/bean/route/consumeAnnotation")
+                .then()
+                .body(equalTo("Consumed foo"));
+    }
+
+    @Disabled("https://github.com/apache/camel-quarkus/issues/2539")
+    @Test
+    public void endpointInject() {
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("bar")
+                .post("/bean/endpointInject")
+                .then()
+                .body(equalTo("Sent to an @EndpointInject: bar"));
+    }
+
+    @Test
+    public void methodWithExchangeArg() {
+        RestAssured.given()
+                .contentType(ContentType.JSON)
+                .body(new Employee("Joe", "Doe", "senior"))
+                .post("/bean/employee/methodWithExchangeArg")
+                .then()
+                .body(equalTo("Hello Joe"));
+    }
+
+    @Test
+    public void completionStageBean() {
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("Franz")
+                .post("/bean/route/completionStageBean")
+                .then()
+                .body(equalTo("Hello Franz from CompletionStageBean"));
+    }
+
+    @Test
+    public void multiArgMethod() {
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("Max")
+                .post("/bean/route/multiArgMethod")
+                .then()
+                .body(equalTo("Hello Max from multiArgMethod: got exchange got registry"));
+    }
+
+    @Test
+    public void parameterBindingAnnotations() {
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("Umberto")
+                .post("/bean/parameterBindingAnnotations/Ciao")
+                .then()
+                .body(equalTo("Ciao Umberto from parameterBindingAnnotations"));
+    }
+
+    @Test
+    public void parameterLiterals() {
+        RestAssured.given()
+                .contentType(ContentType.TEXT)
+                .body("Leon")
+                .post("/bean/route/parameterLiterals")
+                .then()
+                .body(equalTo("Hello Leon from parameterLiterals(*, true)"));
+    }
+
+    @Test
+    public void parameterTypes() {
+        RestAssured.given()
+                .contentType(ContentType.JSON)
+                .body(new Employee("Joe", "Doe", "senior"))
+                .post("/bean/employee/parameterTypes")
+                .then()
+                .body(equalTo("employeeAsString: Employee [firstName=Joe, lastName=Doe, seniority=senior]"));
+    }
+
 }