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


The following commit(s) were added to refs/heads/master by this push:
     new 9512ba2  Make camel-quarkus-rest depend on camel-quarkus-platform-http 
#1244
9512ba2 is described below

commit 9512ba20acf82243887fec272b3725be95692ebc
Author: lburgazzoli <lburgazz...@gmail.com>
AuthorDate: Mon May 25 10:57:04 2020 +0200

    Make camel-quarkus-rest depend on camel-quarkus-platform-http #1244
---
 docs/modules/ROOT/pages/extensions/rest.adoc       |  5 +++
 extensions/rest/deployment/pom.xml                 |  4 ++
 .../component/rest/deployment/RestProcessor.java   | 10 +++++
 extensions/rest/runtime/pom.xml                    |  4 ++
 .../rest/runtime/src/main/doc/configuration.adoc   |  1 +
 .../camel/quarkus/component/rest/RestRecorder.java | 44 ++++++++++++++++++++
 integration-tests/pom.xml                          |  1 +
 integration-tests/rest-binding-mode-xml/pom.xml    |  4 --
 .../{rest-binding-mode-xml => rest}/pom.xml        | 23 +++--------
 .../quarkus/component/rest/it/RestResource.java}   | 48 ++++++++++------------
 .../camel/quarkus/component/rest/it/RestIT.java    | 23 +++++++++++
 .../camel/quarkus/component/rest/it/RestTest.java  | 36 ++++++++++++++++
 .../quarkus/component/servlet/CamelRoute.java      |  5 +++
 tooling/scripts/test-categories.yaml               |  1 +
 14 files changed, 160 insertions(+), 49 deletions(-)

diff --git a/docs/modules/ROOT/pages/extensions/rest.adoc 
b/docs/modules/ROOT/pages/extensions/rest.adoc
index 524f6a9..2c3589e 100644
--- a/docs/modules/ROOT/pages/extensions/rest.adoc
+++ b/docs/modules/ROOT/pages/extensions/rest.adoc
@@ -27,3 +27,8 @@ Please refer to the above links for usage and configuration 
details.
 ----
 
 Check the xref:user-guide/index.adoc[User guide] for more information about 
writing Camel Quarkus applications.
+
+== Additional Camel Quarkus configuration
+
+This extension configures the xref:extensions/platform-http.adoc as the 
component that provides the REST transport.
+
diff --git a/extensions/rest/deployment/pom.xml 
b/extensions/rest/deployment/pom.xml
index e18c9b7..56b7ee1 100644
--- a/extensions/rest/deployment/pom.xml
+++ b/extensions/rest/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-platform-http-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-rest</artifactId>
         </dependency>
     </dependencies>
diff --git 
a/extensions/rest/deployment/src/main/java/org/apache/camel/quarkus/component/rest/deployment/RestProcessor.java
 
b/extensions/rest/deployment/src/main/java/org/apache/camel/quarkus/component/rest/deployment/RestProcessor.java
index 3f8409a..b17fc2f 100644
--- 
a/extensions/rest/deployment/src/main/java/org/apache/camel/quarkus/component/rest/deployment/RestProcessor.java
+++ 
b/extensions/rest/deployment/src/main/java/org/apache/camel/quarkus/component/rest/deployment/RestProcessor.java
@@ -17,7 +17,11 @@
 package org.apache.camel.quarkus.component.rest.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 org.apache.camel.quarkus.component.rest.RestRecorder;
+import 
org.apache.camel.quarkus.core.deployment.spi.CamelContextCustomizerBuildItem;
 import org.apache.camel.quarkus.core.deployment.spi.CamelServiceDestination;
 import 
org.apache.camel.quarkus.core.deployment.spi.CamelServicePatternBuildItem;
 
@@ -37,4 +41,10 @@ class RestProcessor {
                 "META-INF/services/org/apache/camel/rest/*",
                 "META-INF/services/org/apache/camel/restapi/*");
     }
+
+    @Record(ExecutionTime.STATIC_INIT)
+    @BuildStep
+    CamelContextCustomizerBuildItem customizeCamelContext(RestRecorder 
recorder) {
+        return new 
CamelContextCustomizerBuildItem(recorder.customizeCamelContext());
+    }
 }
diff --git a/extensions/rest/runtime/pom.xml b/extensions/rest/runtime/pom.xml
index 4ef1e2f..7799e0f 100644
--- a/extensions/rest/runtime/pom.xml
+++ b/extensions/rest/runtime/pom.xml
@@ -51,6 +51,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-platform-http</artifactId>
+        </dependency>
 
         <!-- camel -->
         <dependency>
diff --git a/extensions/rest/runtime/src/main/doc/configuration.adoc 
b/extensions/rest/runtime/src/main/doc/configuration.adoc
new file mode 100644
index 0000000..05a6646
--- /dev/null
+++ b/extensions/rest/runtime/src/main/doc/configuration.adoc
@@ -0,0 +1 @@
+This extension configures the xref:extensions/platform-http.adoc as the 
component that provides the REST transport.
\ No newline at end of file
diff --git 
a/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/RestRecorder.java
 
