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);
}
-
}