Skip to content

Commit 4a7d8c7

Browse files
committed
refactor(dependency): replace javax.inject with jakarta.inject and upgrade wiremock as part of spring boot 3.x upgrade
While upgrading the spring boot to 3.0.13 and spring cloud 2022.0.5, encountered the below errors: ``` Caused by: org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type 'javax.inject.Provider<com.netflix.spectator.api.Registry>' available: expected at least 1 bean which qualifies as autowire candidate. Dependency annotations: {} at app//org.springframework.beans.factory.support.DefaultListableBeanFactory.raiseNoMatchingBeanFound(DefaultListableBeanFactory.java:1824) at app//org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1383) at app//org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1337) at app//org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:910) at app//org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788) ... 175 more ``` The root cause is use of `javax.inject` that has been moved from present coordinate to `jakarta.inject`. So, updating the coordinates in kork-eureka, kork-plugins and kork-web modules. google/guice#1463 google/guice#1383 https://docs.openrewrite.org/recipes/java/migrate/jakarta/javaxinjectmigrationtojakartainject ``` javax/servlet/DispatcherType java.lang.NoClassDefFoundError: javax/servlet/DispatcherType at com.github.tomakehurst.wiremock.jetty9.JettyHttpServerFactory.buildHttpServer(JettyHttpServerFactory.java:31) at com.github.tomakehurst.wiremock.WireMockServer.<init>(WireMockServer.java:74) at com.netflix.spinnaker.kork.plugins.sdk.httpclient.Ok3HttpClientIntegrationTest$Fixture.<init>(Ok3HttpClientIntegrationTest.kt:78) at com.netflix.spinnaker.kork.plugins.sdk.httpclient.Ok3HttpClientIntegrationTest$test$1$1.invoke(Ok3HttpClientIntegrationTest.kt:40) at com.netflix.spinnaker.kork.plugins.sdk.httpclient.Ok3HttpClientIntegrationTest$test$1$1.invoke(Ok3HttpClientIntegrationTest.kt:40) at dev.minutest.TestContextBuilder$fixture$1.invoke(ContextBuilder.kt:48) ``` In order to fix this issue, upgrading wiremock dependency to 3.0.4 and updating its coordinates. Wiremock [3.0.0](https://github.com/wiremock/wiremock/releases/tag/3.0.0) onwards 2 major breaking changes are introduced: 1. support for Java 17, dropping Java 8 support 2. Change the Maven repository groupID to org.wiremock https://github.com/wiremock/wiremock/releases?page=3
1 parent 7ca3cde commit 4a7d8c7

File tree

8 files changed

+9
-9
lines changed

8 files changed

+9
-9
lines changed

