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 <jamesnether...@gmail.com>
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

Reply via email to