From 72f4bf7710cc67cbf6a666d81dec71143655a0e0 Mon Sep 17 00:00:00 2001 From: Stuart Douglas Date: Mon, 23 Aug 2021 09:44:10 +1000 Subject: [PATCH] Register the client response builder Fixes #19557 --- .../deployment/test/FailureTestCase.java | 78 +++++++++++++++++++ ...eactive.common.core.ResponseBuilderFactory | 1 + 2 files changed, 79 insertions(+) create mode 100644 extensions/resteasy-reactive/jaxrs-client-reactive/deployment/src/test/java/io/quarkus/jaxrs/client/reactive/deployment/test/FailureTestCase.java create mode 100644 extensions/resteasy-reactive/jaxrs-client-reactive/runtime/src/main/resources/META-INF/services/org.jboss.resteasy.reactive.common.core.ResponseBuilderFactory diff --git a/extensions/resteasy-reactive/jaxrs-client-reactive/deployment/src/test/java/io/quarkus/jaxrs/client/reactive/deployment/test/FailureTestCase.java b/extensions/resteasy-reactive/jaxrs-client-reactive/deployment/src/test/java/io/quarkus/jaxrs/client/reactive/deployment/test/FailureTestCase.java new file mode 100644 index 0000000000000..93b7ded9df70a --- /dev/null +++ b/extensions/resteasy-reactive/jaxrs-client-reactive/deployment/src/test/java/io/quarkus/jaxrs/client/reactive/deployment/test/FailureTestCase.java @@ -0,0 +1,78 @@ +package io.quarkus.jaxrs.client.reactive.deployment.test; + +import java.net.URL; + +import javax.enterprise.event.Observes; +import javax.ws.rs.WebApplicationException; +import javax.ws.rs.client.Client; +import javax.ws.rs.client.ClientBuilder; +import javax.ws.rs.client.ClientResponseContext; +import javax.ws.rs.core.Response; +import javax.ws.rs.ext.Provider; + +import org.jboss.resteasy.reactive.client.spi.ResteasyReactiveClientRequestContext; +import org.jboss.resteasy.reactive.client.spi.ResteasyReactiveClientResponseFilter; +import org.jboss.shrinkwrap.api.ShrinkWrap; +import org.jboss.shrinkwrap.api.spec.JavaArchive; +import org.junit.jupiter.api.AfterEach; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.Test; +import org.junit.jupiter.api.extension.RegisterExtension; + +import io.quarkus.test.QuarkusUnitTest; +import io.quarkus.test.common.http.TestHTTPResource; +import io.vertx.core.Handler; +import io.vertx.ext.web.Router; +import io.vertx.ext.web.RoutingContext; + +public class FailureTestCase { + + @RegisterExtension + static final QuarkusUnitTest config = new QuarkusUnitTest() + .setArchiveProducer(() -> ShrinkWrap.create(JavaArchive.class) + .addClasses(Endpoint.class)); + + @TestHTTPResource + URL url; + + private Client client; + + @BeforeEach + public void before() { + client = ClientBuilder.newClient().register(TestClientResponseFilter.class); + } + + @AfterEach + public void after() { + client.close(); + } + + @Test + public void test() { + Assertions.assertThrows(WebApplicationException.class, + () -> client.target(url.toExternalForm() + "/hello").request().get()); + } + + public static class Endpoint { + + public void setup(@Observes Router router) { + router.route("/hello").handler(new Handler() { + @Override + public void handle(RoutingContext event) { + event.response().end(); + } + }); + } + } + + @Provider + public static class TestClientResponseFilter implements ResteasyReactiveClientResponseFilter { + + @Override + public void filter(ResteasyReactiveClientRequestContext requestContext, ClientResponseContext responseContext) { + //make sure the response builder works with no server components installed + throw new WebApplicationException(Response.status(500).build()); + } + } +} diff --git a/extensions/resteasy-reactive/jaxrs-client-reactive/runtime/src/main/resources/META-INF/services/org.jboss.resteasy.reactive.common.core.ResponseBuilderFactory b/extensions/resteasy-reactive/jaxrs-client-reactive/runtime/src/main/resources/META-INF/services/org.jboss.resteasy.reactive.common.core.ResponseBuilderFactory new file mode 100644 index 0000000000000..aaf62430b53da --- /dev/null +++ b/extensions/resteasy-reactive/jaxrs-client-reactive/runtime/src/main/resources/META-INF/services/org.jboss.resteasy.reactive.common.core.ResponseBuilderFactory @@ -0,0 +1 @@ +io.quarkus.jaxrs.client.reactive.runtime.ClientResponseBuilderFactory \ No newline at end of file