From 3f3fbe169b6995af4749fca6b4e53621ea46cae8 Mon Sep 17 00:00:00 2001 From: Andrew Guibert Date: Fri, 14 Feb 2020 21:03:57 -0600 Subject: [PATCH] Transfer providers discovered at build-time to new ClientBuilder instances --- .../io/quarkus/restclient/runtime/RestClientRecorder.java | 4 ++++ .../restclient/runtime/graal/ClientBuilderReplacement.java | 6 +++++- 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/extensions/rest-client/runtime/src/main/java/io/quarkus/restclient/runtime/RestClientRecorder.java b/extensions/rest-client/runtime/src/main/java/io/quarkus/restclient/runtime/RestClientRecorder.java index 149e40408..82ec9adbe 100644 --- a/extensions/rest-client/runtime/src/main/java/io/quarkus/restclient/runtime/RestClientRecorder.java +++ b/extensions/rest-client/runtime/src/main/java/io/quarkus/restclient/runtime/RestClientRecorder.java @@ -18,6 +18,9 @@ import io.quarkus.runtime.annotations.Recorder; @Recorder public class RestClientRecorder { + + public static ResteasyProviderFactory providerFactory; + public void setRestClientBuilderResolver() { RestClientBuilderResolver.setInstance(new BuilderResolver()); } @@ -58,6 +61,7 @@ public class RestClientRecorder { } RestClientBuilderImpl.setProviderFactory(clientProviderFactory); + providerFactory = clientProviderFactory; } private static void registerProviders(ResteasyProviderFactory clientProviderFactory, Set providersToRegister, diff --git a/extensions/rest-client/runtime/src/main/java/io/quarkus/restclient/runtime/graal/ClientBuilderReplacement.java b/extensions/rest-client/runtime/src/main/java/io/quarkus/restclient/runtime/graal/ClientBuilderReplacement.java index 60eb99d65..90c05fad8 100644 --- a/extensions/rest-client/runtime/src/main/java/io/quarkus/restclient/runtime/graal/ClientBuilderReplacement.java +++ b/extensions/rest-client/runtime/src/main/java/io/quarkus/restclient/runtime/graal/ClientBuilderReplacement.java @@ -2,16 +2,20 @@ package io.quarkus.restclient.runtime.graal; import javax.ws.rs.client.ClientBuilder; +import org.jboss.resteasy.client.jaxrs.internal.LocalResteasyProviderFactory; import org.jboss.resteasy.client.jaxrs.internal.ResteasyClientBuilderImpl; import com.oracle.svm.core.annotate.Substitute; import com.oracle.svm.core.annotate.TargetClass; +import io.quarkus.restclient.runtime.RestClientRecorder; + @TargetClass(ClientBuilder.class) final class ClientBuilderReplacement { @Substitute public static ClientBuilder newBuilder() { - return new ResteasyClientBuilderImpl(); + return new ResteasyClientBuilderImpl() + .providerFactory(new LocalResteasyProviderFactory(RestClientRecorder.providerFactory)); } }