b/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/RestRecorder.java
new file mode 100644
index 0000000..db3dd82
--- /dev/null
+++ 
b/extensions/rest/runtime/src/main/java/org/apache/camel/quarkus/component/rest/RestRecorder.java
@@ -0,0 +1,44 @@
+/*
+ * 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.
+ */
+package org.apache.camel.quarkus.component.rest;
+
+import io.quarkus.runtime.RuntimeValue;
+import io.quarkus.runtime.annotations.Recorder;
+import org.apache.camel.CamelContext;
+import org.apache.camel.component.platform.http.PlatformHttpConstants;
+import org.apache.camel.quarkus.core.CamelContextCustomizer;
+import org.jboss.logging.Logger;
+
+@Recorder
+public class RestRecorder {
+    public RuntimeValue<CamelContextCustomizer> customizeCamelContext() {
+        return new RuntimeValue<>(new RestCamelContextCustomizer());
+    }
+
+    private static class RestCamelContextCustomizer implements 
CamelContextCustomizer {
+        @Override
+        public void customize(CamelContext context) {
+            String component = context.getRestConfiguration().getComponent();
+            if (component == null) {
+                Logger.getLogger(RestCamelContextCustomizer.class).debugf(
+                        "Set %s as default component for Camel REST DSL", 
PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME);
+
+                
context.getRestConfiguration().setComponent(PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME);
+            }
+        }
+    }
+}
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index b9a3835..a3fc1c8 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -125,6 +125,7 @@
         <module>qute</module>
         <module>reactive-streams</module>
         <module>ref</module>
+        <module>rest</module>
         <module>rest-binding-mode-xml</module>
         <module>rest-openapi</module>
         <module>salesforce</module>
diff --git a/integration-tests/rest-binding-mode-xml/pom.xml 
b/integration-tests/rest-binding-mode-xml/pom.xml
index ac54620..792641f 100644
--- a/integration-tests/rest-binding-mode-xml/pom.xml
+++ b/integration-tests/rest-binding-mode-xml/pom.xml
@@ -42,10 +42,6 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-platform-http</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-rest</artifactId>
         </dependency>
         <dependency>
diff --git a/integration-tests/rest-binding-mode-xml/pom.xml 
b/integration-tests/rest/pom.xml
similarity index 84%
copy from integration-tests/rest-binding-mode-xml/pom.xml
copy to integration-tests/rest/pom.xml
index ac54620..feae05f 100644
--- a/integration-tests/rest-binding-mode-xml/pom.xml
+++ b/integration-tests/rest/pom.xml
@@ -25,9 +25,9 @@
         <version>1.1.0-SNAPSHOT</version>
     </parent>
 
-    
<artifactId>camel-quarkus-integration-test-rest-binding-mode-xml</artifactId>
-    <name>Camel Quarkus :: Integration Tests :: Rest :: Binding Mode XML</name>
-    <description>Integration tests for Camel Quarkus Rest extension with XML 
binding mode</description>
+    <artifactId>camel-quarkus-integration-test-rest</artifactId>
+    <name>Camel Quarkus :: Integration Tests :: Rest</name>
+    <description>Integration tests for Camel Quarkus Rest 
extension</description>
 
     <properties>
         <!-- mvnd, a.k.a. Maven Daemon: https://github.com/gnodet/mvnd -->
@@ -42,19 +42,11 @@
     <dependencies>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-platform-http</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-rest</artifactId>
         </dependency>
         <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-xml-jaxb</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.camel.quarkus</groupId>
-            <artifactId>camel-quarkus-jaxb</artifactId>
+            <groupId>io.quarkus</groupId>
+            <artifactId>quarkus-resteasy-jsonb</artifactId>
         </dependency>
 
         <!-- test dependencies -->
@@ -68,11 +60,6 @@
             <artifactId>rest-assured</artifactId>
             <scope>test</scope>
         </dependency>
-        <dependency>
-            <groupId>org.assertj</groupId>
-            <artifactId>assertj-core</artifactId>
-            <scope>test</scope>
-        </dependency>
     </dependencies>
 
     <build>
diff --git 
a/integration-tests/servlet/src/main/java/org/apache/camel/quarkus/component/servlet/CamelRoute.java
 
b/integration-tests/rest/src/main/java/org/apache/camel/quarkus/component/rest/it/RestResource.java
similarity index 51%
copy from 
integration-tests/servlet/src/main/java/org/apache/camel/quarkus/component/servlet/CamelRoute.java
copy to 
integration-tests/rest/src/main/java/org/apache/camel/quarkus/component/rest/it/RestResource.java
index 8ba1c13..90f8c63 100644
--- 
a/integration-tests/servlet/src/main/java/org/apache/camel/quarkus/component/servlet/CamelRoute.java
+++ 
b/integration-tests/rest/src/main/java/org/apache/camel/quarkus/component/rest/it/RestResource.java
@@ -14,37 +14,31 @@
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-package org.apache.camel.quarkus.component.servlet;
+package org.apache.camel.quarkus.component.rest.it;
 
 import javax.enterprise.context.ApplicationScoped;
