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