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