This is an automated email from the ASF dual-hosted git repository. lburgazzoli pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit 7ca801a652f411dadb4fd07bfd5fb96639da1bc0 Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Thu Jun 25 14:53:09 2020 +0100 Ensure Quarkus Vertx instance is set on the camel component when not using camel-quarkus-main --- .../component/vertx/deployment/VertxProcessor.java | 11 +++++--- .../component/vertx/CamelVertxRecorder.java | 30 ++++++++-------------- .../quarkus/component/vertx/it/VertxResource.java | 18 +++++++++++++ .../quarkus/component/vertx/it/VertxTest.java | 8 ++++++ 4 files changed, 45 insertions(+), 22 deletions(-) diff --git a/extensions/vertx/deployment/src/main/java/org/apache/camel/quarkus/component/vertx/deployment/VertxProcessor.java b/extensions/vertx/deployment/src/main/java/org/apache/camel/quarkus/component/vertx/deployment/VertxProcessor.java index ef8971f..4ad69b7 100644 --- a/extensions/vertx/deployment/src/main/java/org/apache/camel/quarkus/component/vertx/deployment/VertxProcessor.java +++ b/extensions/vertx/deployment/src/main/java/org/apache/camel/quarkus/component/vertx/deployment/VertxProcessor.java @@ -17,9 +17,12 @@ package org.apache.camel.quarkus.component.vertx.deployment; import io.quarkus.deployment.annotations.BuildStep; +import io.quarkus.deployment.annotations.ExecutionTime; +import io.quarkus.deployment.annotations.Record; import io.quarkus.deployment.builditem.FeatureBuildItem; import io.quarkus.vertx.deployment.VertxBuildItem; -import io.vertx.core.Vertx; +import org.apache.camel.component.vertx.VertxComponent; +import org.apache.camel.quarkus.component.vertx.CamelVertxRecorder; import org.apache.camel.quarkus.core.deployment.spi.CamelRuntimeBeanBuildItem; class VertxProcessor { @@ -31,8 +34,10 @@ class VertxProcessor { return new FeatureBuildItem(FEATURE); } + @Record(ExecutionTime.RUNTIME_INIT) @BuildStep - CamelRuntimeBeanBuildItem configureVertxRegistryBean(VertxBuildItem vertx) { - return new CamelRuntimeBeanBuildItem("vertx", Vertx.class.getName(), vertx.getVertx()); + CamelRuntimeBeanBuildItem configureVertxRegistryBean(CamelVertxRecorder recorder, VertxBuildItem vertx) { + return new CamelRuntimeBeanBuildItem("vertx", VertxComponent.class.getName(), + recorder.createVertxComponent(vertx.getVertx())); } } diff --git a/integration-tests/vertx/src/test/java/org/apache/camel/quarkus/component/vertx/it/VertxTest.java b/extensions/vertx/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/CamelVertxRecorder.java similarity index 56% copy from integration-tests/vertx/src/test/java/org/apache/camel/quarkus/component/vertx/it/VertxTest.java copy to extensions/vertx/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/CamelVertxRecorder.java index ea284e8..d9f2c36 100644 --- a/integration-tests/vertx/src/test/java/org/apache/camel/quarkus/component/vertx/it/VertxTest.java +++ b/extensions/vertx/runtime/src/main/java/org/apache/camel/quarkus/component/vertx/CamelVertxRecorder.java @@ -14,27 +14,19 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.component.vertx.it; +package org.apache.camel.quarkus.component.vertx; -import io.quarkus.test.junit.QuarkusTest; -import io.restassured.RestAssured; -import io.restassured.http.ContentType; -import org.junit.jupiter.api.Test; +import io.quarkus.runtime.RuntimeValue; +import io.quarkus.runtime.annotations.Recorder; +import io.vertx.core.Vertx; +import org.apache.camel.component.vertx.VertxComponent; -import static org.hamcrest.Matchers.is; +@Recorder +public class CamelVertxRecorder { -@QuarkusTest -class VertxTest { - - @Test - public void testVertxComponent() { - String message = "Camel Quarkus Vert.x"; - RestAssured.given() - .contentType(ContentType.TEXT) - .body(message) - .post("/vertx/post") - .then() - .statusCode(201) - .body(is("Hello " + message)); + public RuntimeValue<VertxComponent> createVertxComponent(RuntimeValue<Vertx> vertx) { + VertxComponent component = new VertxComponent(); + component.setVertx(vertx.getValue()); + return new RuntimeValue<>(component); } } diff --git a/integration-tests/vertx/src/main/java/org/apache/camel/quarkus/component/vertx/it/VertxResource.java b/integration-tests/vertx/src/main/java/org/apache/camel/quarkus/component/vertx/it/VertxResource.java index 33507a8..4045ef3 100644 --- a/integration-tests/vertx/src/main/java/org/apache/camel/quarkus/component/vertx/it/VertxResource.java +++ b/integration-tests/vertx/src/main/java/org/apache/camel/quarkus/component/vertx/it/VertxResource.java @@ -20,13 +20,17 @@ import java.net.URI; import javax.inject.Inject; import javax.ws.rs.Consumes; +import javax.ws.rs.GET; import javax.ws.rs.POST; import javax.ws.rs.Path; import javax.ws.rs.Produces; import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; +import io.vertx.core.Vertx; +import org.apache.camel.CamelContext; import org.apache.camel.ProducerTemplate; +import org.apache.camel.component.vertx.VertxComponent; @Path("/vertx") public class VertxResource { @@ -34,6 +38,12 @@ public class VertxResource { @Inject ProducerTemplate producerTemplate; + @Inject + CamelContext camelContext; + + @Inject + Vertx vertx; + @Path("/post") @POST @Consumes(MediaType.TEXT_PLAIN) @@ -42,4 +52,12 @@ public class VertxResource { String result = producerTemplate.requestBody("direct:start", message, String.class); return Response.created(new URI("https://camel.apache.org/")).entity(result).build(); } + + @Path("/verify/instance") + @GET + @Produces(MediaType.TEXT_PLAIN) + public boolean quarkusVertxInstanceUsedInVertxComponent() { + VertxComponent component = camelContext.getComponent("vertx", VertxComponent.class); + return component.getVertx() == vertx; + } } diff --git a/integration-tests/vertx/src/test/java/org/apache/camel/quarkus/component/vertx/it/VertxTest.java b/integration-tests/vertx/src/test/java/org/apache/camel/quarkus/component/vertx/it/VertxTest.java index ea284e8..3e26e12 100644 --- a/integration-tests/vertx/src/test/java/org/apache/camel/quarkus/component/vertx/it/VertxTest.java +++ b/integration-tests/vertx/src/test/java/org/apache/camel/quarkus/component/vertx/it/VertxTest.java @@ -28,6 +28,14 @@ class VertxTest { @Test public void testVertxComponent() { + // Verify that the Vertx instance set up by the Quarkus extension + // is the one used in the Camel component + RestAssured.given() + .get("/vertx/verify/instance") + .then() + .statusCode(200) + .body(is("true")); + String message = "Camel Quarkus Vert.x"; RestAssured.given() .contentType(ContentType.TEXT)