Skip to content

Commit 077bdc3

Browse files
zbynekkrisstern
andauthored
Switch to Jersey 3 and jakarta-xml-bind-api (#1816)
Co-authored-by: Kris Stern <[email protected]>
1 parent 1510098 commit 077bdc3

19 files changed

+102
-86
lines changed

pom.xml

Lines changed: 18 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<spotbugs.effort>Max</spotbugs.effort>
5151
<spotbugs.threshold>Low</spotbugs.threshold>
5252
<gitHubRepo>jenkinsci/${project.artifactId}</gitHubRepo>
53-
<hpi.bundledArtifacts>jakarta.validation-api,jboss-annotations-api_1.3_spec,jboss-jaxb-api_2.3_spec,jboss-jaxrs-api_2.1_spec,jboss-logging,reactive-streams,resteasy-client,resteasy-jaxrs</hpi.bundledArtifacts>
53+
<hpi.bundledArtifacts>asyncutil,jakarta.annotation-api,jakarta.validation-api,jboss-jaxrs-api_3.0_spec,jboss-logging,reactive-streams,resteasy-client,resteasy-client-api,resteasy-core,resteasy-core-spi</hpi.bundledArtifacts>
5454
<hpi.compatibleSinceVersion>1.4.0</hpi.compatibleSinceVersion>
5555
<hpi.strictBundledArtifacts>true</hpi.strictBundledArtifacts>
5656
<mockserver.version>5.15.0</mockserver.version>
@@ -81,24 +81,31 @@
8181
</dependency>
8282
<dependency>
8383
<groupId>io.jenkins.plugins</groupId>
84-
<artifactId>javax-activation-api</artifactId>
84+
<artifactId>jakarta-xml-bind-api</artifactId>
85+
<version>4.0.5-3.v3d5b_a_73965b_9</version>
8586
</dependency>
8687
<dependency>
8788
<groupId>io.jenkins.plugins</groupId>
88-
<artifactId>jaxb</artifactId>
89+
<artifactId>javax-activation-api</artifactId>
8990
</dependency>
9091
<dependency>
9192
<groupId>io.jenkins.plugins</groupId>
92-
<artifactId>jersey2-api</artifactId>
93+
<artifactId>jersey3-api</artifactId>
94+
<version>3.1.11-2.v4a_b_db_cf4557b_</version>
9395
</dependency>
9496
<dependency>
9597
<groupId>io.jenkins.plugins</groupId>
9698
<artifactId>joda-time-api</artifactId>
9799
</dependency>
100+
<dependency>
101+
<groupId>jakarta.validation</groupId>
102+
<artifactId>jakarta.validation-api</artifactId>
103+
<version>3.0.2</version>
104+
</dependency>
98105
<dependency>
99106
<groupId>org.jboss.resteasy</groupId>
100107
<artifactId>resteasy-client</artifactId>
101-
<version>3.15.6.Final</version>
108+
<version>6.0.3.Final</version>
102109
<exclusions>
103110
<!-- Provided by Jenkins core -->
104111
<exclusion>
@@ -119,7 +126,7 @@
119126
<groupId>commons-io</groupId>
120127
<artifactId>commons-io</artifactId>
121128
</exclusion>
122-
<!-- Provided by javax-activation-api plugin -->
129+
<!-- Provided by jakarta-activation-api plugin -->
123130
<exclusion>
124131
<groupId>jakarta.activation</groupId>
125132
<artifactId>jakarta.activation-api</artifactId>
@@ -159,6 +166,7 @@
159166
<dependency>
160167
<groupId>org.jenkins-ci.plugins</groupId>
161168
<artifactId>jackson2-api</artifactId>
169+
<version>2.20.0-417.va_5311a_823a_b_8</version>
162170
</dependency>
163171
<dependency>
164172
<groupId>org.jenkins-ci.plugins</groupId>
@@ -304,6 +312,10 @@
304312
<id>repo.jenkins-ci.org</id>
305313
<url>https://repo.jenkins-ci.org/public/</url>
306314
</repository>
315+
<repository>
316+
<id>incrementals</id>
317+
<url>https://repo.jenkins-ci.org/incrementals/</url>
318+
</repository>
307319
</repositories>
308320

309321
<pluginRepositories>
@@ -326,7 +338,6 @@
326338
<excludes combine.children="append">
327339
<exclude>com.sun.activation:jakarta.activation</exclude>
328340
<exclude>jakarta.xml.bind:jakarta.xml.bind-api</exclude>
329-
<exclude>javax.servlet:javax.servlet-api</exclude>
330341
</excludes>
331342
</requireUpperBoundDeps>
332343
</rules>

src/main/java/com/dabsquared/gitlabjenkins/connection/GitLabConnection.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -24,13 +24,13 @@
2424
import hudson.util.FormValidation;
2525
import hudson.util.ListBoxModel;
2626
import hudson.util.Secret;
27+
import jakarta.ws.rs.ProcessingException;
28+
import jakarta.ws.rs.WebApplicationException;
2729
import java.io.IOException;
2830
import java.util.HashMap;
2931
import java.util.List;
3032
import java.util.Map;
3133
import java.util.UUID;
32-
import javax.ws.rs.ProcessingException;
33-
import javax.ws.rs.WebApplicationException;
3434
import jenkins.model.Jenkins;
3535
import org.eclipse.jgit.util.StringUtils;
3636
import org.kohsuke.accmod.Restricted;

src/main/java/com/dabsquared/gitlabjenkins/connection/GitLabConnectionProperty.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@
1515
import hudson.security.ACL;
1616
import hudson.util.FormValidation;
1717
import hudson.util.ListBoxModel;
18+
import jakarta.ws.rs.ProcessingException;
19+
import jakarta.ws.rs.WebApplicationException;
1820
import java.util.Objects;
19-
import javax.ws.rs.ProcessingException;
20-
import javax.ws.rs.WebApplicationException;
2121
import jenkins.model.Jenkins;
2222
import net.sf.json.JSONObject;
2323
import org.apache.commons.lang3.StringUtils;

src/main/java/com/dabsquared/gitlabjenkins/gitlab/JacksonConfig.java

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@
33
import com.fasterxml.jackson.databind.DeserializationFeature;
44
import com.fasterxml.jackson.databind.ObjectMapper;
55
import com.fasterxml.jackson.databind.PropertyNamingStrategies;
6-
import javax.ws.rs.Consumes;
7-
import javax.ws.rs.Produces;
8-
import javax.ws.rs.core.MediaType;
9-
import javax.ws.rs.ext.ContextResolver;
10-
import javax.ws.rs.ext.Provider;
6+
import jakarta.ws.rs.Consumes;
7+
import jakarta.ws.rs.Produces;
8+
import jakarta.ws.rs.core.MediaType;
9+
import jakarta.ws.rs.ext.ContextResolver;
10+
import jakarta.ws.rs.ext.Provider;
1111

1212
/**
1313
* @author Robin Müller

src/main/java/com/dabsquared/gitlabjenkins/gitlab/api/impl/AutodetectingGitLabClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,9 @@
55
import com.dabsquared.gitlabjenkins.gitlab.api.GitLabClientBuilder;
66
import com.dabsquared.gitlabjenkins.gitlab.api.model.*;
77
import com.dabsquared.gitlabjenkins.gitlab.hook.model.State;
8+
import jakarta.ws.rs.NotFoundException;
89
import java.util.List;
910
import java.util.NoSuchElementException;
10-
import javax.ws.rs.NotFoundException;
1111

1212
final class AutodetectingGitLabClient implements GitLabClient {
1313
private final Iterable<GitLabClientBuilder> builders;

src/main/java/com/dabsquared/gitlabjenkins/gitlab/api/impl/ResteasyGitLabClientBuilder.java

Lines changed: 26 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,15 @@
2222
import hudson.model.Item;
2323
import hudson.model.ItemGroup;
2424
import hudson.security.ACL;
25+
import jakarta.annotation.Priority;
26+
import jakarta.ws.rs.Priorities;
27+
import jakarta.ws.rs.client.ClientRequestContext;
28+
import jakarta.ws.rs.client.ClientRequestFilter;
29+
import jakarta.ws.rs.client.ClientResponseContext;
30+
import jakarta.ws.rs.client.ClientResponseFilter;
31+
import jakarta.ws.rs.core.MediaType;
32+
import jakarta.ws.rs.core.MultivaluedMap;
33+
import jakarta.ws.rs.ext.RuntimeDelegate;
2534
import java.io.IOException;
2635
import java.io.InputStream;
2736
import java.net.InetSocketAddress;
@@ -38,17 +47,8 @@
3847
import java.util.logging.Level;
3948
import java.util.logging.Logger;
4049
import java.util.stream.Collectors;
41-
import javax.annotation.Priority;
4250
import javax.net.ssl.HostnameVerifier;
4351
import javax.net.ssl.SSLContext;
44-
import javax.ws.rs.Priorities;
45-
import javax.ws.rs.client.ClientRequestContext;
46-
import javax.ws.rs.client.ClientRequestFilter;
47-
import javax.ws.rs.client.ClientResponseContext;
48-
import javax.ws.rs.client.ClientResponseFilter;
49-
import javax.ws.rs.core.MediaType;
50-
import javax.ws.rs.core.MultivaluedMap;
51-
import javax.ws.rs.ext.RuntimeDelegate;
5252
import jenkins.model.Jenkins;
5353
import org.apache.commons.io.IOUtils;
5454
import org.apache.commons.lang3.StringUtils;
@@ -65,10 +65,11 @@
6565
import org.jboss.resteasy.client.jaxrs.ClientHttpEngine;
6666
import org.jboss.resteasy.client.jaxrs.ClientHttpEngineBuilder;
6767
import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder;
68+
import org.jboss.resteasy.client.jaxrs.ResteasyWebTarget;
6869
import org.jboss.resteasy.client.jaxrs.engines.ApacheHttpClient43Engine;
69-
import org.jboss.resteasy.client.jaxrs.engines.factory.ApacheHttpClient4EngineFactory;
70+
import org.jboss.resteasy.client.jaxrs.internal.ResteasyClientBuilderImpl;
71+
import org.jboss.resteasy.core.providerfactory.ResteasyProviderFactoryImpl;
7072
import org.jboss.resteasy.plugins.providers.JaxrsFormProvider;
71-
import org.jboss.resteasy.spi.ResteasyProviderFactory;
7273
import org.jenkinsci.plugins.plaincredentials.StringCredentials;
7374
import org.kohsuke.accmod.Restricted;
7475
import org.kohsuke.accmod.restrictions.NoExternalUse;
@@ -80,7 +81,7 @@ public class ResteasyGitLabClientBuilder extends GitLabClientBuilder {
8081

8182
@Initializer(before = InitMilestone.PLUGINS_STARTED)
8283
public static void setRuntimeDelegate() {
83-
RuntimeDelegate.setInstance(new ResteasyProviderFactory());
84+
RuntimeDelegate.setInstance(new ResteasyProviderFactoryImpl());
8485
}
8586

8687
private final Class<? extends GitLabApiProxy> apiProxyClass;
@@ -120,7 +121,7 @@ private GitLabClient buildClient(
120121
boolean ignoreCertificateErrors,
121122
int connectionTimeout,
122123
int readTimeout) {
123-
ResteasyClientBuilder builder = new ResteasyClientBuilder();
124+
ResteasyClientBuilder builder = new ResteasyClientBuilderImpl();
124125

125126
if (ignoreCertificateErrors) {
126127
builder.hostnameVerification(ResteasyClientBuilder.HostnameVerificationPolicy.ANY);
@@ -150,21 +151,25 @@ private GitLabClient buildClient(
150151
}
151152
}
152153

153-
GitLabApiProxy apiProxy = builder.connectionPoolSize(60)
154+
ResteasyWebTarget target = (ResteasyWebTarget) builder.connectionPoolSize(60)
154155
.maxPooledPerRoute(30)
155-
.establishConnectionTimeout(connectionTimeout, TimeUnit.SECONDS)
156-
.socketTimeout(readTimeout, TimeUnit.SECONDS)
156+
.connectTimeout(connectionTimeout, TimeUnit.SECONDS)
157+
.readTimeout(readTimeout, TimeUnit.SECONDS)
157158
.register(new JacksonFeature())
158159
.register(new JacksonConfig())
159160
.register(new ApiHeaderTokenFilter(credentialResolver, url))
160161
.register(new LoggingFilter())
161162
.register(new RemoveAcceptEncodingFilter())
162163
.register(new JaxrsFormProvider())
163164
.build()
164-
.target(url)
165-
.proxyBuilder(apiProxyClass)
165+
.target(url);
166+
// ProxyBuilderImpl must be accessible by context class loader
167+
ClassLoader ctx = Thread.currentThread().getContextClassLoader();
168+
Thread.currentThread().setContextClassLoader(this.getClass().getClassLoader());
169+
GitLabApiProxy apiProxy = target.proxyBuilder(apiProxyClass)
166170
.classloader(apiProxyClass.getClassLoader())
167171
.build();
172+
Thread.currentThread().setContextClassLoader(ctx);
168173

169174
return new ResteasyGitLabClient(url, apiProxy, mergeRequestIdProvider);
170175
}
@@ -316,7 +321,8 @@ public void filter(ClientRequestContext clientRequestContext) {
316321
}
317322
}
318323

319-
private static class ClientHttpEngineBuilder43 extends org.jboss.resteasy.client.jaxrs.ClientHttpEngineBuilder43 {
324+
private static class ClientHttpEngineBuilder43
325+
extends org.jboss.resteasy.client.jaxrs.engines.ClientHttpEngineBuilder43 {
320326

321327
private final CredentialsProvider proxyCredentials;
322328
private ResteasyClientBuilder that;
@@ -364,8 +370,7 @@ public HttpClient run() {
364370
});
365371
}
366372

367-
ApacheHttpClient43Engine engine =
368-
(ApacheHttpClient43Engine) ApacheHttpClient4EngineFactory.create(httpClient, true);
373+
ApacheHttpClient43Engine engine = new ApacheHttpClient43Engine(httpClient, true);
369374
engine.setResponseBufferSize(responseBufferSize);
370375
engine.setHostnameVerifier(verifier);
371376
engine.setSslContext(theContext);

src/main/java/com/dabsquared/gitlabjenkins/gitlab/api/impl/V3GitLabApiProxy.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -13,20 +13,20 @@
1313
import com.dabsquared.gitlabjenkins.gitlab.api.model.ProjectHook;
1414
import com.dabsquared.gitlabjenkins.gitlab.api.model.User;
1515
import com.dabsquared.gitlabjenkins.gitlab.hook.model.State;
16+
import jakarta.ws.rs.Consumes;
17+
import jakarta.ws.rs.DELETE;
18+
import jakarta.ws.rs.Encoded;
19+
import jakarta.ws.rs.FormParam;
20+
import jakarta.ws.rs.GET;
21+
import jakarta.ws.rs.HEAD;
22+
import jakarta.ws.rs.POST;
23+
import jakarta.ws.rs.PUT;
24+
import jakarta.ws.rs.Path;
25+
import jakarta.ws.rs.PathParam;
26+
import jakarta.ws.rs.Produces;
27+
import jakarta.ws.rs.QueryParam;
28+
import jakarta.ws.rs.core.MediaType;
1629
import java.util.List;
17-
import javax.ws.rs.Consumes;
18-
import javax.ws.rs.DELETE;
19-
import javax.ws.rs.Encoded;
20-
import javax.ws.rs.FormParam;
21-
import javax.ws.rs.GET;
22-
import javax.ws.rs.HEAD;
23-
import javax.ws.rs.POST;
24-
import javax.ws.rs.PUT;
25-
import javax.ws.rs.Path;
26-
import javax.ws.rs.PathParam;
27-
import javax.ws.rs.Produces;
28-
import javax.ws.rs.QueryParam;
29-
import javax.ws.rs.core.MediaType;
3030

3131
/**
3232
* @author Robin Müller

src/main/java/com/dabsquared/gitlabjenkins/gitlab/api/impl/V4GitLabApiProxy.java

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@
44

55
import com.dabsquared.gitlabjenkins.gitlab.api.model.*;
66
import com.dabsquared.gitlabjenkins.gitlab.hook.model.State;
7+
import jakarta.ws.rs.Consumes;
8+
import jakarta.ws.rs.DELETE;
9+
import jakarta.ws.rs.Encoded;
10+
import jakarta.ws.rs.FormParam;
11+
import jakarta.ws.rs.GET;
12+
import jakarta.ws.rs.HEAD;
13+
import jakarta.ws.rs.POST;
14+
import jakarta.ws.rs.PUT;
15+
import jakarta.ws.rs.Path;
16+
import jakarta.ws.rs.PathParam;
17+
import jakarta.ws.rs.Produces;
18+
import jakarta.ws.rs.QueryParam;
19+
import jakarta.ws.rs.core.MediaType;
720
import java.util.List;
8-
import javax.ws.rs.Consumes;
9-
import javax.ws.rs.DELETE;
10-
import javax.ws.rs.Encoded;
11-
import javax.ws.rs.FormParam;
12-
import javax.ws.rs.GET;
13-
import javax.ws.rs.HEAD;
14-
import javax.ws.rs.POST;
15-
import javax.ws.rs.PUT;
16-
import javax.ws.rs.Path;
17-
import javax.ws.rs.PathParam;
18-
import javax.ws.rs.Produces;
19-
import javax.ws.rs.QueryParam;
20-
import javax.ws.rs.core.MediaType;
2121

2222
/**
2323
* @author Robin Müller.

src/main/java/com/dabsquared/gitlabjenkins/publisher/GitLabAcceptMergeRequestPublisher.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,10 +11,10 @@
1111
import hudson.tasks.BuildStepDescriptor;
1212
import hudson.tasks.BuildStepMonitor;
1313
import hudson.tasks.Publisher;
14+
import jakarta.ws.rs.ProcessingException;
15+
import jakarta.ws.rs.WebApplicationException;
1416
import java.util.logging.Level;
1517
import java.util.logging.Logger;
16-
import javax.ws.rs.ProcessingException;
17-
import javax.ws.rs.WebApplicationException;
1818
import org.kohsuke.stapler.DataBoundConstructor;
1919
import org.kohsuke.stapler.DataBoundSetter;
2020

src/main/java/com/dabsquared/gitlabjenkins/publisher/GitLabMessagePublisher.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,14 +10,14 @@
1010
import hudson.model.TaskListener;
1111
import hudson.tasks.BuildStepDescriptor;
1212
import hudson.tasks.Publisher;
13+
import jakarta.ws.rs.ProcessingException;
14+
import jakarta.ws.rs.WebApplicationException;
1315
import java.text.MessageFormat;
1416
import java.util.HashMap;
1517
import java.util.Map;
1618
import java.util.Objects;
1719
import java.util.logging.Level;
1820
import java.util.logging.Logger;
19-
import javax.ws.rs.ProcessingException;
20-
import javax.ws.rs.WebApplicationException;
2121
import jenkins.model.Jenkins;
2222
import org.kohsuke.stapler.DataBoundConstructor;
2323
import org.kohsuke.stapler.DataBoundSetter;

0 commit comments

Comments
 (0)