You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by pp...@apache.org on 2021/07/29 06:08:47 UTC

[camel-quarkus] 06/10: Fix and test serviceCall EIP #2628, fix #2952

This is an automated email from the ASF dual-hosted git repository.

ppalaga pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git

commit cb0dfa392b9127e0a705ed4192105084884d9176
Author: Peter Palaga <pp...@redhat.com>
AuthorDate: Tue Jul 27 18:11:06 2021 +0200

    Fix and test serviceCall EIP #2628, fix #2952
---
 .../core/cloud/deployment/CloudProcessor.java      | 50 ++++++++++++++++++++++
 extensions-core/http-common/deployment/pom.xml     |  4 ++
 extensions-core/http-common/runtime/pom.xml        |  4 ++
 extensions-jvm/dns/deployment/pom.xml              |  4 ++
 extensions-jvm/dns/runtime/pom.xml                 |  4 ++
 extensions-jvm/etcd/deployment/pom.xml             |  4 ++
 extensions-jvm/etcd/runtime/pom.xml                |  4 ++
 extensions-jvm/ribbon/deployment/pom.xml           |  4 ++
 extensions-jvm/ribbon/runtime/pom.xml              |  4 ++
 extensions-jvm/zookeeper/deployment/pom.xml        |  4 ++
 extensions-jvm/zookeeper/runtime/pom.xml           |  4 ++
 extensions/kubernetes/deployment/pom.xml           |  4 ++
 extensions/kubernetes/runtime/pom.xml              |  4 ++
 .../camel/quarkus/component/http/it/HttpRoute.java | 11 +++++
 .../camel/quarkus/component/http/it/HttpTest.java  | 14 ++++++
 15 files changed, 123 insertions(+)

