This is an automated email from the ASF dual-hosted git repository. jamesnetherton pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
commit b0a98c463e9d0b3fa3c698e57118b98c01db20bb Author: James Netherton <jamesnether...@gmail.com> AuthorDate: Thu Sep 17 08:56:06 2020 +0100 Browse native support Fixes #816 --- .../ROOT/pages/reference/components/browse.adoc | 6 +- .../ROOT/pages/reference/extensions/browse.adoc | 8 +- extensions-jvm/browse/integration-test/pom.xml | 95 ---------------------- extensions-jvm/pom.xml | 1 - .../browse/deployment/pom.xml | 0 .../browse/deployment/BrowseProcessor.java | 14 ---- {extensions-jvm => extensions}/browse/pom.xml | 1 - .../browse/runtime/pom.xml | 1 + .../main/resources/META-INF/quarkus-extension.yaml | 0 extensions/pom.xml | 1 + integration-tests/foundation/pom.xml | 17 ++++ .../foundation/it/browse}/BrowseResource.java | 34 +++++--- .../foundation/it/browse/BrowseRoutes.java | 20 ++--- .../component/foundation/it/browse/BrowseIT.java | 18 +--- .../foundation/it/browse}/BrowseTest.java | 11 +-- 15 files changed, 63 insertions(+), 164 deletions(-) diff --git a/docs/modules/ROOT/pages/reference/components/browse.adoc b/docs/modules/ROOT/pages/reference/components/browse.adoc index b75aa57..57baeb8 100644 --- a/docs/modules/ROOT/pages/reference/components/browse.adoc +++ b/docs/modules/ROOT/pages/reference/components/browse.adoc @@ -4,11 +4,11 @@ = Browse :cq-artifact-id: camel-quarkus-browse :cq-artifact-id-base: browse -:cq-native-supported: false -:cq-status: Preview +:cq-native-supported: true +:cq-status: Stable :cq-deprecated: false :cq-jvm-since: 1.1.0 -:cq-native-since: n/a +:cq-native-since: 1.2.0 :cq-camel-part-name: browse :cq-camel-part-title: Browse :cq-camel-part-description: Inspect the messages received on endpoints supporting BrowsableEndpoint. diff --git a/docs/modules/ROOT/pages/reference/extensions/browse.adoc b/docs/modules/ROOT/pages/reference/extensions/browse.adoc index 3d46dc1..b9da57a 100644 --- a/docs/modules/ROOT/pages/reference/extensions/browse.adoc +++ b/docs/modules/ROOT/pages/reference/extensions/browse.adoc @@ -3,15 +3,15 @@ = Browse :cq-artifact-id: camel-quarkus-browse -:cq-native-supported: false -:cq-status: Preview +:cq-native-supported: true +:cq-status: Stable :cq-description: Inspect the messages received on endpoints supporting BrowsableEndpoint. :cq-deprecated: false :cq-jvm-since: 1.1.0 -:cq-native-since: n/a +:cq-native-since: 1.2.0 [.badges] -[.badge-key]##JVM since##[.badge-supported]##1.1.0## [.badge-key]##Native##[.badge-unsupported]##unsupported## +[.badge-key]##JVM since##[.badge-supported]##1.1.0## [.badge-key]##Native since##[.badge-supported]##1.2.0## Inspect the messages received on endpoints supporting BrowsableEndpoint. diff --git a/extensions-jvm/browse/integration-test/pom.xml b/extensions-jvm/browse/integration-test/pom.xml deleted file mode 100644 index bf33e5f..0000000 --- a/extensions-jvm/browse/integration-test/pom.xml +++ /dev/null @@ -1,95 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<!-- - - Licensed to the Apache Software Foundation (ASF) under one or more - contributor license agreements. See the NOTICE file distributed with - this work for additional information regarding copyright ownership. - The ASF licenses this file to You under the Apache License, Version 2.0 - (the "License"); you may not use this file except in compliance with - the License. You may obtain a copy of the License at - - http://www.apache.org/licenses/LICENSE-2.0 - - Unless required by applicable law or agreed to in writing, software - distributed under the License is distributed on an "AS IS" BASIS, - WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - See the License for the specific language governing permissions and - limitations under the License. - ---> -<project xmlns="http://maven.apache.org/POM/4.0.0" - xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-build-parent-it</artifactId> - <version>1.2.0-SNAPSHOT</version> - <relativePath>../../../poms/build-parent-it/pom.xml</relativePath> - </parent> - - <artifactId>camel-quarkus-browse-integration-test</artifactId> - <name>Camel Quarkus :: Browse :: Integration Test</name> - <description>Integration tests for Camel Quarkus Browse extension</description> - - <properties> - <!-- mvnd, a.k.a. Maven Daemon: https://github.com/mvndaemon/mvnd --> - <!-- The following rule tells mvnd to build the listed deployment modules before this module. --> - <!-- This is important because mvnd builds modules in parallel by default. The deployment modules are not --> - <!-- explicit dependencies of this module in the Maven sense, although they are required by the Quarkus Maven plugin. --> - <!-- Please update the rule whenever you change the dependencies of this module by running --> - <!-- mvn process-resources -Pformat from the root directory --> - <mvnd.builder.rule>camel-quarkus-browse-deployment,camel-quarkus-support-policy-deployment</mvnd.builder.rule> - </properties> - - <dependencyManagement> - <dependencies> - <dependency> - <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-bom-test</artifactId> - <version>${project.version}</version> - <type>pom</type> - <scope>import</scope> - </dependency> - </dependencies> - </dependencyManagement> - - <dependencies> - <dependency> - <groupId>org.apache.camel.quarkus</groupId> - <artifactId>camel-quarkus-browse</artifactId> - </dependency> - <dependency> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-resteasy</artifactId> - </dependency> - - <!-- test dependencies --> - <dependency> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-junit5</artifactId> - <scope>test</scope> - </dependency> - <dependency> - <groupId>io.rest-assured</groupId> - <artifactId>rest-assured</artifactId> - <scope>test</scope> - </dependency> - </dependencies> - - <build> - <plugins> - <plugin> - <groupId>io.quarkus</groupId> - <artifactId>quarkus-maven-plugin</artifactId> - <executions> - <execution> - <goals> - <goal>build</goal> - </goals> - </execution> - </executions> - </plugin> - </plugins> - </build> -</project> diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml index aa22e70..676bd5c 100644 --- a/extensions-jvm/pom.xml +++ b/extensions-jvm/pom.xml @@ -48,7 +48,6 @@ <module>beanio</module> <module>beanstalk</module> <module>bonita</module> - <module>browse</module> <module>cassandraql</module> <module>cbor</module> <module>chatscript</module> diff --git a/extensions-jvm/browse/deployment/pom.xml b/extensions/browse/deployment/pom.xml similarity index 100% rename from extensions-jvm/browse/deployment/pom.xml rename to extensions/browse/deployment/pom.xml diff --git a/extensions-jvm/browse/deployment/src/main/java/org/apache/camel/quarkus/component/browse/deployment/BrowseProcessor.java b/extensions/browse/deployment/src/main/java/org/apache/camel/quarkus/component/browse/deployment/BrowseProcessor.java similarity index 68% rename from extensions-jvm/browse/deployment/src/main/java/org/apache/camel/quarkus/component/browse/deployment/BrowseProcessor.java rename to extensions/browse/deployment/src/main/java/org/apache/camel/quarkus/component/browse/deployment/BrowseProcessor.java index dabf2d8..0f9fb5d 100644 --- a/extensions-jvm/browse/deployment/src/main/java/org/apache/camel/quarkus/component/browse/deployment/BrowseProcessor.java +++ b/extensions/browse/deployment/src/main/java/org/apache/camel/quarkus/component/browse/deployment/BrowseProcessor.java @@ -17,11 +17,7 @@ package org.apache.camel.quarkus.component.browse.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.deployment.pkg.steps.NativeBuild; -import org.apache.camel.quarkus.core.JvmOnlyRecorder; import org.jboss.logging.Logger; class BrowseProcessor { @@ -33,14 +29,4 @@ class BrowseProcessor { FeatureBuildItem feature() { return new FeatureBuildItem(FEATURE); } - - /** - * Remove this once this extension starts supporting the native mode. - */ - @BuildStep(onlyIf = NativeBuild.class) - @Record(value = ExecutionTime.RUNTIME_INIT) - void warnJvmInNative(JvmOnlyRecorder recorder) { - JvmOnlyRecorder.warnJvmInNative(LOG, FEATURE); // warn at build time - recorder.warnJvmInNative(FEATURE); // warn at runtime - } } diff --git a/extensions-jvm/browse/pom.xml b/extensions/browse/pom.xml similarity index 97% rename from extensions-jvm/browse/pom.xml rename to extensions/browse/pom.xml index ee9e778..7d1964e 100644 --- a/extensions-jvm/browse/pom.xml +++ b/extensions/browse/pom.xml @@ -35,6 +35,5 @@ <modules> <module>deployment</module> <module>runtime</module> - <module>integration-test</module> </modules> </project> diff --git a/extensions-jvm/browse/runtime/pom.xml b/extensions/browse/runtime/pom.xml similarity index 98% rename from extensions-jvm/browse/runtime/pom.xml rename to extensions/browse/runtime/pom.xml index 8c9eab7..805a6ec 100644 --- a/extensions-jvm/browse/runtime/pom.xml +++ b/extensions/browse/runtime/pom.xml @@ -34,6 +34,7 @@ <properties> <camel.quarkus.jvmSince>1.1.0</camel.quarkus.jvmSince> + <camel.quarkus.nativeSince>1.2.0</camel.quarkus.nativeSince> </properties> <dependencyManagement> diff --git a/extensions-jvm/browse/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/browse/runtime/src/main/resources/META-INF/quarkus-extension.yaml similarity index 100% rename from extensions-jvm/browse/runtime/src/main/resources/META-INF/quarkus-extension.yaml rename to extensions/browse/runtime/src/main/resources/META-INF/quarkus-extension.yaml diff --git a/extensions/pom.xml b/extensions/pom.xml index 35b00d3..b4ed78e 100644 --- a/extensions/pom.xml +++ b/extensions/pom.xml @@ -78,6 +78,7 @@ <module>bindy</module> <module>box</module> <module>braintree</module> + <module>browse</module> <module>caffeine</module> <module>componentdsl</module> <module>consul</module> diff --git a/integration-tests/foundation/pom.xml b/integration-tests/foundation/pom.xml index af8326c..2238b9f 100644 --- a/integration-tests/foundation/pom.xml +++ b/integration-tests/foundation/pom.xml @@ -32,6 +32,10 @@ <dependencies> <dependency> <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-browse</artifactId> + </dependency> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-controlbus</artifactId> </dependency> <dependency> @@ -87,6 +91,19 @@ <!-- The following dependencies guarantee that this module is built after them. You can update them by running `mvn process-resources -Pformat -N` from the source tree root directory --> <dependency> <groupId>org.apache.camel.quarkus</groupId> + <artifactId>camel-quarkus-browse-deployment</artifactId> + <version>${project.version}</version> + <type>pom</type> + <scope>test</scope> + <exclusions> + <exclusion> + <groupId>*</groupId> + <artifactId>*</artifactId> + </exclusion> + </exclusions> + </dependency> + <dependency> + <groupId>org.apache.camel.quarkus</groupId> <artifactId>camel-quarkus-controlbus-deployment</artifactId> <version>${project.version}</version> <type>pom</type> diff --git a/extensions-jvm/browse/integration-test/src/main/java/org/apache/camel/quarkus/component/browse/it/BrowseResource.java b/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseResource.java similarity index 57% rename from extensions-jvm/browse/integration-test/src/main/java/org/apache/camel/quarkus/component/browse/it/BrowseResource.java rename to integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseResource.java index a6296a5..45fe203 100644 --- a/extensions-jvm/browse/integration-test/src/main/java/org/apache/camel/quarkus/component/browse/it/BrowseResource.java +++ b/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseResource.java @@ -14,9 +14,10 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.component.browse.it; +package org.apache.camel.quarkus.component.foundation.it.browse; + +import java.util.List; -import javax.enterprise.context.ApplicationScoped; import javax.inject.Inject; import javax.ws.rs.GET; import javax.ws.rs.Path; @@ -25,27 +26,34 @@ import javax.ws.rs.core.MediaType; import javax.ws.rs.core.Response; import org.apache.camel.CamelContext; -import org.jboss.logging.Logger; +import org.apache.camel.Exchange; +import org.apache.camel.ProducerTemplate; +import org.apache.camel.spi.BrowsableEndpoint; @Path("/browse") -@ApplicationScoped public class BrowseResource { - private static final Logger LOG = Logger.getLogger(BrowseResource.class); + public static final String MESSAGE = "Hello World"; - private static final String COMPONENT_BROWSE = "browse"; @Inject CamelContext context; - @Path("/load/component/browse") + @Inject + ProducerTemplate template; + @GET @Produces(MediaType.TEXT_PLAIN) - public Response loadComponentBrowse() throws Exception { - /* This is an autogenerated test */ - if (context.getComponent(COMPONENT_BROWSE) != null) { - return Response.ok().build(); + public Response getBrowsedExchanges() throws Exception { + template.sendBody("direct:browse", MESSAGE); + + BrowsableEndpoint browse = context.getEndpoint("browse:messageReceived", BrowsableEndpoint.class); + List<Exchange> exchanges = browse.getExchanges(); + + if (exchanges.size() == 1) { + String result = exchanges.get(0).getMessage().getBody(String.class); + return Response.ok(result).build(); } - LOG.warnf("Could not load [%s] from the Camel context", COMPONENT_BROWSE); - return Response.status(500, COMPONENT_BROWSE + " could not be loaded from the Camel context").build(); + + throw new IllegalStateException("Expected 1 browsed exchange but got " + exchanges.size()); } } diff --git a/extensions-jvm/browse/integration-test/src/test/java/org/apache/camel/quarkus/component/browse/it/BrowseTest.java b/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseRoutes.java similarity index 66% copy from extensions-jvm/browse/integration-test/src/test/java/org/apache/camel/quarkus/component/browse/it/BrowseTest.java copy to integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseRoutes.java index 3de1e04..7f05daa 100644 --- a/extensions-jvm/browse/integration-test/src/test/java/org/apache/camel/quarkus/component/browse/it/BrowseTest.java +++ b/integration-tests/foundation/src/main/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseRoutes.java @@ -14,21 +14,13 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.component.browse.it; +package org.apache.camel.quarkus.component.foundation.it.browse; -import io.quarkus.test.junit.QuarkusTest; -import io.restassured.RestAssured; -import org.junit.jupiter.api.Test; +import org.apache.camel.builder.RouteBuilder; -@QuarkusTest -class BrowseTest { - - @Test - public void loadComponentBrowse() { - /* A simple autogenerated test */ - RestAssured.get("/browse/load/component/browse") - .then() - .statusCode(200); +public class BrowseRoutes extends RouteBuilder { + @Override + public void configure() throws Exception { + from("direct:browse").to("browse:messageReceived").log("${body}"); } - } diff --git a/extensions-jvm/browse/integration-test/src/test/java/org/apache/camel/quarkus/component/browse/it/BrowseTest.java b/integration-tests/foundation/src/test/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseIT.java similarity index 66% copy from extensions-jvm/browse/integration-test/src/test/java/org/apache/camel/quarkus/component/browse/it/BrowseTest.java copy to integration-tests/foundation/src/test/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseIT.java index 3de1e04..e51dfa2 100644 --- a/extensions-jvm/browse/integration-test/src/test/java/org/apache/camel/quarkus/component/browse/it/BrowseTest.java +++ b/integration-tests/foundation/src/test/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseIT.java @@ -14,21 +14,11 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.component.browse.it; +package org.apache.camel.quarkus.component.foundation.it.browse; -import io.quarkus.test.junit.QuarkusTest; -import io.restassured.RestAssured; -import org.junit.jupiter.api.Test; +import io.quarkus.test.junit.NativeImageTest; -@QuarkusTest -class BrowseTest { - - @Test - public void loadComponentBrowse() { - /* A simple autogenerated test */ - RestAssured.get("/browse/load/component/browse") - .then() - .statusCode(200); - } +@NativeImageTest +class BrowseIT extends BrowseTest { } diff --git a/extensions-jvm/browse/integration-test/src/test/java/org/apache/camel/quarkus/component/browse/it/BrowseTest.java b/integration-tests/foundation/src/test/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseTest.java similarity index 81% rename from extensions-jvm/browse/integration-test/src/test/java/org/apache/camel/quarkus/component/browse/it/BrowseTest.java rename to integration-tests/foundation/src/test/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseTest.java index 3de1e04..ce44efa 100644 --- a/extensions-jvm/browse/integration-test/src/test/java/org/apache/camel/quarkus/component/browse/it/BrowseTest.java +++ b/integration-tests/foundation/src/test/java/org/apache/camel/quarkus/component/foundation/it/browse/BrowseTest.java @@ -14,21 +14,22 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -package org.apache.camel.quarkus.component.browse.it; +package org.apache.camel.quarkus.component.foundation.it.browse; import io.quarkus.test.junit.QuarkusTest; import io.restassured.RestAssured; import org.junit.jupiter.api.Test; +import static org.hamcrest.Matchers.is; + @QuarkusTest class BrowseTest { @Test - public void loadComponentBrowse() { - /* A simple autogenerated test */ - RestAssured.get("/browse/load/component/browse") + public void browseEndpoints() { + RestAssured.get("/browse") .then() + .body(is(BrowseResource.MESSAGE)) .statusCode(200); } - }