+import javax.inject.Inject;
+import javax.json.Json;
+import javax.json.JsonObject;
+import javax.ws.rs.GET;
+import javax.ws.rs.Path;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.MediaType;
 
-import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.CamelContext;
 
+@Path("/rest")
 @ApplicationScoped
-public class CamelRoute extends RouteBuilder {
-
-    @Override
-    public void configure() {
-
-        rest()
-                .get("/rest-get")
-                .route()
-                .setBody(constant("GET: /rest-get"))
-                .endRest()
-                .post("/rest-post")
-                .route()
-                .setBody(constant("POST: /rest-post"))
-                .endRest();
-
-        from("servlet://hello?matchOnUriPrefix=true")
-                .setBody(constant("GET: /hello"));
-
-        from("servlet://custom?servletName=my-named-servlet")
-                .setBody(constant("GET: /custom"));
-
-        from("servlet://favorite?servletName=my-favorite-servlet")
-                .setBody(constant("GET: /favorite"));
-
+public class RestResource {
+    @Inject
+    CamelContext camelContext;
+
+    @Path("/inspect/configuration")
+    @GET
+    @Produces(MediaType.APPLICATION_JSON)
+    public JsonObject inspectConfiguration() {
+        return Json.createObjectBuilder()
+                .add("component", 
camelContext.getRestConfiguration().getComponent())
+                .build();
     }
-
 }
diff --git 
a/integration-tests/rest/src/test/java/org/apache/camel/quarkus/component/rest/it/RestIT.java
 
b/integration-tests/rest/src/test/java/org/apache/camel/quarkus/component/rest/it/RestIT.java
new file mode 100644
index 0000000..a46a79e
--- /dev/null
+++ 
b/integration-tests/rest/src/test/java/org/apache/camel/quarkus/component/rest/it/RestIT.java
@@ -0,0 +1,23 @@
+/*
+ * 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.
+ */
+package org.apache.camel.quarkus.component.rest.it;
+
+import io.quarkus.test.junit.NativeImageTest;
+
+@NativeImageTest
+class RestIT extends RestTest {
+}
diff --git 
a/integration-tests/rest/src/test/java/org/apache/camel/quarkus/component/rest/it/RestTest.java
 
b/integration-tests/rest/src/test/java/org/apache/camel/quarkus/component/rest/it/RestTest.java
new file mode 100644
index 0000000..1deb123
--- /dev/null
+++ 
b/integration-tests/rest/src/test/java/org/apache/camel/quarkus/component/rest/it/RestTest.java
@@ -0,0 +1,36 @@
+/*
+ * 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.
+ */
+package org.apache.camel.quarkus.component.rest.it;
+
+import io.quarkus.test.junit.QuarkusTest;
+import io.restassured.RestAssured;
+import org.apache.camel.component.platform.http.PlatformHttpConstants;
+import org.junit.jupiter.api.Test;
+
+import static org.hamcrest.Matchers.is;
+
+@QuarkusTest
+class RestTest {
+    @Test
+    public void inspectConfiguration() {
+        RestAssured.when()
+                .get("/rest/inspect/configuration")
+                .then()
+                .statusCode(200)
+                .body("component", 
is(PlatformHttpConstants.PLATFORM_HTTP_COMPONENT_NAME));
+    }
+}
diff --git 
a/integration-tests/servlet/src/main/java/org/apache/camel/quarkus/component/servlet/CamelRoute.java
 
b/integration-tests/servlet/src/main/java/org/apache/camel/quarkus/component/servlet/CamelRoute.java
index 8ba1c13..0730289 100644
--- 
a/integration-tests/servlet/src/main/java/org/apache/camel/quarkus/component/servlet/CamelRoute.java
+++ 
b/integration-tests/servlet/src/main/java/org/apache/camel/quarkus/component/servlet/CamelRoute.java
@@ -25,6 +25,11 @@ public class CamelRoute extends RouteBuilder {
 
     @Override
     public void configure() {
+        // by default the camel-quarkus-rest component sets platform-http
+        // as the component that provides the transport and since here we
+        // are testing the servlet component. we have to force it
+        restConfiguration()
+                .component("servlet");
 
         rest()
                 .get("/rest-get")
diff --git a/tooling/scripts/test-categories.yaml 
b/tooling/scripts/test-categories.yaml
index 375ea1f..c8a6d9a 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -106,6 +106,7 @@ platform:
   - platform-http
   - platform-http-engine
   - reactive-streams
+  - rest
   - rest-openapi
 saas:
   - box

Reply via email to