diff --git a/extensions-core/core-cloud/deployment/src/main/java/org/apache/camel/quarkus/core/cloud/deployment/CloudProcessor.java b/extensions-core/core-cloud/deployment/src/main/java/org/apache/camel/quarkus/core/cloud/deployment/CloudProcessor.java
new file mode 100644
index 0000000..7c0d620
--- /dev/null
+++ b/extensions-core/core-cloud/deployment/src/main/java/org/apache/camel/quarkus/core/cloud/deployment/CloudProcessor.java
@@ -0,0 +1,50 @@
+/*
+ * 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.core.cloud.deployment;
+
+import io.quarkus.deployment.annotations.BuildProducer;
+import io.quarkus.deployment.annotations.BuildStep;
+import io.quarkus.deployment.builditem.CombinedIndexBuildItem;
+import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem;
+import org.apache.camel.model.cloud.ServiceCallConfiguration;
+import org.apache.camel.quarkus.core.deployment.spi.CamelServiceDestination;
+import org.apache.camel.quarkus.core.deployment.spi.CamelServicePatternBuildItem;
+import org.jboss.jandex.DotName;
+import org.jboss.jandex.IndexView;
+
+class CloudProcessor {
+    @BuildStep
+    void servicePatterns(BuildProducer<CamelServicePatternBuildItem> services) {
+        services.produce(new CamelServicePatternBuildItem(
+                CamelServiceDestination.DISCOVERY,
+                true,
+                "META-INF/services/org/apache/camel/cloud/*"));
+
+    }
+
+    @BuildStep
+    void reflectiveClasses(BuildProducer<ReflectiveClassBuildItem> reflectiveClass,
+            CombinedIndexBuildItem combinedIndexBuildItem) {
+        // TODO: remove when https://github.com/apache/camel-quarkus/issues/2955 is fixed
+        IndexView index = combinedIndexBuildItem.getIndex();
+        index.getAllKnownSubclasses(DotName.createSimple(ServiceCallConfiguration.class.getName()))
+                .stream()
+                .map(classInfo -> new ReflectiveClassBuildItem(true, false, classInfo.name().toString()))
+                .forEach(reflectiveClass::produce);
+    }
+
+}
diff --git a/extensions-core/http-common/deployment/pom.xml b/extensions-core/http-common/deployment/pom.xml
index 4665df0..7d0158b 100644
--- a/extensions-core/http-common/deployment/pom.xml
+++ b/extensions-core/http-common/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-http-common</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions-core/http-common/runtime/pom.xml b/extensions-core/http-common/runtime/pom.xml
index 9e85c36..c968781 100644
--- a/extensions-core/http-common/runtime/pom.xml
+++ b/extensions-core/http-common/runtime/pom.xml
@@ -46,6 +46,10 @@
             <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
 
         <!-- camel -->
         <dependency>
diff --git a/extensions-jvm/dns/deployment/pom.xml b/extensions-jvm/dns/deployment/pom.xml
index 51f4760..a636793 100644
--- a/extensions-jvm/dns/deployment/pom.xml
+++ b/extensions-jvm/dns/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-dns</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions-jvm/dns/runtime/pom.xml b/extensions-jvm/dns/runtime/pom.xml
index 613bdc6..04698c1 100644
--- a/extensions-jvm/dns/runtime/pom.xml
+++ b/extensions-jvm/dns/runtime/pom.xml
@@ -52,6 +52,10 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-dns</artifactId>
         </dependency>
diff --git a/extensions-jvm/etcd/deployment/pom.xml b/extensions-jvm/etcd/deployment/pom.xml
index 66de607..d75e406 100644
--- a/extensions-jvm/etcd/deployment/pom.xml
+++ b/extensions-jvm/etcd/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-etcd</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions-jvm/etcd/runtime/pom.xml b/extensions-jvm/etcd/runtime/pom.xml
index 65931ee..4539828 100644
--- a/extensions-jvm/etcd/runtime/pom.xml
+++ b/extensions-jvm/etcd/runtime/pom.xml
@@ -52,6 +52,10 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-etcd</artifactId>
         </dependency>
diff --git a/extensions-jvm/ribbon/deployment/pom.xml b/extensions-jvm/ribbon/deployment/pom.xml
index d5647a4..dbe5a5d 100644
--- a/extensions-jvm/ribbon/deployment/pom.xml
+++ b/extensions-jvm/ribbon/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-ribbon</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions-jvm/ribbon/runtime/pom.xml b/extensions-jvm/ribbon/runtime/pom.xml
index 0b27110..774c51e 100644
--- a/extensions-jvm/ribbon/runtime/pom.xml
+++ b/extensions-jvm/ribbon/runtime/pom.xml
@@ -52,6 +52,10 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-ribbon</artifactId>
         </dependency>
diff --git a/extensions-jvm/zookeeper/deployment/pom.xml b/extensions-jvm/zookeeper/deployment/pom.xml
index 9adfa9d..f6f603e 100644
--- a/extensions-jvm/zookeeper/deployment/pom.xml
+++ b/extensions-jvm/zookeeper/deployment/pom.xml
@@ -36,6 +36,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-zookeeper</artifactId>
         </dependency>
     </dependencies>
diff --git a/extensions-jvm/zookeeper/runtime/pom.xml b/extensions-jvm/zookeeper/runtime/pom.xml
index 8793a87..f0af7c8 100644
--- a/extensions-jvm/zookeeper/runtime/pom.xml
+++ b/extensions-jvm/zookeeper/runtime/pom.xml
@@ -52,6 +52,10 @@
             <artifactId>camel-quarkus-core</artifactId>
         </dependency>
         <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
+        <dependency>
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-zookeeper</artifactId>
         </dependency>
diff --git a/extensions/kubernetes/deployment/pom.xml b/extensions/kubernetes/deployment/pom.xml
index 1c0038c..d312abd 100644
--- a/extensions/kubernetes/deployment/pom.xml
+++ b/extensions/kubernetes/deployment/pom.xml
@@ -40,6 +40,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud-deployment</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-support-commons-logging-deployment</artifactId>
         </dependency>
         <dependency>
diff --git a/extensions/kubernetes/runtime/pom.xml b/extensions/kubernetes/runtime/pom.xml
index f806582..4ea00b1 100644
--- a/extensions/kubernetes/runtime/pom.xml
+++ b/extensions/kubernetes/runtime/pom.xml
@@ -68,6 +68,10 @@
         </dependency>
         <dependency>
             <groupId>org.apache.camel.quarkus</groupId>
+            <artifactId>camel-quarkus-core-cloud</artifactId>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.camel.quarkus</groupId>
             <artifactId>camel-quarkus-support-commons-logging</artifactId>
         </dependency>
         <dependency>
diff --git a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java
index ed7c891..a6b0d17 100644
--- a/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java
+++ b/integration-tests/http/src/main/java/org/apache/camel/quarkus/component/http/it/HttpRoute.java
@@ -54,6 +54,17 @@ public class HttpRoute extends RouteBuilder {
                         }
                     }
                 });
+
+        from("netty-http:http://0.0.0.0:{{camel.netty-http.test-port}}/test/server/serviceCall")
+                .serviceCall()
+                .name("myService/test/server/myService")
+                .component("netty-http")
+                .staticServiceDiscovery()
+                .servers("myService@localhost:{{camel.netty-http.test-port}}")
+                .end();
+        from("netty-http:http://0.0.0.0:{{camel.netty-http.test-port}}/test/server/myService")
+                .transform().constant("Hello from myService");
+
     }
 
     @Named
diff --git a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
index 52007c1..f81a1f2 100644
--- a/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
+++ b/integration-tests/http/src/test/java/org/apache/camel/quarkus/component/http/it/HttpTest.java
@@ -21,6 +21,7 @@ import io.quarkus.test.junit.QuarkusTest;
 import io.restassured.RestAssured;
 import io.restassured.http.ContentType;
 import org.eclipse.microprofile.config.ConfigProvider;
+import org.hamcrest.Matchers;
 import org.junit.jupiter.api.Test;
 import org.junit.jupiter.params.ParameterizedTest;
 import org.junit.jupiter.params.provider.MethodSource;
@@ -199,6 +200,19 @@ class HttpTest {
                         "fq", is(not(empty())));
     }
 
+    @Test
+    public void serviceCall() {
+        final int port = ConfigProvider.getConfig().getValue("camel.netty-http.test-port", Integer.class);
+        RestAssured
+                .given()
+                .port(port)
+                .when()
+                .get("/test/server/serviceCall")
+                .then()
+                .statusCode(200)
+                .body(Matchers.is("Hello from myService"));
+    }
+
     private static String[] getHttpComponentNames() {
         return HTTP_COMPONENTS;
     }