diff --git a/ci-templates/stages.yml b/ci-templates/stages.yml index 31fe1ac3153c3..745cb5773c08f 100644 --- a/ci-templates/stages.yml +++ b/ci-templates/stages.yml @@ -304,11 +304,12 @@ stages: parameters: poolSettings: ${{parameters.poolSettings}} expectUseVMs: ${{parameters.expectUseVMs}} - timeoutInMinutes: 25 + timeoutInMinutes: 30 modules: - resteasy-jackson - vertx - vertx-http + - vertx-graphql - virtual-http name: http diff --git a/extensions/vertx-graphql/deployment/src/main/java/io/quarkus/vertx/graphql/deployment/VertxGraphqlProcessor.java b/extensions/vertx-graphql/deployment/src/main/java/io/quarkus/vertx/graphql/deployment/VertxGraphqlProcessor.java index 453a354cd0a52..94e39a0bf8766 100644 --- a/extensions/vertx-graphql/deployment/src/main/java/io/quarkus/vertx/graphql/deployment/VertxGraphqlProcessor.java +++ b/extensions/vertx-graphql/deployment/src/main/java/io/quarkus/vertx/graphql/deployment/VertxGraphqlProcessor.java @@ -1,11 +1,18 @@ package io.quarkus.vertx.graphql.deployment; +import java.util.Arrays; +import java.util.List; + import io.quarkus.deployment.annotations.BuildStep; import io.quarkus.deployment.builditem.FeatureBuildItem; +import io.quarkus.deployment.builditem.nativeimage.NativeImagePackageResourceBuildItem; +import io.quarkus.deployment.builditem.nativeimage.ReflectiveClassBuildItem; import io.quarkus.vertx.http.deployment.WebsocketSubProtocolsBuildItem; +import io.vertx.ext.web.handler.graphql.impl.GraphQLBatch; +import io.vertx.ext.web.handler.graphql.impl.GraphQLInputDeserializer; +import io.vertx.ext.web.handler.graphql.impl.GraphQLQuery; class VertxGraphqlProcessor { - @BuildStep FeatureBuildItem feature() { return new FeatureBuildItem(FeatureBuildItem.VERTX_GRAPHQL); @@ -15,4 +22,17 @@ FeatureBuildItem feature() { WebsocketSubProtocolsBuildItem websocketSubProtocols() { return new WebsocketSubProtocolsBuildItem("graphql-ws"); } + + @BuildStep + List registerForReflection() { + return Arrays.asList( + new ReflectiveClassBuildItem(true, true, GraphQLInputDeserializer.class.getName()), + new ReflectiveClassBuildItem(true, true, GraphQLBatch.class.getName()), + new ReflectiveClassBuildItem(true, true, GraphQLQuery.class.getName())); + } + + @BuildStep + NativeImagePackageResourceBuildItem registerNativeImageResources() { + return new NativeImagePackageResourceBuildItem("io/vertx/ext/web/handler/graphiql"); + } } diff --git a/integration-tests/vertx-graphql/src/test/java/io/quarkus/vertx/graphql/it/VertxGraphqlTest.java b/integration-tests/vertx-graphql/src/test/java/io/quarkus/vertx/graphql/it/VertxGraphqlTest.java index a2cdaba2349b7..1754a7f340c8b 100644 --- a/integration-tests/vertx-graphql/src/test/java/io/quarkus/vertx/graphql/it/VertxGraphqlTest.java +++ b/integration-tests/vertx-graphql/src/test/java/io/quarkus/vertx/graphql/it/VertxGraphqlTest.java @@ -6,8 +6,6 @@ import java.util.concurrent.CompletableFuture; import java.util.concurrent.TimeUnit; -import javax.inject.Inject; - import org.eclipse.microprofile.config.ConfigProvider; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.Test; @@ -20,10 +18,6 @@ @QuarkusTest class VertxGraphqlTest { - - @Inject - Vertx vertx; - public static int getPortFromConfig() { return ConfigProvider.getConfig().getOptionalValue("quarkus.http.test-port", Integer.class).orElse(8081); } @@ -37,12 +31,14 @@ public void testGraphQlQuery() { @Test public void testWebSocketSubProtocol() throws Exception { + Vertx vertx = Vertx.vertx(); HttpClient httpClient = vertx.createHttpClient(); WebSocketConnectOptions options = new WebSocketConnectOptions().setPort(getPortFromConfig()) .addSubProtocol("graphql-ws").setURI("/graphql"); CompletableFuture wsFuture = new CompletableFuture<>(); httpClient.webSocket(options, event -> wsFuture.complete(event.succeeded())); Assertions.assertTrue(wsFuture.get(1, TimeUnit.MINUTES)); + vertx.close(); } }