diff --git a/.github/native-tests.json b/.github/native-tests.json index e1272265317d6..b67653897de3a 100644 --- a/.github/native-tests.json +++ b/.github/native-tests.json @@ -39,7 +39,7 @@ { "category": "Data6", "timeout": 65, - "test-modules": "elasticsearch-rest-client, elasticsearch-rest-high-level-client, hibernate-search-orm-elasticsearch, hibernate-search-orm-elasticsearch-tenancy, hibernate-search-orm-opensearch, hibernate-search-orm-elasticsearch-coordination-outbox-polling, hibernate-reactive-panache", + "test-modules": "elasticsearch-rest-client, elasticsearch-rest-high-level-client, elasticsearch-java-client,hibernate-search-orm-elasticsearch, hibernate-search-orm-elasticsearch-tenancy, hibernate-search-orm-opensearch, hibernate-search-orm-elasticsearch-coordination-outbox-polling, hibernate-reactive-panache", "os-name": "ubuntu-latest" }, { diff --git a/core/deployment/src/main/java/io/quarkus/deployment/Feature.java b/core/deployment/src/main/java/io/quarkus/deployment/Feature.java index edc14515d8402..d55b106a6a2bf 100644 --- a/core/deployment/src/main/java/io/quarkus/deployment/Feature.java +++ b/core/deployment/src/main/java/io/quarkus/deployment/Feature.java @@ -19,6 +19,7 @@ public enum Feature { ELASTICSEARCH_REST_CLIENT_COMMON, ELASTICSEARCH_REST_CLIENT, ELASTICSEARCH_REST_HIGH_LEVEL_CLIENT, + ELASTICSEARCH_JAVA_CLIENT, FLYWAY, GRPC_CLIENT, GRPC_SERVER, diff --git a/extensions/elasticsearch-java-client/deployment/pom.xml b/extensions/elasticsearch-java-client/deployment/pom.xml new file mode 100644 index 0000000000000..029b22bba014c --- /dev/null +++ b/extensions/elasticsearch-java-client/deployment/pom.xml @@ -0,0 +1,63 @@ + + + + io.quarkus + quarkus-elasticsearch-java-client-parent + 999-SNAPSHOT + ../pom.xml + + 4.0.0 + + quarkus-elasticsearch-java-client-deployment + Quarkus - Elasticsearch Java client - Deployment + + + + io.quarkus + quarkus-core-deployment + + + io.quarkus + quarkus-elasticsearch-rest-client-common-deployment + + + io.quarkus + quarkus-elasticsearch-rest-client-deployment + + + io.quarkus + quarkus-elasticsearch-java-client + 999-SNAPSHOT + + + io.quarkus + quarkus-arc-deployment + + + io.quarkus + quarkus-jackson-deployment + + + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + io.quarkus + quarkus-extension-processor + ${project.version} + + + + + + + + + \ No newline at end of file diff --git a/extensions/elasticsearch-java-client/deployment/src/main/java/io/quarkus/elasticsearch/javaclient/deployment/ElasticsearchJavaClientProcessor.java b/extensions/elasticsearch-java-client/deployment/src/main/java/io/quarkus/elasticsearch/javaclient/deployment/ElasticsearchJavaClientProcessor.java new file mode 100644 index 0000000000000..c86b9cab2e007 --- /dev/null +++ b/extensions/elasticsearch-java-client/deployment/src/main/java/io/quarkus/elasticsearch/javaclient/deployment/ElasticsearchJavaClientProcessor.java @@ -0,0 +1,21 @@ +package io.quarkus.elasticsearch.javaclient.deployment; + +import io.quarkus.arc.deployment.AdditionalBeanBuildItem; +import io.quarkus.deployment.Feature; +import io.quarkus.deployment.annotations.BuildStep; +import io.quarkus.deployment.builditem.FeatureBuildItem; +import io.quarkus.elasticsearch.javaclient.runtime.ElasticsearchJavaClientProducer; + +class ElasticsearchJavaClientProcessor { + + @BuildStep + FeatureBuildItem feature() { + return new FeatureBuildItem(Feature.ELASTICSEARCH_JAVA_CLIENT); + } + + @BuildStep() + AdditionalBeanBuildItem build() { + return AdditionalBeanBuildItem.unremovableOf(ElasticsearchJavaClientProducer.class); + } + +} diff --git a/extensions/elasticsearch-java-client/pom.xml b/extensions/elasticsearch-java-client/pom.xml new file mode 100644 index 0000000000000..826a1ca3f81ca --- /dev/null +++ b/extensions/elasticsearch-java-client/pom.xml @@ -0,0 +1,23 @@ + + + + quarkus-extensions-parent + io.quarkus + 999-SNAPSHOT + ../pom.xml + + + 4.0.0 + + quarkus-elasticsearch-java-client-parent + Quarkus - Elasticsearch Java client - Parent + pom + + + runtime + deployment + + + \ No newline at end of file diff --git a/extensions/elasticsearch-java-client/runtime/pom.xml b/extensions/elasticsearch-java-client/runtime/pom.xml new file mode 100644 index 0000000000000..9bdcf112c5dc2 --- /dev/null +++ b/extensions/elasticsearch-java-client/runtime/pom.xml @@ -0,0 +1,84 @@ + + + + io.quarkus + quarkus-elasticsearch-java-client-parent + 999-SNAPSHOT + ../pom.xml + + 4.0.0 + + quarkus-elasticsearch-java-client + Quarkus - Elasticsearch Java client - Runtime + Connect to an Elasticsearch cluster using the Java client + + + + io.quarkus + quarkus-core + + + io.quarkus + quarkus-elasticsearch-rest-client-common + + + io.quarkus + quarkus-elasticsearch-rest-client + + + io.quarkus + quarkus-arc + + + io.quarkus + quarkus-jackson + + + org.jboss.logmanager + log4j2-jboss-logmanager + + + + co.elastic.clients + elasticsearch-java + 7.16.1 + + + org.apache.logging.log4j + log4j-core + + + + + + + + + + io.quarkus + quarkus-bootstrap-maven-plugin + + + io.quarkus.elasticsearch-rest-high-level-client + + + + + org.apache.maven.plugins + maven-compiler-plugin + + + + io.quarkus + quarkus-extension-processor + ${project.version} + + + + + + + + diff --git a/extensions/elasticsearch-java-client/runtime/src/main/java/io/quarkus/elasticsearch/javaclient/runtime/ElasticsearchJavaClientProducer.java b/extensions/elasticsearch-java-client/runtime/src/main/java/io/quarkus/elasticsearch/javaclient/runtime/ElasticsearchJavaClientProducer.java new file mode 100644 index 0000000000000..e8f9be709f1e4 --- /dev/null +++ b/extensions/elasticsearch-java-client/runtime/src/main/java/io/quarkus/elasticsearch/javaclient/runtime/ElasticsearchJavaClientProducer.java @@ -0,0 +1,68 @@ +package io.quarkus.elasticsearch.javaclient.runtime; + +import java.io.IOException; +import java.io.UncheckedIOException; + +import javax.annotation.PostConstruct; +import javax.annotation.PreDestroy; +import javax.enterprise.context.ApplicationScoped; +import javax.enterprise.inject.Default; +import javax.enterprise.inject.Produces; +import javax.inject.Inject; +import javax.inject.Singleton; + +import org.elasticsearch.client.RestClient; + +import com.fasterxml.jackson.databind.ObjectMapper; + +import co.elastic.clients.elasticsearch.ElasticsearchAsyncClient; +import co.elastic.clients.elasticsearch.ElasticsearchClient; +import co.elastic.clients.json.jackson.JacksonJsonpMapper; +import co.elastic.clients.transport.ElasticsearchTransport; +import co.elastic.clients.transport.rest_client.RestClientTransport; + +@ApplicationScoped +public class ElasticsearchJavaClientProducer { + + @Inject + @Default + RestClient restClient; + + @Inject + ObjectMapper objectMapper; + + private ElasticsearchClient client; + private ElasticsearchAsyncClient asyncClient; + private ElasticsearchTransport transport; + + @PostConstruct + void initTransport() { + this.transport = new RestClientTransport(restClient, new JacksonJsonpMapper(objectMapper)); + } + + @Produces + @Singleton + public ElasticsearchClient blockingClient() { + this.client = new ElasticsearchClient(this.transport); + return this.client; + } + + @Produces + @Singleton + public ElasticsearchAsyncClient asyncClient() { + this.asyncClient = new ElasticsearchAsyncClient(this.transport); + return this.asyncClient; + } + + @PreDestroy + void destroy() { + try { + if (this.transport != null) { + this.transport.close(); + } + } catch (IOException ioe) { + throw new UncheckedIOException(ioe); + } + } + +} diff --git a/extensions/elasticsearch-java-client/runtime/src/main/resources/META-INF/quarkus-extension.yaml b/extensions/elasticsearch-java-client/runtime/src/main/resources/META-INF/quarkus-extension.yaml new file mode 100644 index 0000000000000..e3e0dfc578b4b --- /dev/null +++ b/extensions/elasticsearch-java-client/runtime/src/main/resources/META-INF/quarkus-extension.yaml @@ -0,0 +1,14 @@ +--- +artifact: ${project.groupId}:${project.artifactId}:${project.version} +name: "ElasticsearchJava Client" +metadata: + keywords: + - "elasticsearch" + - "full text" + - "search" + guide: "https://quarkus.io/guides/elasticsearch" + categories: + - "data" + status: "preview" + config: + - "quarkus.elasticsearch." diff --git a/extensions/pom.xml b/extensions/pom.xml index 9214213a58046..bff555925f99e 100644 --- a/extensions/pom.xml +++ b/extensions/pom.xml @@ -94,6 +94,7 @@ elasticsearch-rest-client-common elasticsearch-rest-client elasticsearch-rest-high-level-client + elasticsearch-java-client kafka-client kafka-streams mongodb-client diff --git a/integration-tests/elasticsearch-java-client/.gitignore b/integration-tests/elasticsearch-java-client/.gitignore new file mode 100644 index 0000000000000..087a18358fe57 --- /dev/null +++ b/integration-tests/elasticsearch-java-client/.gitignore @@ -0,0 +1,35 @@ +# Eclipse +.project +.classpath +.settings/ +bin/ + +# IntelliJ +.idea +*.ipr +*.iml +*.iws + +# NetBeans +nb-configuration.xml + +# Visual Studio Code +.vscode + +# OSX +.DS_Store + +# Vim +*.swp +*.swo + +# patch +*.orig +*.rej + +# Maven +target/ +pom.xml.tag +pom.xml.releaseBackup +pom.xml.versionsBackup +release.properties \ No newline at end of file diff --git a/integration-tests/elasticsearch-java-client/README.md b/integration-tests/elasticsearch-java-client/README.md new file mode 100644 index 0000000000000..e5e615b241e7e --- /dev/null +++ b/integration-tests/elasticsearch-java-client/README.md @@ -0,0 +1,30 @@ +# quarkus-integration-test-elasticsearch-java-client project + +This project uses Quarkus, the Supersonic Subatomic Java Framework. + +If you want to learn more about Quarkus, please visit its website: https://quarkus.io/ . + +## Running the application in dev mode + +You can run your application in dev mode that enables live coding using: +``` +./mvnw quarkus:dev +``` + +## Packaging and running the application + +The application can be packaged using `./mvnw package`. +It produces the `quarkus-integration-test-elasticsearch-java-client-1.0-SNAPSHOT-runner.jar` file in the `/target` directory. +Be aware that it’s not an _über-jar_ as the dependencies are copied into the `target/lib` directory. + +The application is now runnable using `java -jar target/quarkus-integration-test-elasticsearch-java-client-1.0-SNAPSHOT-runner.jar`. + +## Creating a native executable + +You can create a native executable using: `./mvnw package -Pnative`. + +Or, if you don't have GraalVM installed, you can run the native executable build in a container using: `./mvnw package -Pnative -Dquarkus.native.container-build=true`. + +You can then execute your native executable with: `./target/quarkus-integration-test-elasticsearch-java-client-1.0-SNAPSHOT-runner` + +If you want to learn more about building native executables, please consult https://quarkus.io/guides/building-native-image-guide. \ No newline at end of file diff --git a/integration-tests/elasticsearch-java-client/pom.xml b/integration-tests/elasticsearch-java-client/pom.xml new file mode 100644 index 0000000000000..5e62f31f0ce5b --- /dev/null +++ b/integration-tests/elasticsearch-java-client/pom.xml @@ -0,0 +1,231 @@ + + + + quarkus-integration-tests-parent + io.quarkus + 999-SNAPSHOT + + + 4.0.0 + + quarkus-integration-test-elasticsearch-java-client + Quarkus - Integration Tests - Elasticsearch Java client + + + + io.quarkus + quarkus-resteasy-jackson + + + io.quarkus + quarkus-elasticsearch-java-client + 999-SNAPSHOT + + + io.quarkus + quarkus-smallrye-health + + + + io.quarkus + quarkus-junit5 + test + + + io.rest-assured + rest-assured + test + + + + + io.quarkus + quarkus-elasticsearch-java-client-deployment + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-resteasy-jackson-deployment + ${project.version} + pom + test + + + * + * + + + + + io.quarkus + quarkus-smallrye-health-deployment + ${project.version} + pom + test + + + * + * + + + + + + + + + src/main/resources + true + + + + + io.quarkus + quarkus-maven-plugin + ${project.version} + + + + build + + + + + + maven-surefire-plugin + + true + + + + maven-failsafe-plugin + + true + + + + + + + + test-elasticsearch + + + test-containers + + + + + + maven-surefire-plugin + + false + + + + maven-failsafe-plugin + + false + + + + + + + + docker-elasticsearch + + + start-containers + + + + localhost:9200 + http + + + + + io.fabric8 + docker-maven-plugin + + + + ${elasticsearch.image} + elasticsearch + + + single-node + + + 9200:9200 + + + Elasticsearch: + default + cyan + + + + http://localhost:9200 + GET + 200 + + + + + + + true + + + + docker-start + process-test-classes + + stop + start + + + + docker-stop + post-integration-test + + stop + + + + + + org.codehaus.mojo + exec-maven-plugin + + + docker-prune + generate-resources + + exec + + + ${docker-prune.location} + + + + + + + + + + + \ No newline at end of file diff --git a/integration-tests/elasticsearch-java-client/src/main/java/io/quarkus/it/elasticsearch/java/Fruit.java b/integration-tests/elasticsearch-java-client/src/main/java/io/quarkus/it/elasticsearch/java/Fruit.java new file mode 100644 index 0000000000000..f29ed26e50895 --- /dev/null +++ b/integration-tests/elasticsearch-java-client/src/main/java/io/quarkus/it/elasticsearch/java/Fruit.java @@ -0,0 +1,7 @@ +package io.quarkus.it.elasticsearch.java; + +public class Fruit { + public String id; + public String name; + public String color; +} diff --git a/integration-tests/elasticsearch-java-client/src/main/java/io/quarkus/it/elasticsearch/java/FruitResource.java b/integration-tests/elasticsearch-java-client/src/main/java/io/quarkus/it/elasticsearch/java/FruitResource.java new file mode 100644 index 0000000000000..d9ea3ea69d72d --- /dev/null +++ b/integration-tests/elasticsearch-java-client/src/main/java/io/quarkus/it/elasticsearch/java/FruitResource.java @@ -0,0 +1,49 @@ +package io.quarkus.it.elasticsearch.java; + +import java.io.IOException; +import java.net.URI; +import java.util.List; +import java.util.UUID; + +import javax.inject.Inject; +import javax.ws.rs.BadRequestException; +import javax.ws.rs.GET; +import javax.ws.rs.POST; +import javax.ws.rs.Path; +import javax.ws.rs.PathParam; +import javax.ws.rs.QueryParam; +import javax.ws.rs.core.Response; + +@Path("/fruits") +public class FruitResource { + @Inject + FruitService fruitService; + + @POST + public Response index(Fruit fruit) throws IOException { + if (fruit.id == null) { + fruit.id = UUID.randomUUID().toString(); + } + fruitService.index(fruit); + return Response.created(URI.create("/fruits/" + fruit.id)).build(); + } + + @GET + @Path("/{id}") + public Fruit get(@PathParam("id") String id) throws IOException { + return fruitService.get(id); + } + + @GET + @Path("/search") + public List search(@QueryParam("name") String name, @QueryParam("color") String color) throws IOException { + if (name != null) { + return fruitService.searchByName(name); + } else if (color != null) { + return fruitService.searchByColor(color); + } else { + throw new BadRequestException("Should provide name or color query parameter"); + } + } + +} diff --git a/integration-tests/elasticsearch-java-client/src/main/java/io/quarkus/it/elasticsearch/java/FruitService.java b/integration-tests/elasticsearch-java-client/src/main/java/io/quarkus/it/elasticsearch/java/FruitService.java new file mode 100644 index 0000000000000..222d549cb6f84 --- /dev/null +++ b/integration-tests/elasticsearch-java-client/src/main/java/io/quarkus/it/elasticsearch/java/FruitService.java @@ -0,0 +1,57 @@ +package io.quarkus.it.elasticsearch.java; + +import java.io.IOException; +import java.util.List; +import java.util.stream.Collectors; + +import javax.enterprise.context.ApplicationScoped; +import javax.inject.Inject; + +import co.elastic.clients.elasticsearch.ElasticsearchClient; +import co.elastic.clients.elasticsearch._types.FieldValue; +import co.elastic.clients.elasticsearch._types.query_dsl.QueryBuilders; +import co.elastic.clients.elasticsearch.core.*; +import co.elastic.clients.elasticsearch.core.search.HitsMetadata; + +@ApplicationScoped +public class FruitService { + @Inject + ElasticsearchClient client; + + public void index(Fruit fruit) throws IOException { + IndexRequest request = IndexRequest.of( + b -> b.index("fruits") + .id(fruit.id) + .document(fruit)); + client.index(request); + } + + public Fruit get(String id) throws IOException { + GetRequest getRequest = GetRequest.of( + b -> b.index("fruits") + .id(id)); + GetResponse getResponse = client.get(getRequest, Fruit.class); + if (getResponse.found()) { + return getResponse.source(); + } + return null; + } + + public List searchByColor(String color) throws IOException { + return search("color", color); + } + + public List searchByName(String name) throws IOException { + return search("name", name); + } + + private List search(String term, String match) throws IOException { + SearchRequest searchRequest = SearchRequest.of( + b -> b.index("fruits") + .query(QueryBuilders.match().field(term).query(FieldValue.of(match)).build()._toQuery())); + + SearchResponse searchResponse = client.search(searchRequest, Fruit.class); + HitsMetadata hits = searchResponse.hits(); + return hits.hits().stream().map(hit -> hit.source()).collect(Collectors.toList()); + } +} diff --git a/integration-tests/elasticsearch-java-client/src/main/resources/META-INF/resources/fruits.html b/integration-tests/elasticsearch-java-client/src/main/resources/META-INF/resources/fruits.html new file mode 100644 index 0000000000000..a2144d6a57be8 --- /dev/null +++ b/integration-tests/elasticsearch-java-client/src/main/resources/META-INF/resources/fruits.html @@ -0,0 +1,120 @@ + + + + + Fruit REST service + + + + + + + +
+

REST Service - Fruit

+ +

Add a fruit

+
+
+
+
+
+
+
+ +
+ +

Search Fruits

+
+
+
+
+
+
+
+ +
+
+
Name
+
Color
+
+
+
{{ fruit.name }}
+
{{ fruit.color }}
+
+
+ + + diff --git a/integration-tests/elasticsearch-java-client/src/main/resources/META-INF/resources/index.html b/integration-tests/elasticsearch-java-client/src/main/resources/META-INF/resources/index.html new file mode 100644 index 0000000000000..a815a45c35ba0 --- /dev/null +++ b/integration-tests/elasticsearch-java-client/src/main/resources/META-INF/resources/index.html @@ -0,0 +1,152 @@ + + + + + quarkus-integration-test-elasticsearch - 1.0-SNAPSHOT + + + + + + +
+
+

Congratulations, you have created a new Quarkus application.

+ +

Why do you see this?

+ +

This page is served by Quarkus. The source is in + src/main/resources/META-INF/resources/index.html.

+ +

What can I do from here?

+ +

If not already done, run the application in dev mode using: mvn compile quarkus:dev. +

+
    +
  • Add REST resources, Servlets, functions and other services in src/main/java.
  • +
  • Your static assets are located in src/main/resources/META-INF/resources.
  • +
  • Configure your application in src/main/resources/application.properties. +
  • +
+ +

How do I get rid of this page?

+

Just delete the src/main/resources/META-INF/resources/index.html file.

+
+
+
+

Application

+
    +
  • GroupId: io.quarkus
  • +
  • ArtifactId: quarkus-integration-test-elasticsearch
  • +
  • Version: 1.0-SNAPSHOT
  • +
  • Quarkus Version: 1.3.0.Final
  • +
+
+ +
+
+ + + + \ No newline at end of file diff --git a/integration-tests/elasticsearch-java-client/src/main/resources/application.properties b/integration-tests/elasticsearch-java-client/src/main/resources/application.properties new file mode 100644 index 0000000000000..4f57810e65b8e --- /dev/null +++ b/integration-tests/elasticsearch-java-client/src/main/resources/application.properties @@ -0,0 +1,5 @@ +quarkus.elasticsearch.hosts=${elasticsearch.hosts:localhost:9200} +quarkus.elasticsearch.protocol=${elasticsearch.protocol:http} +quarkus.elasticsearch.socket-timeout=10S +quarkus.elasticsearch.discovery.enabled=true +quarkus.elasticsearch.discovery.refresh-interval=1M \ No newline at end of file diff --git a/integration-tests/elasticsearch-java-client/src/test/java/io/quarkus/it/elasticsearch/FruitResourceTest.java b/integration-tests/elasticsearch-java-client/src/test/java/io/quarkus/it/elasticsearch/FruitResourceTest.java new file mode 100644 index 0000000000000..4bc598c7845d8 --- /dev/null +++ b/integration-tests/elasticsearch-java-client/src/test/java/io/quarkus/it/elasticsearch/FruitResourceTest.java @@ -0,0 +1,70 @@ +package io.quarkus.it.elasticsearch; + +import static io.restassured.RestAssured.get; +import static io.restassured.RestAssured.given; +import static org.hamcrest.Matchers.containsInAnyOrder; +import static org.hamcrest.Matchers.is; + +import java.util.List; + +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; + +import io.quarkus.it.elasticsearch.java.Fruit; +import io.quarkus.test.junit.QuarkusTest; +import io.restassured.RestAssured; +import io.restassured.common.mapper.TypeRef; + +@QuarkusTest +public class FruitResourceTest { + private static final TypeRef> LIST_OF_FRUIT_TYPE_REF = new TypeRef>() { + }; + + @Test + public void testEndpoint() throws InterruptedException { + // create a Fruit + Fruit fruit = new Fruit(); + fruit.id = "1"; + fruit.name = "Apple"; + fruit.color = "Green"; + given() + .contentType("application/json") + .body(fruit) + .when().post("/fruits") + .then() + .statusCode(201); + + // get the Fruit + Fruit result = get("/fruits/1").as(Fruit.class); + Assertions.assertNotNull(result); + Assertions.assertEquals("1", result.id); + Assertions.assertEquals("Apple", result.name); + Assertions.assertEquals("Green", result.color); + + // wait a few ms for the indexing to happened + Thread.sleep(1000); + + // search the Fruit + List results = get("/fruits/search?color=Green").as(LIST_OF_FRUIT_TYPE_REF); + Assertions.assertNotNull(results); + Assertions.assertFalse(results.isEmpty()); + Assertions.assertEquals("1", results.get(0).id); + Assertions.assertEquals("Apple", results.get(0).name); + Assertions.assertEquals("Green", results.get(0).color); + results = get("/fruits/search?name=Apple").as(LIST_OF_FRUIT_TYPE_REF); + Assertions.assertNotNull(results); + Assertions.assertFalse(results.isEmpty()); + Assertions.assertEquals("1", results.get(0).id); + Assertions.assertEquals("Apple", results.get(0).name); + Assertions.assertEquals("Green", results.get(0).color); + } + + @Test + public void testHealth() { + RestAssured.when().get("/q/health/ready").then() + .body("status", is("UP"), + "checks.status", containsInAnyOrder("UP"), + "checks.name", containsInAnyOrder("Elasticsearch cluster health check")); + } + +} diff --git a/integration-tests/elasticsearch-java-client/src/test/java/io/quarkus/it/elasticsearch/NativeFruitResourceIT.java b/integration-tests/elasticsearch-java-client/src/test/java/io/quarkus/it/elasticsearch/NativeFruitResourceIT.java new file mode 100644 index 0000000000000..281e1131b853a --- /dev/null +++ b/integration-tests/elasticsearch-java-client/src/test/java/io/quarkus/it/elasticsearch/NativeFruitResourceIT.java @@ -0,0 +1,9 @@ +package io.quarkus.it.elasticsearch; + +import io.quarkus.test.junit.QuarkusIntegrationTest; + +@QuarkusIntegrationTest +public class NativeFruitResourceIT extends FruitResourceTest { + + // Execute the same tests but in native mode. +} diff --git a/integration-tests/pom.xml b/integration-tests/pom.xml index 8edb091e63920..3fe857e2932dd 100644 --- a/integration-tests/pom.xml +++ b/integration-tests/pom.xml @@ -288,6 +288,7 @@ ide-launcher elasticsearch-rest-client elasticsearch-rest-high-level-client + elasticsearch-java-client micrometer-mp-metrics micrometer-prometheus opentelemetry