You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2020/09/17 09:42:53 UTC

[camel-quarkus] 02/02: Browse native support

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 <ja...@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);
     }
-
 }