Skip to content

Commit 317d91b

Browse files
[JENKINS-75556] Fix ClassCastException and ClassNotFoundException in client builder (#78)
1 parent 6cb10c9 commit 317d91b

File tree

1 file changed

+8
-5
lines changed

1 file changed

+8
-5
lines changed

src/main/java/com/gitee/jenkins/gitee/api/impl/ResteasyGiteeClientBuilder.java

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
import hudson.ProxyConfiguration;
1717
import hudson.init.InitMilestone;
1818
import hudson.init.Initializer;
19-
import jakarta.ws.rs.client.ClientBuilder;
2019
import jenkins.model.Jenkins;
2120
import org.apache.commons.io.IOUtils;
2221
import org.apache.commons.lang.StringUtils;
@@ -27,8 +26,10 @@
2726
import org.apache.http.impl.client.DefaultHttpClient;
2827
import org.jboss.resteasy.client.jaxrs.ClientHttpEngine;
2928
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder.HostnameVerificationPolicy;
29+
import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
3030
import org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient43Engine;
3131
import org.jboss.resteasy.client.jaxrs.internal.ResteasyClientBuilderImpl;
32+
import org.jboss.resteasy.client.jaxrs.internal.proxy.ProxyBuilderImpl;
3233
import org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl;
3334
import org.jboss.resteasy.plugins.providers.JaxrsFormProvider;
3435
import org.kohsuke.accmod.Restricted;
@@ -92,7 +93,7 @@ public final GiteeClient buildClient(String url, String apiToken, boolean ignore
9293
}
9394

9495
private GiteeClient buildClient(String url, String apiToken, ProxyConfiguration httpProxyConfig, boolean ignoreCertificateErrors, int connectionTimeout, int readTimeout) {
95-
ResteasyClientBuilder builder = (ResteasyClientBuilder) ClientBuilder.newBuilder();
96+
ResteasyClientBuilder builder = new ResteasyClientBuilder();
9697

9798
if (ignoreCertificateErrors) {
9899
builder.hostnameVerification(HostnameVerificationPolicy.ANY);
@@ -111,7 +112,7 @@ private GiteeClient buildClient(String url, String apiToken, ProxyConfiguration
111112
}
112113
}
113114

114-
GiteeApiProxy apiProxy = builder
115+
ResteasyWebTarget target = builder
115116
.connectionPoolSize(60)
116117
.maxPooledPerRoute(30)
117118
.connectTimeout(connectionTimeout, TimeUnit.SECONDS)
@@ -122,8 +123,10 @@ private GiteeClient buildClient(String url, String apiToken, ProxyConfiguration
122123
.register(new LoggingFilter())
123124
.register(new RemoveAcceptEncodingFilter())
124125
.register(new JaxrsFormProvider())
125-
.build().target(url)
126-
.proxyBuilder(apiProxyClass)
126+
.build().target(url);
127+
128+
// workaround for https://github.com/orgs/resteasy/discussions/4538 when using ResteasyWebTarget#proxyBuilder
129+
GiteeApiProxy apiProxy = new ProxyBuilderImpl<>(apiProxyClass, target)
127130
.classloader(apiProxyClass.getClassLoader())
128131
.build();
129132

0 commit comments

Comments
 (0)