kork-eureka/kork-eureka.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ dependencies {
2323
implementation project(":kork-core")
2424
implementation project(":kork-exceptions")
2525

26-
implementation "javax.inject:javax.inject:1"
26+
implementation "jakarta.inject:jakarta.inject-api" // Transitive dependency of com.netflix.eureka:eureka-client-jersey3
2727
implementation "org.springframework.boot:spring-boot-autoconfigure"
2828
implementation "org.springframework.boot:spring-boot-starter-actuator"
2929

kork-eureka/src/main/java/com/netflix/spinnaker/kork/eureka/EurekaAutoConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,9 @@
2626
import com.netflix.eventbus.impl.EventBusImpl;
2727
import com.netflix.eventbus.spi.EventBus;
2828
import com.netflix.spinnaker.kork.discovery.DiscoveryAutoConfiguration;
29+
import jakarta.inject.Provider;
2930
import java.util.Map;
3031
import java.util.Objects;
31-
import javax.inject.Provider;
3232
import org.springframework.boot.actuate.health.HealthIndicator;
3333
import org.springframework.boot.actuate.health.StatusAggregator;
3434
import org.springframework.boot.autoconfigure.AutoConfigureBefore;

kork-plugins/kork-plugins.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ dependencies {
2828
implementation "org.springframework.boot:spring-boot-starter-web"
2929
implementation "org.springframework.boot:spring-boot-starter-actuator"
3030
implementation("com.google.guava:guava")
31-
implementation "javax.inject:javax.inject:1"
31+
implementation "jakarta.inject:jakarta.inject-api:2.0.1"
3232

3333
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-yaml")
3434
implementation("com.fasterxml.jackson.dataformat:jackson-dataformat-properties")
@@ -39,7 +39,7 @@ dependencies {
3939
testImplementation("org.mockito:mockito-core")
4040
testImplementation "org.spockframework:spock-core"
4141
testImplementation "org.springframework.boot:spring-boot-starter-test"
42-
testImplementation("com.github.tomakehurst:wiremock:2.15.0")
42+
testImplementation("org.wiremock:wiremock:3.0.4")
4343

4444
testRuntimeOnly "cglib:cglib-nodep"
4545
testRuntimeOnly "org.objenesis:objenesis"

kork-plugins/src/main/java/com/netflix/spinnaker/config/HttpClientSdkConfiguration.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -33,9 +33,9 @@
3333
import com.netflix.spinnaker.kork.plugins.sdk.httpclient.internal.DefaultOkHttp3ClientFactory;
3434
import com.netflix.spinnaker.okhttp.OkHttp3MetricsInterceptor;
3535
import com.netflix.spinnaker.okhttp.OkHttpClientConfigurationProperties;
36+
import jakarta.inject.Provider;
3637
import java.util.ArrayList;
3738
import java.util.List;
38-
import javax.inject.Provider;
3939
import org.springframework.boot.context.properties.bind.Bindable;
4040
import org.springframework.boot.context.properties.bind.Binder;
4141
import org.springframework.context.annotation.Bean;

kork-web/kork-web.gradle

+1-1
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ dependencies {
2828
api "com.squareup.retrofit:retrofit"
2929

3030
implementation "com.google.guava:guava"
31-
implementation "javax.inject:javax.inject:1"
31+
implementation "jakarta.inject:jakarta.inject-api:2.0.1"
3232
implementation("com.netflix.spectator:spectator-web-spring") {
3333
// exclude transitives since this brings in a newer version of spring (boot)
3434
// dependencies than we're compatible with (2.2.x for spring boot and 5.2.x

kork-web/src/main/java/com/netflix/spinnaker/config/OkHttpClientComponents.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import com.netflix.spinnaker.okhttp.SpinnakerRequestInterceptor;
3333
import com.netflix.spinnaker.retrofit.Retrofit2ConfigurationProperties;
3434
import com.netflix.spinnaker.retrofit.RetrofitConfigurationProperties;
35+
import jakarta.inject.Provider;
3536
import java.io.File;
3637
import java.io.FileInputStream;
3738
import java.io.IOException;
@@ -43,7 +44,6 @@
4344
import java.util.List;
4445
import java.util.concurrent.TimeUnit;
4546
import javax.annotation.Nullable;
46-
import javax.inject.Provider;
4747
import javax.net.ssl.SSLContext;
4848
import javax.net.ssl.TrustManager;
4949
import javax.net.ssl.X509TrustManager;

kork-web/src/main/java/com/netflix/spinnaker/okhttp/MetricsInterceptor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.netflix.spectator.api.Registry;
44
import com.netflix.spinnaker.config.OkHttpMetricsInterceptorProperties;
55
import com.netflix.spinnaker.kork.common.Header;
6+
import jakarta.inject.Provider;
67
import java.io.IOException;
78
import java.net.URL;
89
import java.util.ArrayList;
@@ -11,7 +12,6 @@
1112
import java.util.concurrent.TimeUnit;
1213
import java.util.regex.Pattern;
1314
import java.util.stream.Collectors;
14-
import javax.inject.Provider;
1515
import org.slf4j.Logger;
1616
import org.slf4j.LoggerFactory;
1717
import org.slf4j.MDC;

kork-web/src/main/java/com/netflix/spinnaker/okhttp/OkHttp3MetricsInterceptor.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818

1919
import com.netflix.spectator.api.Registry;
2020
import com.netflix.spinnaker.config.OkHttpMetricsInterceptorProperties;
21+
import jakarta.inject.Provider;
2122
import java.io.IOException;
22-
import javax.inject.Provider;
2323
import okhttp3.Response;
2424

2525
public class OkHttp3MetricsInterceptor extends MetricsInterceptor implements okhttp3.Interceptor {

0 commit comments

Comments
 (0)