This is an automated email from the ASF dual-hosted git repository.
jamesnetherton pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel-quarkus.git
The following commit(s) were added to refs/heads/main by this push:
new 3c637f1814 Add elasticsearch-rest-client native support
3c637f1814 is described below
commit 3c637f18149e962764cb1a482b49c16791315c0d
Author: James Netherton <[email protected]>
AuthorDate: Tue Jun 11 11:23:46 2024 +0100
Add elasticsearch-rest-client native support
Fixes #6173
---
.../components/elasticsearch-rest-client.yml | 6 ++--
.../extensions/elasticsearch-rest-client.adoc | 14 +++++---
extensions-jvm/pom.xml | 1 -
.../elasticsearch-rest-client/deployment/pom.xml | 0
.../ElasticsearchRestClientProcessor.java | 17 ---------
.../elasticsearch-rest-client/pom.xml | 2 +-
.../elasticsearch-rest-client/runtime/pom.xml | 1 +
.../main/resources/META-INF/quarkus-extension.yaml | 3 +-
extensions/pom.xml | 1 +
integration-tests-jvm/pom.xml | 1 -
.../elasticsearch-rest-client/pom.xml | 38 ++++++++++++++++++++
.../elasticsearch/rest/client/it/Document.java | 0
.../client/it/ElasticsearchRestClientResource.java | 0
.../client/it/ElasticsearchRestClientRoutes.java | 0
.../src/main/resources/application.properties | 0
.../rest/client/it/ElasticsearchRestClientIT.java | 40 ++--------------------
.../client/it/ElasticsearchRestClientTest.java | 0
.../client/it/ElasticsearchRestTestResource.java | 16 +++++++++
integration-tests/pom.xml | 1 +
tooling/scripts/test-categories.yaml | 1 +
20 files changed, 75 insertions(+), 67 deletions(-)
diff --git
a/docs/modules/ROOT/examples/components/elasticsearch-rest-client.yml
b/docs/modules/ROOT/examples/components/elasticsearch-rest-client.yml
index bb26f5144d..b8975788c3 100644
--- a/docs/modules/ROOT/examples/components/elasticsearch-rest-client.yml
+++ b/docs/modules/ROOT/examples/components/elasticsearch-rest-client.yml
@@ -2,11 +2,11 @@
# This file was generated by
camel-quarkus-maven-plugin:update-extension-doc-page
cqArtifactId: camel-quarkus-elasticsearch-rest-client
cqArtifactIdBase: elasticsearch-rest-client
-cqNativeSupported: false
-cqStatus: Preview
+cqNativeSupported: true
+cqStatus: Stable
cqDeprecated: false
cqJvmSince: 3.8.0
-cqNativeSince: n/a
+cqNativeSince: 3.12.0
cqCamelPartName: elasticsearch-rest-client
cqCamelPartTitle: Elasticsearch Low level Rest Client
cqCamelPartDescription: Perform queries and other operations on Elasticsearch
or OpenSearch (uses low-level client).
diff --git
a/docs/modules/ROOT/pages/reference/extensions/elasticsearch-rest-client.adoc
b/docs/modules/ROOT/pages/reference/extensions/elasticsearch-rest-client.adoc
index b8a1eb03c0..fc06190f3b 100644
---
a/docs/modules/ROOT/pages/reference/extensions/elasticsearch-rest-client.adoc
+++
b/docs/modules/ROOT/pages/reference/extensions/elasticsearch-rest-client.adoc
@@ -4,17 +4,17 @@
= Elasticsearch Low level Rest Client
:linkattrs:
:cq-artifact-id: camel-quarkus-elasticsearch-rest-client
-:cq-native-supported: false
-:cq-status: Preview
-:cq-status-deprecation: Preview
+:cq-native-supported: true
+:cq-status: Stable
+:cq-status-deprecation: Stable
:cq-description: Perform queries and other operations on Elasticsearch or
OpenSearch (uses low-level client).
:cq-deprecated: false
:cq-jvm-since: 3.8.0
-:cq-native-since: n/a
+:cq-native-since: 3.12.0
ifeval::[{doc-show-badges} == true]
[.badges]
-[.badge-key]##JVM since##[.badge-supported]##3.8.0##
[.badge-key]##Native##[.badge-unsupported]##unsupported##
+[.badge-key]##JVM since##[.badge-supported]##3.8.0## [.badge-key]##Native
since##[.badge-supported]##3.12.0##
endif::[]
Perform queries and other operations on Elasticsearch or OpenSearch (uses
low-level client).
@@ -29,6 +29,10 @@ Please refer to the above link for usage and configuration
details.
[id="extensions-elasticsearch-rest-client-maven-coordinates"]
== Maven coordinates
+https://{link-quarkus-code-generator}/?extension-search=camel-quarkus-elasticsearch-rest-client[Create
a new project with this extension on {link-quarkus-code-generator},
window="_blank"]
+
+Or add the coordinates to your existing project:
+
[source,xml]
----
<dependency>
diff --git a/extensions-jvm/pom.xml b/extensions-jvm/pom.xml
index 5f2471a6fc..cfdf76b6c0 100644
--- a/extensions-jvm/pom.xml
+++ b/extensions-jvm/pom.xml
@@ -60,7 +60,6 @@
<module>dsl-modeline</module>
<module>ehcache</module>
<module>elasticsearch</module>
- <module>elasticsearch-rest-client</module>
<module>etcd3</module>
<module>fastjson</module>
<module>flink</module>
diff --git a/extensions-jvm/elasticsearch-rest-client/deployment/pom.xml
b/extensions/elasticsearch-rest-client/deployment/pom.xml
similarity index 100%
rename from extensions-jvm/elasticsearch-rest-client/deployment/pom.xml
rename to extensions/elasticsearch-rest-client/deployment/pom.xml
diff --git
a/extensions-jvm/elasticsearch-rest-client/deployment/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/deployment/ElasticsearchRestClientProcessor.java
b/extensions/elasticsearch-rest-client/deployment/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/deployment/ElasticsearchRestClientProcessor.java
similarity index 61%
rename from
extensions-jvm/elasticsearch-rest-client/deployment/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/deployment/ElasticsearchRestClientProcessor.java
rename to
extensions/elasticsearch-rest-client/deployment/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/deployment/ElasticsearchRestClientProcessor.java
index ef01d96196..480f4c387f 100644
---
a/extensions-jvm/elasticsearch-rest-client/deployment/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/deployment/ElasticsearchRestClientProcessor.java
+++
b/extensions/elasticsearch-rest-client/deployment/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/deployment/ElasticsearchRestClientProcessor.java
@@ -17,30 +17,13 @@
package
org.apache.camel.quarkus.component.elasticsearch.rest.client.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.NativeOrNativeSourcesBuild;
-import org.apache.camel.quarkus.core.JvmOnlyRecorder;
-import org.jboss.logging.Logger;
class ElasticsearchRestClientProcessor {
-
- private static final Logger LOG =
Logger.getLogger(ElasticsearchRestClientProcessor.class);
private static final String FEATURE = "camel-elasticsearch-rest-client";
@BuildStep
FeatureBuildItem feature() {
return new FeatureBuildItem(FEATURE);
}
-
- /**
- * Remove this once this extension starts supporting the native mode.
- */
- @BuildStep(onlyIf = NativeOrNativeSourcesBuild.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/elasticsearch-rest-client/pom.xml
b/extensions/elasticsearch-rest-client/pom.xml
similarity index 96%
rename from extensions-jvm/elasticsearch-rest-client/pom.xml
rename to extensions/elasticsearch-rest-client/pom.xml
index 904080cef7..3838b1e3d7 100644
--- a/extensions-jvm/elasticsearch-rest-client/pom.xml
+++ b/extensions/elasticsearch-rest-client/pom.xml
@@ -21,7 +21,7 @@
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.camel.quarkus</groupId>
- <artifactId>camel-quarkus-extensions-jvm</artifactId>
+ <artifactId>camel-quarkus-extensions</artifactId>
<version>3.12.0-SNAPSHOT</version>
<relativePath>../pom.xml</relativePath>
</parent>
diff --git a/extensions-jvm/elasticsearch-rest-client/runtime/pom.xml
b/extensions/elasticsearch-rest-client/runtime/pom.xml
similarity index 98%
rename from extensions-jvm/elasticsearch-rest-client/runtime/pom.xml
rename to extensions/elasticsearch-rest-client/runtime/pom.xml
index 771e9880b4..aaa7c2a99b 100644
--- a/extensions-jvm/elasticsearch-rest-client/runtime/pom.xml
+++ b/extensions/elasticsearch-rest-client/runtime/pom.xml
@@ -32,6 +32,7 @@
<properties>
<camel.quarkus.jvmSince>3.8.0</camel.quarkus.jvmSince>
+ <camel.quarkus.nativeSince>3.12.0</camel.quarkus.nativeSince>
</properties>
<dependencies>
diff --git
a/extensions-jvm/elasticsearch-rest-client/runtime/src/main/resources/META-INF/quarkus-extension.yaml
b/extensions/elasticsearch-rest-client/runtime/src/main/resources/META-INF/quarkus-extension.yaml
similarity index 97%
rename from
extensions-jvm/elasticsearch-rest-client/runtime/src/main/resources/META-INF/quarkus-extension.yaml
rename to
extensions/elasticsearch-rest-client/runtime/src/main/resources/META-INF/quarkus-extension.yaml
index e26a769ed5..9519f74c10 100644
---
a/extensions-jvm/elasticsearch-rest-client/runtime/src/main/resources/META-INF/quarkus-extension.yaml
+++
b/extensions/elasticsearch-rest-client/runtime/src/main/resources/META-INF/quarkus-extension.yaml
@@ -25,9 +25,8 @@ name: "Camel Elasticsearch Low level Rest Client"
description: "Perform queries and other operations on Elasticsearch or
OpenSearch (uses low-level client)"
metadata:
icon-url:
"https://raw.githubusercontent.com/apache/camel-website/main/antora-ui-camel/src/img/logo-d.svg"
- unlisted: true
guide:
"https://camel.apache.org/camel-quarkus/latest/reference/extensions/elasticsearch-rest-client.html"
categories:
- "integration"
status:
- - "preview"
+ - "stable"
diff --git a/extensions/pom.xml b/extensions/pom.xml
index 12c0c59b99..e6f4e545f4 100644
--- a/extensions/pom.xml
+++ b/extensions/pom.xml
@@ -97,6 +97,7 @@
<module>direct</module>
<module>disruptor</module>
<module>dropbox</module>
+ <module>elasticsearch-rest-client</module>
<module>exec</module>
<module>fhir</module>
<module>file</module>
diff --git a/integration-tests-jvm/pom.xml b/integration-tests-jvm/pom.xml
index 259bb5a6d1..6815865497 100644
--- a/integration-tests-jvm/pom.xml
+++ b/integration-tests-jvm/pom.xml
@@ -59,7 +59,6 @@
<module>dsl-modeline</module>
<module>ehcache</module>
<module>elasticsearch</module>
- <module>elasticsearch-rest-client</module>
<module>etcd3</module>
<module>fastjson</module>
<module>flink</module>
diff --git a/integration-tests-jvm/elasticsearch-rest-client/pom.xml
b/integration-tests/elasticsearch-rest-client/pom.xml
similarity index 82%
rename from integration-tests-jvm/elasticsearch-rest-client/pom.xml
rename to integration-tests/elasticsearch-rest-client/pom.xml
index 366830148b..e84b1b22c0 100644
--- a/integration-tests-jvm/elasticsearch-rest-client/pom.xml
+++ b/integration-tests/elasticsearch-rest-client/pom.xml
@@ -142,5 +142,43 @@
</dependency>
</dependencies>
</profile>
+ <profile>
+ <id>native</id>
+ <activation>
+ <property>
+ <name>native</name>
+ </property>
+ </activation>
+ <properties>
+ <quarkus.native.enabled>true</quarkus.native.enabled>
+ </properties>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-failsafe-plugin</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>integration-test</goal>
+ <goal>verify</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>skip-testcontainers-tests</id>
+ <activation>
+ <property>
+ <name>skip-testcontainers-tests</name>
+ </property>
+ </activation>
+ <properties>
+ <skipTests>true</skipTests>
+ </properties>
+ </profile>
</profiles>
</project>
diff --git
a/integration-tests-jvm/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/Document.java
b/integration-tests/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/Document.java
similarity index 100%
copy from
integration-tests-jvm/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/Document.java
copy to
integration-tests/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/Document.java
diff --git
a/integration-tests-jvm/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientResource.java
b/integration-tests/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientResource.java
similarity index 100%
rename from
integration-tests-jvm/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientResource.java
rename to
integration-tests/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientResource.java
diff --git
a/integration-tests-jvm/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientRoutes.java
b/integration-tests/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientRoutes.java
similarity index 100%
rename from
integration-tests-jvm/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientRoutes.java
rename to
integration-tests/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientRoutes.java
diff --git
a/integration-tests-jvm/elasticsearch-rest-client/src/main/resources/application.properties
b/integration-tests/elasticsearch-rest-client/src/main/resources/application.properties
similarity index 100%
rename from
integration-tests-jvm/elasticsearch-rest-client/src/main/resources/application.properties
rename to
integration-tests/elasticsearch-rest-client/src/main/resources/application.properties
diff --git
a/integration-tests-jvm/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/Document.java
b/integration-tests/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientIT.java
similarity index 50%
rename from
integration-tests-jvm/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/Document.java
rename to
integration-tests/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientIT.java
index 2a57725bc1..fa513234eb 100644
---
a/integration-tests-jvm/elasticsearch-rest-client/src/main/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/Document.java
+++
b/integration-tests/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientIT.java
@@ -16,43 +16,9 @@
*/
package org.apache.camel.quarkus.component.elasticsearch.rest.client.it;
-import java.util.Objects;
+import io.quarkus.test.junit.QuarkusIntegrationTest;
-import io.quarkus.runtime.annotations.RegisterForReflection;
+@QuarkusIntegrationTest
+class ElasticsearchRestClientIT extends ElasticsearchRestClientTest {
-@RegisterForReflection(fields = false)
-public class Document {
- private String id;
- private String value;
-
- public String getId() {
- return id;
- }
-
- public void setId(String id) {
- this.id = id;
- }
-
- public String getValue() {
- return value;
- }
-
- public void setValue(String value) {
- this.value = value;
- }
-
- @Override
- public boolean equals(Object o) {
- if (this == o)
- return true;
- if (o == null || getClass() != o.getClass())
- return false;
- Document document = (Document) o;
- return Objects.equals(id, document.id) && Objects.equals(value,
document.value);
- }
-
- @Override
- public int hashCode() {
- return Objects.hash(id, value);
- }
}
diff --git
a/integration-tests-jvm/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientTest.java
b/integration-tests/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientTest.java
similarity index 100%
rename from
integration-tests-jvm/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientTest.java
rename to
integration-tests/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestClientTest.java
diff --git
a/integration-tests-jvm/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestTestResource.java
b/integration-tests/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestTestResource.java
similarity index 87%
rename from
integration-tests-jvm/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestTestResource.java
rename to
integration-tests/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestTestResource.java
index 01d25c83b0..7bc299fba5 100644
---
a/integration-tests-jvm/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestTestResource.java
+++
b/integration-tests/elasticsearch-rest-client/src/test/java/org/apache/camel/quarkus/component/elasticsearch/rest/client/it/ElasticsearchRestTestResource.java
@@ -29,12 +29,17 @@ import java.security.cert.Certificate;
import java.util.Base64;
import java.util.Map;
+import com.github.dockerjava.api.model.ExposedPort;
+import com.github.dockerjava.api.model.HostConfig;
+import com.github.dockerjava.api.model.Ports;
import io.quarkus.test.common.QuarkusTestResourceLifecycleManager;
import org.apache.camel.util.CollectionHelper;
import org.eclipse.microprofile.config.ConfigProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import org.testcontainers.DockerClientFactory;
import org.testcontainers.containers.GenericContainer;
+import org.testcontainers.containers.Network;
import org.testcontainers.containers.output.Slf4jLogConsumer;
import org.testcontainers.containers.wait.strategy.Wait;
import org.testcontainers.images.builder.Transferable;
@@ -58,10 +63,13 @@ public class ElasticsearchRestTestResource implements
QuarkusTestResourceLifecyc
exportCertificateCAForClient();
try {
+ Network elasticSearchNetwork = Network.newNetwork();
+
container = new GenericContainer<>(ELASTICSEARCH_IMAGE)
.withExposedPorts(ELASTICSEARCH_PORT)
.withLogConsumer(new Slf4jLogConsumer(LOGGER))
.withEnv("discovery.type", "single-node")
+ .withEnv("http.publish_host",
DockerClientFactory.instance().dockerHostIpAddress())
.withEnv("xpack.security.enabled", "true")
.withEnv("xpack.security.transport.ssl.enabled", "true")
.withEnv("xpack.security.transport.ssl.verification_mode",
"certificate")
@@ -78,6 +86,14 @@ public class ElasticsearchRestTestResource implements
QuarkusTestResourceLifecyc
.withCopyToContainer(
Transferable.of(Files.readAllBytes(Paths.get("target/certs/elasticsearch-truststore.p12"))),
"/usr/share/elasticsearch/config/certs/elasticsearch-truststore.p12")
+ .withCreateContainerCmdModifier(createContainerCmd -> {
+ Ports portBindings = new Ports();
+ portBindings.bind(ExposedPort.tcp(ELASTICSEARCH_PORT),
Ports.Binding.bindPort(ELASTICSEARCH_PORT));
+ HostConfig hostConfig = HostConfig.newHostConfig()
+ .withPortBindings(portBindings)
+ .withNetworkMode(elasticSearchNetwork.getId());
+ createContainerCmd.withHostConfig(hostConfig);
+ })
.waitingFor(Wait.forListeningPort());
container.start();
diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml
index d42f9962a3..e49211e3e7 100644
--- a/integration-tests/pom.xml
+++ b/integration-tests/pom.xml
@@ -88,6 +88,7 @@
<module>digitalocean</module>
<module>disruptor</module>
<module>dropbox</module>
+ <module>elasticsearch-rest-client</module>
<module>exec</module>
<module>fhir</module>
<module>file</module>
diff --git a/tooling/scripts/test-categories.yaml
b/tooling/scripts/test-categories.yaml
index 34f7eff50d..8ffe62fd8b 100644
--- a/tooling/scripts/test-categories.yaml
+++ b/tooling/scripts/test-categories.yaml
@@ -73,6 +73,7 @@ group-04:
- debezium
- cassandraql
- couchdb
+ - elasticsearch-rest-client
- influxdb
- jms-qpid-amqp-client
- jpa