diff --git a/settings.gradle b/settings.gradle index 8397121c13e..892d32d2680 100644 --- a/settings.gradle +++ b/settings.gradle @@ -94,9 +94,8 @@ include "spring-boot-project:spring-boot-gson" include "spring-boot-project:spring-boot-h2console" include "spring-boot-project:spring-boot-hateoas" include "spring-boot-project:spring-boot-hazelcast" -include "spring-boot-project:spring-boot-http-converter" include "spring-boot-project:spring-boot-http-client" -include "spring-boot-project:spring-boot-http-client-reactive" +include "spring-boot-project:spring-boot-http-converter" include "spring-boot-project:spring-boot-http-codec" include "spring-boot-project:spring-boot-integration" include "spring-boot-project:spring-boot-integration-tests" @@ -122,6 +121,8 @@ include "spring-boot-project:spring-boot-quartz" include "spring-boot-project:spring-boot-r2dbc" include "spring-boot-project:spring-boot-reactor" include "spring-boot-project:spring-boot-reactor-netty" +include "spring-boot-project:spring-boot-restclient" +include "spring-boot-project:spring-boot-restclient-test" include "spring-boot-project:spring-boot-rsocket" include "spring-boot-project:spring-boot-security" include "spring-boot-project:spring-boot-security-oauth2-authorization-server" @@ -162,6 +163,7 @@ include "spring-boot-project:spring-boot-undertow" include "spring-boot-project:spring-boot-validation" include "spring-boot-project:spring-boot-web-server" include "spring-boot-project:spring-boot-web-server-test" +include "spring-boot-project:spring-boot-webclient" include "spring-boot-project:spring-boot-webflux" include "spring-boot-project:spring-boot-webmvc" include "spring-boot-project:spring-boot-webservices" diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle index c158db8908d..d0731e50898 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle @@ -56,8 +56,6 @@ dependencies { optional(project(":spring-boot-project:spring-boot-flyway")) optional(project(":spring-boot-project:spring-boot-hazelcast")) optional(project(":spring-boot-project:spring-boot-http-converter")) - optional(project(":spring-boot-project:spring-boot-http-client")) - optional(project(":spring-boot-project:spring-boot-http-client-reactive")) optional(project(":spring-boot-project:spring-boot-http-codec")) optional(project(":spring-boot-project:spring-boot-integration")) optional(project(":spring-boot-project:spring-boot-jackson")) @@ -73,6 +71,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-quartz")) optional(project(":spring-boot-project:spring-boot-r2dbc")) optional(project(":spring-boot-project:spring-boot-reactor-netty")) + optional(project(":spring-boot-project:spring-boot-restclient")) optional(project(":spring-boot-project:spring-boot-security-oauth2-client")) optional(project(":spring-boot-project:spring-boot-security-oauth2-resource-server")) optional(project(":spring-boot-project:spring-boot-security-saml2")) @@ -80,6 +79,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-tomcat")) optional(project(":spring-boot-project:spring-boot-undertow")) optional(project(":spring-boot-project:spring-boot-validation")) + optional(project(":spring-boot-project:spring-boot-webclient")) optional(project(":spring-boot-project:spring-boot-webflux")) optional(project(":spring-boot-project:spring-boot-webmvc")) optional("ch.qos.logback:logback-classic") @@ -183,6 +183,7 @@ dependencies { testImplementation(project(":spring-boot-project:spring-boot-data-rest")) testImplementation(project(":spring-boot-project:spring-boot-hateoas")) + testImplementation(project(":spring-boot-project:spring-boot-restclient-test")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) testImplementation(project(":spring-boot-project:spring-boot-web-server-test")) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfiguration.java index d98cedcce77..ecc7ad3f4d3 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfiguration.java @@ -50,7 +50,7 @@ import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.cloud.CloudPlatform; import org.springframework.boot.info.GitProperties; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityService.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityService.java index d51e0a3d8b6..17d86d217b1 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityService.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityService.java @@ -25,7 +25,7 @@ import java.util.Map; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.AccessLevel; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.CloudFoundryAuthorizationException; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.CloudFoundryAuthorizationException.Reason; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.http.HttpStatus; import org.springframework.http.RequestEntity; import org.springframework.util.Assert; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/HttpClientObservationsAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/HttpClientObservationsAutoConfiguration.java index e54eb7807be..e5e9acea6af 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/HttpClientObservationsAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/HttpClientObservationsAutoConfiguration.java @@ -50,9 +50,9 @@ import org.springframework.core.annotation.Order; * @since 3.0.0 */ @AutoConfiguration(after = { ObservationAutoConfiguration.class, CompositeMeterRegistryAutoConfiguration.class }, - afterName = { "org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration", - "org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration", - "org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration" }) + afterName = { "org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration", + "org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration", + "org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration" }) @ConditionalOnClass(Observation.class) @ConditionalOnBean(ObservationRegistry.class) @Import({ RestTemplateObservationConfiguration.class, WebClientObservationConfiguration.class, diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java index c82905730c7..7e5b2afa686 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfiguration.java @@ -22,8 +22,8 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestClientCustomizer; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; +import org.springframework.boot.restclient.actuate.observation.ObservationRestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.observation.ClientRequestObservationConvention; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java index 14d19f27078..84b55c79f12 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfiguration.java @@ -22,8 +22,8 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.actuate.observation.ObservationRestTemplateCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.observation.ClientRequestObservationConvention; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfiguration.java index 16a9aa74557..d0ecdb69952 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfiguration.java @@ -22,7 +22,7 @@ import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.actuate.autoconfigure.metrics.MetricsProperties; import org.springframework.boot.actuate.autoconfigure.observation.ObservationProperties; import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; -import org.springframework.boot.http.client.reactive.web.actuate.observation.ObservationWebClientCustomizer; +import org.springframework.boot.webclient.actuate.observation.ObservationWebClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.web.reactive.function.client.ClientRequestObservationConvention; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java index eaefe5b92dd..a8835e250c0 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/main/java/org/springframework/boot/actuate/autoconfigure/tracing/zipkin/ZipkinAutoConfiguration.java @@ -38,7 +38,7 @@ import org.springframework.context.annotation.Import; * @author Moritz Halbritter * @since 3.0.0 */ -@AutoConfiguration(afterName = "org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration") +@AutoConfiguration(afterName = "org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration") @ConditionalOnClass(Encoding.class) @Import({ SenderConfiguration.class, BraveConfiguration.class, OpenTelemetryConfiguration.class }) @EnableConfigurationProperties(ZipkinProperties.class) diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryReactiveHealthEndpointWebExtensionTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryReactiveHealthEndpointWebExtensionTests.java index cc800c54fb4..c41110961c9 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryReactiveHealthEndpointWebExtensionTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/CloudFoundryReactiveHealthEndpointWebExtensionTests.java @@ -32,11 +32,11 @@ import org.springframework.boot.actuate.health.HealthComponent; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; import org.springframework.boot.security.autoconfigure.reactive.ReactiveSecurityAutoConfiguration; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.webflux.autoconfigure.WebFluxAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundryActuatorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundryActuatorAutoConfigurationTests.java index 6779124e8b2..29d7b4d329b 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundryActuatorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/reactive/ReactiveCloudFoundryActuatorAutoConfigurationTests.java @@ -50,7 +50,6 @@ import org.springframework.boot.actuate.endpoint.web.WebOperationRequestPredicat import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; import org.springframework.boot.security.autoconfigure.reactive.ReactiveSecurityAutoConfiguration; @@ -60,7 +59,8 @@ import org.springframework.boot.ssl.jks.JksSslStoreDetails; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; import org.springframework.boot.testsupport.classpath.resources.WithPackageResources; import org.springframework.boot.testsupport.classpath.resources.WithResource; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.webflux.autoconfigure.WebFluxAutoConfiguration; import org.springframework.context.ApplicationContext; import org.springframework.context.annotation.Bean; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfigurationTests.java index 3d3d4b6dc25..4fe088e65ac 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryActuatorAutoConfigurationTests.java @@ -40,9 +40,9 @@ import org.springframework.boot.actuate.endpoint.web.WebOperation; import org.springframework.boot.actuate.endpoint.web.WebOperationRequestPredicate; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.security.autoconfigure.servlet.SecurityAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableWebApplicationContext; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryHealthEndpointWebExtensionTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryHealthEndpointWebExtensionTests.java index 8ba5ea4f7ee..69ba0f256f2 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryHealthEndpointWebExtensionTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryHealthEndpointWebExtensionTests.java @@ -31,9 +31,9 @@ import org.springframework.boot.actuate.health.HealthComponent; import org.springframework.boot.actuate.health.HealthIndicator; import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.security.autoconfigure.servlet.SecurityAutoConfiguration; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; import org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryInfoEndpointWebExtensionTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryInfoEndpointWebExtensionTests.java index 7bbded70fc2..0c0266de2c1 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryInfoEndpointWebExtensionTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundryInfoEndpointWebExtensionTests.java @@ -30,9 +30,9 @@ import org.springframework.boot.actuate.autoconfigure.web.servlet.ServletManagem import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.context.PropertyPlaceholderAutoConfiguration; import org.springframework.boot.autoconfigure.info.ProjectInfoAutoConfiguration; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.security.autoconfigure.servlet.SecurityAutoConfiguration; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; import org.springframework.boot.testsupport.classpath.resources.WithResource; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityServiceTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityServiceTests.java index df23f85cd33..5f1c82f7ccf 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityServiceTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/cloudfoundry/servlet/CloudFoundrySecurityServiceTests.java @@ -25,8 +25,8 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.AccessLevel; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.CloudFoundryAuthorizationException; import org.springframework.boot.actuate.autoconfigure.cloudfoundry.CloudFoundryAuthorizationException.Reason; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.http.HttpStatus; import org.springframework.http.MediaType; import org.springframework.test.util.ReflectionTestUtils; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java index 7d80aea8a9b..06502e3ec29 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/metrics/test/MetricsIntegrationTests.java @@ -47,13 +47,13 @@ import org.springframework.boot.actuate.autoconfigure.observation.web.client.Htt import org.springframework.boot.actuate.autoconfigure.observation.web.reactive.WebFluxObservationAutoConfiguration; import org.springframework.boot.actuate.autoconfigure.observation.web.servlet.WebMvcObservationAutoConfiguration; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; import org.springframework.boot.jackson.autoconfigure.JacksonAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.tomcat.autoconfigure.servlet.TomcatServletWebServerAutoConfiguration; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.boot.web.servlet.FilterRegistrationBean; import org.springframework.boot.webmvc.autoconfigure.DispatcherServletAutoConfiguration; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java index ac7171cc4d0..4da19e9181d 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationTests.java @@ -26,13 +26,13 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestClientCustomizer; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.actuate.observation.ObservationRestClientCustomizer; +import org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationWithoutMetricsTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationWithoutMetricsTests.java index 49ada8a0d2d..1854c04628f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationWithoutMetricsTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestClientObservationConfigurationWithoutMetricsTests.java @@ -23,11 +23,11 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.OutputCaptureExtension; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; import org.springframework.boot.testsupport.classpath.ClassPathExclusions; import org.springframework.http.HttpStatus; import org.springframework.web.client.RestClient; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java index aefb0b08dfc..0fc2a3a5a1f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationTests.java @@ -26,13 +26,13 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.http.client.rest.actuate.observation.ObservationRestTemplateCustomizer; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.actuate.observation.ObservationRestTemplateCustomizer; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationWithoutMetricsTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationWithoutMetricsTests.java index 293cc120a66..979f9323a6e 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationWithoutMetricsTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/RestTemplateObservationConfigurationWithoutMetricsTests.java @@ -23,12 +23,12 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.OutputCaptureExtension; import org.springframework.boot.testsupport.classpath.ClassPathExclusions; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.http.HttpStatus; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfigurationTests.java b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfigurationTests.java index 9a537012ece..fd1c937132f 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfigurationTests.java +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/src/test/java/org/springframework/boot/actuate/autoconfigure/observation/web/client/WebClientObservationConfigurationTests.java @@ -29,12 +29,12 @@ import reactor.core.publisher.Mono; import org.springframework.boot.actuate.autoconfigure.metrics.test.MetricsRun; import org.springframework.boot.actuate.autoconfigure.observation.ObservationAutoConfiguration; import org.springframework.boot.autoconfigure.AutoConfigurations; -import org.springframework.boot.http.client.reactive.web.actuate.observation.ObservationWebClientCustomizer; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.test.context.assertj.AssertableApplicationContext; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.system.CapturedOutput; import org.springframework.boot.test.system.OutputCaptureExtension; +import org.springframework.boot.webclient.actuate.observation.ObservationWebClientCustomizer; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index 03e9e78d4a3..bd2a7826c12 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -2021,10 +2021,9 @@ bom { "spring-boot-h2console", "spring-boot-hateoas", "spring-boot-hazelcast", + "spring-boot-http-client", "spring-boot-http-codec", "spring-boot-http-converter", - "spring-boot-http-client", - "spring-boot-http-client-reactive", "spring-boot-integration", "spring-boot-jackson", "spring-boot-jarmode-tools", @@ -2052,6 +2051,8 @@ bom { "spring-boot-r2dbc", "spring-boot-reactor", "spring-boot-reactor-netty", + "spring-boot-restclient", + "spring-boot-restclient-test", "spring-boot-rsocket", "spring-boot-security", "spring-boot-security-oauth2-authorization-server", @@ -2128,6 +2129,7 @@ bom { "spring-boot-tx", "spring-boot-undertow", "spring-boot-validation", + "spring-boot-webclient", "spring-boot-webflux", "spring-boot-webmvc", "spring-boot-webservices", diff --git a/spring-boot-project/spring-boot-devtools/build.gradle b/spring-boot-project/spring-boot-devtools/build.gradle index 7c0daa7b024..93c7ed0f8a6 100644 --- a/spring-boot-project/spring-boot-devtools/build.gradle +++ b/spring-boot-project/spring-boot-devtools/build.gradle @@ -45,6 +45,7 @@ dependencies { intTestDependencies(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) intTestImplementation(project(":spring-boot-project:spring-boot-autoconfigure-all")) + intTestImplementation(project(":spring-boot-project:spring-boot-restclient")) intTestImplementation(project(":spring-boot-project:spring-boot-test")) intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) intTestImplementation(project(":spring-boot-project:spring-boot-web-server-test")) diff --git a/spring-boot-project/spring-boot-devtools/src/intTest/java/org/springframework/boot/devtools/tests/DevToolsIntegrationTests.java b/spring-boot-project/spring-boot-devtools/src/intTest/java/org/springframework/boot/devtools/tests/DevToolsIntegrationTests.java index 645820bca44..1baa9c915d0 100644 --- a/spring-boot-project/spring-boot-devtools/src/intTest/java/org/springframework/boot/devtools/tests/DevToolsIntegrationTests.java +++ b/spring-boot-project/spring-boot-devtools/src/intTest/java/org/springframework/boot/devtools/tests/DevToolsIntegrationTests.java @@ -25,7 +25,7 @@ import org.apache.hc.core5.util.TimeValue; import org.junit.jupiter.params.ParameterizedTest; import org.junit.jupiter.params.provider.MethodSource; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.http.HttpStatus; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; diff --git a/spring-boot-project/spring-boot-docs/build.gradle b/spring-boot-project/spring-boot-docs/build.gradle index a0993f27ad8..45801e9d410 100644 --- a/spring-boot-project/spring-boot-docs/build.gradle +++ b/spring-boot-project/spring-boot-docs/build.gradle @@ -106,9 +106,8 @@ dependencies { autoConfiguration(project(path: ":spring-boot-project:spring-boot-h2console", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-hateoas", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-hazelcast", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":spring-boot-project:spring-boot-http-converter", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-http-client", configuration: "autoConfigurationMetadata")) - autoConfiguration(project(path: ":spring-boot-project:spring-boot-http-client-reactive", configuration: "autoConfigurationMetadata")) + autoConfiguration(project(path: ":spring-boot-project:spring-boot-http-converter", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-http-codec", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-integration", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-jackson", configuration: "autoConfigurationMetadata")) @@ -132,6 +131,7 @@ dependencies { autoConfiguration(project(path: ":spring-boot-project:spring-boot-r2dbc", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-reactor", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-reactor-netty", configuration: "autoConfigurationMetadata")) + autoConfiguration(project(path: ":spring-boot-project:spring-boot-restclient", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-rsocket", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-security", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-security-oauth2-authorization-server", configuration: "autoConfigurationMetadata")) @@ -150,6 +150,7 @@ dependencies { autoConfiguration(project(path: ":spring-boot-project:spring-boot-tx", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-undertow", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-validation", configuration: "autoConfigurationMetadata")) + autoConfiguration(project(path: ":spring-boot-project:spring-boot-webclient", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-webflux", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-webmvc", configuration: "autoConfigurationMetadata")) autoConfiguration(project(path: ":spring-boot-project:spring-boot-webservices", configuration: "autoConfigurationMetadata")) @@ -188,9 +189,8 @@ dependencies { configurationProperties(project(path: ":spring-boot-project:spring-boot-h2console", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-hateoas", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-hazelcast", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":spring-boot-project:spring-boot-http-converter", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-http-client", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":spring-boot-project:spring-boot-http-client-reactive", configuration: "configurationPropertiesMetadata")) + configurationProperties(project(path: ":spring-boot-project:spring-boot-http-converter", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-http-codec", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-integration", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-jackson", configuration: "configurationPropertiesMetadata")) @@ -232,8 +232,8 @@ dependencies { configurationProperties(project(path: ":spring-boot-project:spring-boot-tomcat", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-tx", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-undertow", configuration: "configurationPropertiesMetadata")) - configurationProperties(project(path: ":spring-boot-project:spring-boot-webflux", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-web-server", configuration: "configurationPropertiesMetadata")) + configurationProperties(project(path: ":spring-boot-project:spring-boot-webflux", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-webmvc", configuration: "configurationPropertiesMetadata")) configurationProperties(project(path: ":spring-boot-project:spring-boot-webservices", configuration: "configurationPropertiesMetadata")) @@ -248,8 +248,6 @@ dependencies { implementation(project(path: ":spring-boot-project:spring-boot-devtools")) implementation(project(path: ":spring-boot-project:spring-boot-docker-compose")) implementation(project(path: ":spring-boot-project:spring-boot-http-converter")) - implementation(project(path: ":spring-boot-project:spring-boot-http-client")) - implementation(project(path: ":spring-boot-project:spring-boot-http-client-reactive")) implementation(project(path: ":spring-boot-project:spring-boot-http-codec")) implementation(project(path: ":spring-boot-project:spring-boot-integration")) implementation(project(path: ":spring-boot-project:spring-boot-jackson")) @@ -258,8 +256,9 @@ dependencies { implementation(project(path: ":spring-boot-project:spring-boot-jms")) implementation(project(path: ":spring-boot-project:spring-boot-jsonb")) implementation(project(path: ":spring-boot-project:spring-boot-ldap")) - implementation(project(path: ":spring-boot-project:spring-boot-reactor-netty")) implementation(project(path: ":spring-boot-project:spring-boot-r2dbc")) + implementation(project(path: ":spring-boot-project:spring-boot-reactor-netty")) + implementation(project(path: ":spring-boot-project:spring-boot-restclient")) implementation(project(path: ":spring-boot-project:spring-boot-security")) implementation(project(path: ":spring-boot-project:spring-boot-test")) implementation(project(path: ":spring-boot-project:spring-boot-test-autoconfigure")) @@ -269,6 +268,7 @@ dependencies { implementation(project(path: ":spring-boot-project:spring-boot-tools:spring-boot-loader-tools")) implementation(project(path: ":spring-boot-project:spring-boot-undertow")) implementation(project(path: ":spring-boot-project:spring-boot-web-server-test")) + implementation(project(path: ":spring-boot-project:spring-boot-webclient")) implementation(project(path: ":spring-boot-project:spring-boot-webflux")) implementation(project(path: ":spring-boot-project:spring-boot-webmvc")) implementation(project(path: ":spring-boot-project:spring-boot-webservices")) diff --git a/spring-boot-project/spring-boot-docs/src/docs/antora/modules/reference/pages/io/rest-client.adoc b/spring-boot-project/spring-boot-docs/src/docs/antora/modules/reference/pages/io/rest-client.adoc index ba59a6fb7c1..e26736c9a2c 100644 --- a/spring-boot-project/spring-boot-docs/src/docs/antora/modules/reference/pages/io/rest-client.adoc +++ b/spring-boot-project/spring-boot-docs/src/docs/antora/modules/reference/pages/io/rest-client.adoc @@ -156,9 +156,9 @@ TIP: You can also change the xref:io/rest-client.adoc#io.rest-client.clienthttpr [[io.rest-client.restclient.ssl]] === RestClient SSL Support -If you need custom SSL configuration on the javadoc:org.springframework.http.client.ClientHttpRequestFactory[] used by the javadoc:org.springframework.web.client.RestClient[], you can inject a javadoc:org.springframework.boot.http.client.rest.autoconfigure.RestClientSsl[] instance that can be used with the builder's `apply` method. +If you need custom SSL configuration on the javadoc:org.springframework.http.client.ClientHttpRequestFactory[] used by the javadoc:org.springframework.web.client.RestClient[], you can inject a javadoc:org.springframework.boot.restclient.autoconfigure.RestClientSsl[] instance that can be used with the builder's `apply` method. -The javadoc:org.springframework.boot.http.client.rest.autoconfigure.RestClientSsl[] interface provides access to any xref:features/ssl.adoc#features.ssl.bundles[SSL bundles] that you have defined in your `application.properties` or `application.yaml` file. +The javadoc:org.springframework.boot.restclient.autoconfigure.RestClientSsl[] interface provides access to any xref:features/ssl.adoc#features.ssl.bundles[SSL bundles] that you have defined in your `application.properties` or `application.yaml` file. The following code shows a typical example: diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.java index 159f88db3a5..4175411fb35 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.java @@ -16,7 +16,7 @@ package org.springframework.boot.docs.io.restclient.restclient.ssl; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientSsl; +import org.springframework.boot.restclient.autoconfigure.RestClientSsl; import org.springframework.stereotype.Service; import org.springframework.web.client.RestClient; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/MyService.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/MyService.java index 8715ab5462b..a537d11bf0b 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/MyService.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/MyService.java @@ -16,7 +16,7 @@ package org.springframework.boot.docs.io.restclient.resttemplate; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.java index 2de919c53b9..f9a6d113bbe 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.java @@ -18,8 +18,8 @@ package org.springframework.boot.docs.io.restclient.resttemplate.customization; import java.time.Duration; -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateBuilderConfigurer; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.autoconfigure.RestTemplateBuilderConfigurer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.java index 124ddf2655e..98e052a1863 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.java @@ -24,7 +24,7 @@ import org.apache.hc.core5.http.HttpException; import org.apache.hc.core5.http.HttpHost; import org.apache.hc.core5.http.protocol.HttpContext; -import org.springframework.boot.web.client.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateCustomizer; import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.java index 247f986d42a..d488da14a66 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.java @@ -17,8 +17,8 @@ package org.springframework.boot.docs.io.restclient.resttemplate.ssl; import org.springframework.boot.docs.io.restclient.resttemplate.Details; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.ssl.SslBundles; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.java index 828b0358815..fbc972ace30 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.java @@ -18,7 +18,7 @@ package org.springframework.boot.docs.io.restclient.webclient.ssl; import reactor.core.publisher.Mono; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientSsl; +import org.springframework.boot.webclient.autoconfigure.WebClientSsl; import org.springframework.stereotype.Service; import org.springframework.web.reactive.function.client.WebClient; diff --git a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.java b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.java index 3d4e5d21e33..7dfa0bc3ef7 100644 --- a/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.java +++ b/spring-boot-project/spring-boot-docs/src/main/java/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.java @@ -21,10 +21,10 @@ import java.time.Duration; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; import org.springframework.boot.test.context.TestConfiguration; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.context.annotation.Bean; import org.springframework.http.HttpHeaders; diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.kt index 75603c52392..28350f3c08f 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/restclient/ssl/MyService.kt @@ -17,7 +17,7 @@ package org.springframework.boot.docs.io.restclient.restclient.ssl import org.springframework.boot.docs.io.restclient.restclient.ssl.settings.Details -import org.springframework.boot.http.client.rest.autoconfigure.RestClientSsl +import org.springframework.boot.restclient.autoconfigure.RestClientSsl import org.springframework.stereotype.Service import org.springframework.web.client.RestClient diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/MyService.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/MyService.kt index bbf7ad557b1..3778c5ed5c5 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/MyService.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/MyService.kt @@ -16,7 +16,7 @@ package org.springframework.boot.docs.io.restclient.resttemplate -import org.springframework.boot.web.client.RestTemplateBuilder +import org.springframework.boot.restclient.RestTemplateBuilder import org.springframework.stereotype.Service import org.springframework.web.client.RestTemplate diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.kt index 1d1b076d6c4..57bfd52ebd6 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateBuilderConfiguration.kt @@ -16,8 +16,8 @@ package org.springframework.boot.docs.io.restclient.resttemplate.customization -import org.springframework.boot.http.client.rest.autoconfigure.RestTemplateBuilderConfigurer -import org.springframework.boot.web.client.RestTemplateBuilder +import org.springframework.boot.restclient.autoconfigure.RestTemplateBuilderConfigurer +import org.springframework.boot.restclient.RestTemplateBuilder import org.springframework.context.annotation.Bean import org.springframework.context.annotation.Configuration import java.time.Duration diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.kt index 0a9a52cfec4..4bdc28fae72 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/customization/MyRestTemplateCustomizer.kt @@ -23,7 +23,7 @@ import org.apache.hc.client5.http.routing.HttpRoutePlanner import org.apache.hc.core5.http.HttpException import org.apache.hc.core5.http.HttpHost import org.apache.hc.core5.http.protocol.HttpContext -import org.springframework.boot.web.client.RestTemplateCustomizer +import org.springframework.boot.restclient.RestTemplateCustomizer import org.springframework.http.client.HttpComponentsClientHttpRequestFactory import org.springframework.web.client.RestTemplate diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.kt index efc63f614bf..cbf24622815 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/resttemplate/ssl/MyService.kt @@ -17,7 +17,7 @@ package org.springframework.boot.docs.io.restclient.resttemplate.ssl import org.springframework.boot.docs.io.restclient.resttemplate.Details import org.springframework.boot.ssl.SslBundles -import org.springframework.boot.web.client.RestTemplateBuilder +import org.springframework.boot.restclient.RestTemplateBuilder import org.springframework.stereotype.Service import org.springframework.web.client.RestTemplate diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.kt index 0ca01e807b5..ecfb0fa3dca 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/io/restclient/webclient/ssl/MyService.kt @@ -16,7 +16,7 @@ package org.springframework.boot.docs.io.restclient.webclient.ssl -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientSsl +import org.springframework.boot.webclient.autoconfigure.WebClientSsl import org.springframework.stereotype.Service import org.springframework.web.reactive.function.client.WebClient import reactor.core.publisher.Mono diff --git a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.kt b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.kt index 7f16b344a89..e2635bdb2da 100644 --- a/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.kt +++ b/spring-boot-project/spring-boot-docs/src/main/kotlin/org/springframework/boot/docs/testing/utilities/testresttemplate/MySpringBootTests.kt @@ -23,7 +23,7 @@ import org.springframework.boot.test.context.SpringBootTest import org.springframework.boot.test.context.SpringBootTest.WebEnvironment import org.springframework.boot.test.context.TestConfiguration import org.springframework.boot.web.server.test.client.TestRestTemplate -import org.springframework.boot.web.client.RestTemplateBuilder +import org.springframework.boot.restclient.RestTemplateBuilder import org.springframework.context.annotation.Bean import java.time.Duration diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-http-client-reactive/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports deleted file mode 100644 index b0b3a71ba79..00000000000 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ /dev/null @@ -1,3 +0,0 @@ -org.springframework.boot.http.client.reactive.autoconfigure.ClientHttpConnectorAutoConfiguration -org.springframework.boot.http.client.reactive.service.autoconfigure.ReactiveHttpServiceClientAutoConfiguration -org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration diff --git a/spring-boot-project/spring-boot-http-client/build.gradle b/spring-boot-project/spring-boot-http-client/build.gradle index 45ea88a26c1..a6021bf1ae5 100644 --- a/spring-boot-project/spring-boot-http-client/build.gradle +++ b/spring-boot-project/spring-boot-http-client/build.gradle @@ -27,19 +27,21 @@ description = "Spring Boot HTTP Client" dependencies { api(project(":spring-boot-project:spring-boot")) + api("org.springframework:spring-web") implementation(project(":spring-boot-project:spring-boot-http-converter")) optional(project(":spring-boot-project:spring-boot-autoconfigure")) - optional("io.projectreactor.netty:reactor-netty-http") + optional(project(":spring-boot-project:spring-boot-reactor-netty")) optional("org.apache.httpcomponents.client5:httpclient5") + optional("org.apache.httpcomponents.core5:httpcore5-reactive") optional("org.eclipse.jetty:jetty-client") + optional("org.eclipse.jetty:jetty-reactive-httpclient") testImplementation(project(":spring-boot-project:spring-boot-test")) + testImplementation(project(":spring-boot-project:spring-boot-tomcat")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) - testImplementation("io.micrometer:micrometer-observation-test") + testImplementation("org.springframework:spring-webflux") testRuntimeOnly("ch.qos.logback:logback-classic") - testRuntimeOnly("jakarta.servlet:jakarta.servlet-api") - testRuntimeOnly("org.springframework:spring-webflux") } diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHints.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHints.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHints.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHints.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettings.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettings.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettings.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettings.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/Empty.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/Empty.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/Empty.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/Empty.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpClientSettings.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpClientSettings.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpClientSettings.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpClientSettings.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpAsyncClientBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpAsyncClientBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpAsyncClientBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpAsyncClientBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpClientBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpClientBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpClientBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsHttpClientBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsRedirectStrategy.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsRedirectStrategy.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsRedirectStrategy.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsRedirectStrategy.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsSslBundleTlsStrategy.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsSslBundleTlsStrategy.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpComponentsSslBundleTlsStrategy.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpComponentsSslBundleTlsStrategy.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpRedirects.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpRedirects.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/HttpRedirects.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/HttpRedirects.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JdkHttpClientBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JdkHttpClientBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JdkHttpClientBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JdkHttpClientBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JettyHttpClientBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JettyHttpClientBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/JettyHttpClientBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/JettyHttpClientBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReactorHttpClientBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReactorHttpClientBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReactorHttpClientBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReactorHttpClientBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilder.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilder.java diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/package-info.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/package-info.java similarity index 100% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/http/client/package-info.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/package-info.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorSettings.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorSettings.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorSettings.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ClientHttpConnectorSettings.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilder.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilder.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilder.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilder.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/AbstractClientHttpConnectorProperties.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/AbstractClientHttpConnectorProperties.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/AbstractClientHttpConnectorProperties.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/AbstractClientHttpConnectorProperties.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfiguration.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfiguration.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfiguration.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfiguration.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorBuilderCustomizer.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorBuilderCustomizer.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorBuilderCustomizer.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorBuilderCustomizer.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectors.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectors.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectors.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectors.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ConditionalOnClientHttpConnectorBuilderDetection.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ConditionalOnClientHttpConnectorBuilderDetection.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ConditionalOnClientHttpConnectorBuilderDetection.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/ConditionalOnClientHttpConnectorBuilderDetection.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientProperties.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientProperties.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientProperties.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientProperties.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/package-info.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/package-info.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/package-info.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/autoconfigure/package-info.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/package-info.java b/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/package-info.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/package-info.java rename to spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/reactive/package-info.java diff --git a/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/aot.factories b/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/aot.factories new file mode 100644 index 00000000000..980d82c8143 --- /dev/null +++ b/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/aot.factories @@ -0,0 +1,2 @@ +org.springframework.aot.hint.RuntimeHintsRegistrar=\ +org.springframework.boot.http.client.ClientHttpRequestFactoryRuntimeHints diff --git a/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports index beaa0a16da9..d62f740516a 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports +++ b/spring-boot-project/spring-boot-http-client/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -1,3 +1,2 @@ org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration -org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration -org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration +org.springframework.boot.http.client.reactive.autoconfigure.ClientHttpConnectorAutoConfiguration diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java similarity index 98% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java index acd34cf65d5..0312620c452 100644 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java +++ b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/AbstractClientHttpRequestFactoryBuilderTests.java @@ -40,7 +40,6 @@ import org.springframework.boot.ssl.SslOptions; import org.springframework.boot.ssl.jks.JksSslStoreBundle; import org.springframework.boot.ssl.jks.JksSslStoreDetails; import org.springframework.boot.testsupport.classpath.resources.WithPackageResources; -import org.springframework.boot.testsupport.web.servlet.DirtiesUrlFactories; import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory; import org.springframework.boot.web.server.Ssl; import org.springframework.boot.web.server.Ssl.ClientAuth; @@ -62,7 +61,6 @@ import static org.assertj.core.api.Assertions.assertThatExceptionOfType; * @author Phillip Webb * @author Andy Wilkinson */ -@DirtiesUrlFactories abstract class AbstractClientHttpRequestFactoryBuilderTests { private static final Function ALWAYS_FOUND = (method) -> HttpStatus.FOUND; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHintsTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHintsTests.java similarity index 100% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHintsTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactoryRuntimeHintsTests.java diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettingsTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettingsTests.java similarity index 100% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettingsTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ClientHttpRequestFactorySettingsTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/HttpComponentsClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/JdkClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/JettyClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ReactorClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/ReflectiveComponentsClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/SimpleClientHttpRequestFactoryBuilderTests.java diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/TestCustomizer.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/TestCustomizer.java similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/http/client/TestCustomizer.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/TestCustomizer.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/AbstractClientHttpConnectorBuilderTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/HttpComponentsClientHttpConnectorBuilderTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/JdkClientHttpConnectorBuilderTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/JettyClientHttpConnectorBuilderTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilderTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilderTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilderTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/ReactorClientHttpConnectorBuilderTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/TestCustomizer.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/TestCustomizer.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/TestCustomizer.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/TestCustomizer.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfigurationTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfigurationTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfigurationTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorAutoConfigurationTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorsTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorsTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorsTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/ClientHttpConnectorsTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientSettingsPropertiesTests.java b/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientSettingsPropertiesTests.java similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientSettingsPropertiesTests.java rename to spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/reactive/autoconfigure/HttpReactiveClientSettingsPropertiesTests.java diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/resources/org/springframework/boot/http/client/reactive/test.jks b/spring-boot-project/spring-boot-http-client/src/test/resources/org/springframework/boot/http/client/reactive/test.jks similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/resources/org/springframework/boot/http/client/reactive/test.jks rename to spring-boot-project/spring-boot-http-client/src/test/resources/org/springframework/boot/http/client/reactive/test.jks diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/resources/org/springframework/boot/http/client/test.jks b/spring-boot-project/spring-boot-http-client/src/test/resources/org/springframework/boot/http/client/test.jks similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/resources/org/springframework/boot/http/client/test.jks rename to spring-boot-project/spring-boot-http-client/src/test/resources/org/springframework/boot/http/client/test.jks diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/AbstractClientHttpRequestFactoriesTests.java b/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/AbstractClientHttpRequestFactoriesTests.java deleted file mode 100644 index ea9faf8166c..00000000000 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/AbstractClientHttpRequestFactoriesTests.java +++ /dev/null @@ -1,186 +0,0 @@ -/* - * Copyright 2012-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.client; - -import java.io.IOException; -import java.net.URI; -import java.nio.charset.StandardCharsets; -import java.time.Duration; - -import javax.net.ssl.SSLHandshakeException; - -import jakarta.servlet.ServletException; -import jakarta.servlet.http.HttpServlet; -import jakarta.servlet.http.HttpServletRequest; -import jakarta.servlet.http.HttpServletResponse; -import org.junit.jupiter.api.Assumptions; -import org.junit.jupiter.api.Test; -import org.junit.jupiter.params.ParameterizedTest; -import org.junit.jupiter.params.provider.ValueSource; - -import org.springframework.boot.ssl.SslBundle; -import org.springframework.boot.ssl.SslBundleKey; -import org.springframework.boot.ssl.jks.JksSslStoreBundle; -import org.springframework.boot.ssl.jks.JksSslStoreDetails; -import org.springframework.boot.testsupport.classpath.resources.WithPackageResources; -import org.springframework.boot.testsupport.web.servlet.DirtiesUrlFactories; -import org.springframework.boot.tomcat.servlet.TomcatServletWebServerFactory; -import org.springframework.boot.web.server.Ssl; -import org.springframework.boot.web.server.Ssl.ClientAuth; -import org.springframework.boot.web.server.WebServer; -import org.springframework.http.HttpMethod; -import org.springframework.http.client.ClientHttpRequest; -import org.springframework.http.client.ClientHttpRequestFactory; -import org.springframework.util.StreamUtils; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatExceptionOfType; - -/** - * Base classes for testing of {@link ClientHttpRequestFactories} with different HTTP - * clients on the classpath. - * - * @param the {@link ClientHttpRequestFactory} to be produced - * @author Andy Wilkinson - */ -@DirtiesUrlFactories -@SuppressWarnings("removal") -abstract class AbstractClientHttpRequestFactoriesTests { - - private final Class requestFactoryType; - - protected AbstractClientHttpRequestFactoriesTests(Class requestFactoryType) { - this.requestFactoryType = requestFactoryType; - } - - @Test - @SuppressWarnings("deprecation") - void getReturnsRequestFactoryOfExpectedType() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(this.requestFactoryType); - } - - @Test - @SuppressWarnings("deprecation") - void getOfGeneralTypeReturnsRequestFactoryOfExpectedType() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(ClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(this.requestFactoryType); - } - - @Test - @SuppressWarnings("deprecation") - void getOfSpecificTypeReturnsRequestFactoryOfExpectedType() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(this.requestFactoryType, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(this.requestFactoryType); - } - - @Test - @SuppressWarnings({ "deprecation", "unchecked" }) - void getReturnsRequestFactoryWithConfiguredConnectTimeout() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofSeconds(60))); - assertThat(connectTimeout((T) requestFactory)).isEqualTo(Duration.ofSeconds(60).toMillis()); - } - - @Test - @SuppressWarnings({ "deprecation", "unchecked" }) - void getReturnsRequestFactoryWithConfiguredReadTimeout() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS.withReadTimeout(Duration.ofSeconds(120))); - assertThat(readTimeout((T) requestFactory)).isEqualTo(Duration.ofSeconds(120).toMillis()); - } - - @Test - @SuppressWarnings("deprecation") - void shouldSetConnectTimeoutsWhenUsingReflective() { - Assumptions.assumeTrue(supportsSettingConnectTimeout()); - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS - .withConnectTimeout(Duration.ofSeconds(1)); - T requestFactory = ClientHttpRequestFactories - .get(() -> ClientHttpRequestFactories.get(this.requestFactoryType, settings), settings); - assertThat(connectTimeout(requestFactory)).isEqualTo(1000); - } - - @Test - @SuppressWarnings("deprecation") - void shouldSetReadTimeoutsWhenUsingReflective() { - Assumptions.assumeTrue(supportsSettingReadTimeout()); - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS - .withReadTimeout(Duration.ofSeconds(2)); - T requestFactory = ClientHttpRequestFactories - .get(() -> ClientHttpRequestFactories.get(this.requestFactoryType, settings), settings); - assertThat(readTimeout(requestFactory)).isEqualTo(2000); - } - - @ParameterizedTest - @SuppressWarnings("deprecation") - @ValueSource(strings = { "GET", "POST" }) - @WithPackageResources("test.jks") - void connectWithSslBundle(String httpMethod) throws Exception { - TomcatServletWebServerFactory webServerFactory = new TomcatServletWebServerFactory(0); - Ssl ssl = new Ssl(); - ssl.setClientAuth(ClientAuth.NEED); - ssl.setKeyPassword("password"); - ssl.setKeyStore("classpath:test.jks"); - ssl.setTrustStore("classpath:test.jks"); - webServerFactory.setSsl(ssl); - WebServer webServer = webServerFactory - .getWebServer((context) -> context.addServlet("test", TestServlet.class).addMapping("/")); - try { - webServer.start(); - int port = webServer.getPort(); - URI uri = new URI("https://localhost:%s".formatted(port)); - ClientHttpRequestFactory insecureRequestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS); - ClientHttpRequest insecureRequest = insecureRequestFactory.createRequest(uri, HttpMethod.GET); - assertThatExceptionOfType(SSLHandshakeException.class) - .isThrownBy(() -> insecureRequest.execute().getBody()); - JksSslStoreDetails storeDetails = JksSslStoreDetails.forLocation("classpath:test.jks"); - JksSslStoreBundle stores = new JksSslStoreBundle(storeDetails, storeDetails); - SslBundle sslBundle = SslBundle.of(stores, SslBundleKey.of("password")); - ClientHttpRequestFactory secureRequestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS.withSslBundle(sslBundle)); - ClientHttpRequest secureRequest = secureRequestFactory.createRequest(uri, HttpMethod.valueOf(httpMethod)); - String secureResponse = StreamUtils.copyToString(secureRequest.execute().getBody(), StandardCharsets.UTF_8); - assertThat(secureResponse).contains("Received " + httpMethod + " request to /"); - } - finally { - webServer.stop(); - } - } - - protected abstract boolean supportsSettingConnectTimeout(); - - protected abstract long connectTimeout(T requestFactory); - - protected abstract boolean supportsSettingReadTimeout(); - - protected abstract long readTimeout(T requestFactory); - - public static class TestServlet extends HttpServlet { - - @Override - public void service(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException { - res.getWriter().println("Received " + req.getMethod() + " request to " + req.getRequestURI()); - } - - } - -} diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesHttpComponentsTests.java b/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesHttpComponentsTests.java deleted file mode 100644 index 336e1286b7b..00000000000 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesHttpComponentsTests.java +++ /dev/null @@ -1,67 +0,0 @@ -/* - * Copyright 2012-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.client; - -import org.apache.hc.client5.http.HttpRoute; -import org.apache.hc.client5.http.classic.HttpClient; -import org.apache.hc.core5.function.Resolver; -import org.apache.hc.core5.http.io.SocketConfig; - -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.test.util.ReflectionTestUtils; - -/** - * Tests for {@link ClientHttpRequestFactories} when Apache Http Components is the - * predominant HTTP client. - * - * @author Andy Wilkinson - */ -@SuppressWarnings("removal") -class ClientHttpRequestFactoriesHttpComponentsTests - extends AbstractClientHttpRequestFactoriesTests { - - ClientHttpRequestFactoriesHttpComponentsTests() { - super(HttpComponentsClientHttpRequestFactory.class); - } - - @Override - protected long connectTimeout(HttpComponentsClientHttpRequestFactory requestFactory) { - return (long) ReflectionTestUtils.getField(requestFactory, "connectTimeout"); - } - - @Override - @SuppressWarnings("unchecked") - protected long readTimeout(HttpComponentsClientHttpRequestFactory requestFactory) { - HttpClient httpClient = requestFactory.getHttpClient(); - Object connectionManager = ReflectionTestUtils.getField(httpClient, "connManager"); - SocketConfig socketConfig = ((Resolver) ReflectionTestUtils.getField(connectionManager, - "socketConfigResolver")) - .resolve(null); - return socketConfig.getSoTimeout().toMilliseconds(); - } - - @Override - protected boolean supportsSettingConnectTimeout() { - return true; - } - - @Override - protected boolean supportsSettingReadTimeout() { - return false; - } - -} diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesJettyTests.java b/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesJettyTests.java deleted file mode 100644 index 1bebc6a8f2f..00000000000 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesJettyTests.java +++ /dev/null @@ -1,59 +0,0 @@ -/* - * Copyright 2012-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.client; - -import org.eclipse.jetty.client.HttpClient; - -import org.springframework.boot.testsupport.classpath.ClassPathExclusions; -import org.springframework.http.client.JettyClientHttpRequestFactory; -import org.springframework.test.util.ReflectionTestUtils; - -/** - * Tests for {@link ClientHttpRequestFactories} when Jetty is the predominant HTTP client. - * - * @author Arjen Poutsma - */ -@ClassPathExclusions("httpclient5-*.jar") -@SuppressWarnings("removal") -class ClientHttpRequestFactoriesJettyTests - extends AbstractClientHttpRequestFactoriesTests { - - ClientHttpRequestFactoriesJettyTests() { - super(JettyClientHttpRequestFactory.class); - } - - @Override - protected long connectTimeout(JettyClientHttpRequestFactory requestFactory) { - return ((HttpClient) ReflectionTestUtils.getField(requestFactory, "httpClient")).getConnectTimeout(); - } - - @Override - protected long readTimeout(JettyClientHttpRequestFactory requestFactory) { - return (long) ReflectionTestUtils.getField(requestFactory, "readTimeout"); - } - - @Override - protected boolean supportsSettingConnectTimeout() { - return true; - } - - @Override - protected boolean supportsSettingReadTimeout() { - return true; - } - -} diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesReactorTests.java b/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesReactorTests.java deleted file mode 100644 index 79063d4a46a..00000000000 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesReactorTests.java +++ /dev/null @@ -1,65 +0,0 @@ -/* - * Copyright 2012-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.client; - -import java.time.Duration; - -import io.netty.channel.ChannelOption; -import reactor.netty.http.client.HttpClient; - -import org.springframework.boot.testsupport.classpath.ClassPathExclusions; -import org.springframework.http.client.ReactorClientHttpRequestFactory; -import org.springframework.test.util.ReflectionTestUtils; - -/** - * Tests for {@link ClientHttpRequestFactories} when Reactor Netty is the predominant HTTP - * client. - * - * @author Andy Wilkinson - */ -@ClassPathExclusions({ "httpclient5-*.jar", "jetty-client-*.jar" }) -@SuppressWarnings("removal") -class ClientHttpRequestFactoriesReactorTests - extends AbstractClientHttpRequestFactoriesTests { - - ClientHttpRequestFactoriesReactorTests() { - super(ReactorClientHttpRequestFactory.class); - } - - @Override - protected long connectTimeout(ReactorClientHttpRequestFactory requestFactory) { - return (int) ((HttpClient) ReflectionTestUtils.getField(requestFactory, "httpClient")).configuration() - .options() - .get(ChannelOption.CONNECT_TIMEOUT_MILLIS); - } - - @Override - protected long readTimeout(ReactorClientHttpRequestFactory requestFactory) { - return ((Duration) ReflectionTestUtils.getField(requestFactory, "readTimeout")).toMillis(); - } - - @Override - protected boolean supportsSettingConnectTimeout() { - return true; - } - - @Override - protected boolean supportsSettingReadTimeout() { - return true; - } - -} diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesSimpleTests.java b/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesSimpleTests.java deleted file mode 100644 index b697d702900..00000000000 --- a/spring-boot-project/spring-boot-integration-tests/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesSimpleTests.java +++ /dev/null @@ -1,58 +0,0 @@ -/* - * Copyright 2012-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.client; - -import org.springframework.boot.testsupport.classpath.ClassPathExclusions; -import org.springframework.http.client.SimpleClientHttpRequestFactory; -import org.springframework.test.util.ReflectionTestUtils; - -/** - * Tests for {@link ClientHttpRequestFactories} when the simple JDK-based client is the - * predominant HTTP client. - * - * @author Andy Wilkinson - */ -@ClassPathExclusions({ "httpclient5-*.jar", "jetty-client-*.jar", "reactor-netty-http-*.jar" }) -@SuppressWarnings("removal") -class ClientHttpRequestFactoriesSimpleTests - extends AbstractClientHttpRequestFactoriesTests { - - ClientHttpRequestFactoriesSimpleTests() { - super(SimpleClientHttpRequestFactory.class); - } - - @Override - protected long connectTimeout(SimpleClientHttpRequestFactory requestFactory) { - return (int) ReflectionTestUtils.getField(requestFactory, "connectTimeout"); - } - - @Override - protected long readTimeout(SimpleClientHttpRequestFactory requestFactory) { - return (int) ReflectionTestUtils.getField(requestFactory, "readTimeout"); - } - - @Override - protected boolean supportsSettingConnectTimeout() { - return true; - } - - @Override - protected boolean supportsSettingReadTimeout() { - return true; - } - -} diff --git a/spring-boot-project/spring-boot-jersey/build.gradle b/spring-boot-project/spring-boot-jersey/build.gradle index 65b0c7d98a7..eb1d2678fd5 100644 --- a/spring-boot-project/spring-boot-jersey/build.gradle +++ b/spring-boot-project/spring-boot-jersey/build.gradle @@ -32,7 +32,6 @@ dependencies { api("org.glassfish.jersey.core:jersey-server") api("org.glassfish.jersey.ext:jersey-spring6") api("org.glassfish.jersey.media:jersey-media-json-jackson") - compileOnly("jakarta.servlet:jakarta.servlet-api") implementation("org.springframework:spring-web") @@ -40,6 +39,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-autoconfigure")) optional(project(":spring-boot-project:spring-boot-jackson")) + testImplementation(project(":spring-boot-project:spring-boot-restclient")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tomcat")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot-mustache/build.gradle b/spring-boot-project/spring-boot-mustache/build.gradle index 3c626645376..b0db99cf381 100644 --- a/spring-boot-project/spring-boot-mustache/build.gradle +++ b/spring-boot-project/spring-boot-mustache/build.gradle @@ -35,6 +35,8 @@ dependencies { optional("org.springframework:spring-webflux") optional(project(":spring-boot-project:spring-boot-autoconfigure")) + testImplementation(project(":spring-boot-project:spring-boot-reactor-netty")) + testImplementation(project(":spring-boot-project:spring-boot-restclient")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tomcat")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot-restclient-test/build.gradle b/spring-boot-project/spring-boot-restclient-test/build.gradle new file mode 100644 index 00000000000..67cee57baf8 --- /dev/null +++ b/spring-boot-project/spring-boot-restclient-test/build.gradle @@ -0,0 +1,37 @@ +/* + * Copyright 2012-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +plugins { + id "java-library" + id "org.springframework.boot.deployed" + id "org.springframework.boot.optional-dependencies" +} + +description = "Spring Boot RestClient Test" + +dependencies { + api(project(":spring-boot-project:spring-boot")) + + optional(project(":spring-boot-project:spring-boot-autoconfigure")) + optional(project(":spring-boot-project:spring-boot-restclient")) + optional("org.springframework:spring-test") + + testImplementation(project(":spring-boot-project:spring-boot-test")) + testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) + + testRuntimeOnly("ch.qos.logback:logback-classic") +} diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizer.java b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizer.java similarity index 98% rename from spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizer.java rename to spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizer.java index 3fda280c447..74956567a7a 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizer.java +++ b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.util.Collections; import java.util.Map; @@ -22,7 +22,7 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; import org.springframework.beans.BeanUtils; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.http.client.BufferingClientHttpRequestFactory; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.test.web.client.MockRestServiceServer.MockRestServiceServerBuilder; diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizer.java b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizer.java similarity index 97% rename from spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizer.java rename to spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizer.java index 402906c1d37..449a7b6a585 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizer.java +++ b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.util.Collections; import java.util.Map; @@ -22,8 +22,8 @@ import java.util.concurrent.ConcurrentHashMap; import java.util.function.Supplier; import org.springframework.beans.BeanUtils; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.client.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateCustomizer; import org.springframework.http.client.BufferingClientHttpRequestFactory; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.test.web.client.MockRestServiceServer.MockRestServiceServerBuilder; diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManager.java b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManager.java similarity index 98% rename from spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManager.java rename to spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManager.java index 7272262daf8..bc11307b388 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManager.java +++ b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManager.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.io.IOException; import java.io.OutputStream; @@ -22,7 +22,7 @@ import java.net.URI; import java.net.URISyntaxException; import java.time.Duration; -import org.springframework.boot.web.client.RootUriTemplateHandler; +import org.springframework.boot.restclient.RootUriTemplateHandler; import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.ClientHttpResponse; import org.springframework.http.client.support.HttpRequestWrapper; diff --git a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/package-info.java b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/package-info.java similarity index 86% rename from spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/package-info.java rename to spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/package-info.java index 2a4f9c35cca..517a2c65020 100644 --- a/spring-boot-project/spring-boot-test/src/main/java/org/springframework/boot/test/web/client/package-info.java +++ b/spring-boot-project/spring-boot-restclient-test/src/main/java/org/springframework/boot/restclient/test/package-info.java @@ -15,6 +15,6 @@ */ /** - * Web client test utilities. + * RestClient and RestTemplate test utilities. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizerTests.java b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizerTests.java similarity index 99% rename from spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizerTests.java rename to spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizerTests.java index 14a4dab60c6..61c8db091fe 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestClientCustomizerTests.java +++ b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestClientCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.util.function.Supplier; diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizerTests.java b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizerTests.java similarity index 98% rename from spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizerTests.java rename to spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizerTests.java index 4fa0dbda5ea..523fe81a4c7 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/MockServerRestTemplateCustomizerTests.java +++ b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/MockServerRestTemplateCustomizerTests.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.util.function.Supplier; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.http.client.BufferingClientHttpRequestFactory; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.test.web.client.RequestExpectationManager; diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManagerTests.java b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManagerTests.java similarity index 98% rename from spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManagerTests.java rename to spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManagerTests.java index 7e5d9eb3aa4..5539e6ee974 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/RootUriRequestExpectationManagerTests.java +++ b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/RootUriRequestExpectationManagerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client; +package org.springframework.boot.restclient.test; import java.net.URI; @@ -24,7 +24,7 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.support.HttpRequestWrapper; import org.springframework.test.web.client.ExpectedCount; diff --git a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/scan/SimpleFactoryBean.java b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/scan/SimpleFactoryBean.java similarity index 96% rename from spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/scan/SimpleFactoryBean.java rename to spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/scan/SimpleFactoryBean.java index b7ddaf8360f..7ec174fa154 100644 --- a/spring-boot-project/spring-boot-test/src/test/java/org/springframework/boot/test/web/client/scan/SimpleFactoryBean.java +++ b/spring-boot-project/spring-boot-restclient-test/src/test/java/org/springframework/boot/restclient/test/scan/SimpleFactoryBean.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.test.web.client.scan; +package org.springframework.boot.restclient.test.scan; import org.springframework.beans.factory.FactoryBean; import org.springframework.beans.factory.annotation.Autowired; diff --git a/spring-boot-project/spring-boot-restclient/build.gradle b/spring-boot-project/spring-boot-restclient/build.gradle new file mode 100644 index 00000000000..0ecd46745b9 --- /dev/null +++ b/spring-boot-project/spring-boot-restclient/build.gradle @@ -0,0 +1,46 @@ +/* + * Copyright 2012-present the original author or authors. + * + * Licensed under the Apache License, Version 2.0 (the License); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * https://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + + +plugins { + id "java-library" + id "org.springframework.boot.auto-configuration" + id "org.springframework.boot.deployed" + id "org.springframework.boot.optional-dependencies" +} + +description = "Spring Boot RestClient and RestTemplate" + +dependencies { + api(project(":spring-boot-project:spring-boot")) + api(project(":spring-boot-project:spring-boot-http-client")) + + implementation(project(":spring-boot-project:spring-boot-http-converter")) + + optional(project(":spring-boot-project:spring-boot-autoconfigure")) + optional("io.projectreactor.netty:reactor-netty-http") + optional("org.apache.httpcomponents.client5:httpclient5") + optional("org.eclipse.jetty:jetty-client") + + testImplementation(project(":spring-boot-project:spring-boot-test")) + testImplementation(project(":spring-boot-project:spring-boot-tomcat")) + testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) + testImplementation("io.micrometer:micrometer-observation-test") + + testRuntimeOnly("ch.qos.logback:logback-classic") + testRuntimeOnly("jakarta.servlet:jakarta.servlet-api") + testRuntimeOnly("org.springframework:spring-webflux") +} diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/BasicAuthentication.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/BasicAuthentication.java similarity index 97% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/BasicAuthentication.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/BasicAuthentication.java index ca445eaf230..0c5eebeeb54 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/BasicAuthentication.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/BasicAuthentication.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.nio.charset.Charset; diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestClientCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestClientCustomizer.java similarity index 95% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestClientCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestClientCustomizer.java index 6dae4ba0900..e87b34485bb 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestClientCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestClientCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import org.springframework.web.client.RestClient; @@ -23,7 +23,7 @@ import org.springframework.web.client.RestClient; * {@link org.springframework.web.client.RestClient.Builder RestClient.Builder}. * * @author Arjen Poutsma - * @since 3.2.0 + * @since 4.0.0 */ @FunctionalInterface public interface RestClientCustomizer { diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilder.java similarity index 96% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilder.java index f975f58cd1f..9bb3a525175 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilder.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilder.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.nio.charset.Charset; import java.time.Duration; @@ -27,7 +27,6 @@ import java.util.LinkedHashSet; import java.util.List; import java.util.Map; import java.util.Set; -import java.util.function.Function; import java.util.function.Supplier; import java.util.function.UnaryOperator; @@ -67,7 +66,7 @@ import org.springframework.web.util.UriTemplateHandler; * @author Ilya Lukyanovich * @author Scott Frederick * @author Yanming Zhou - * @since 1.4.0 + * @since 4.0.0 */ public class RestTemplateBuilder { @@ -326,27 +325,6 @@ public class RestTemplateBuilder { return requestFactoryBuilder(ClientHttpRequestFactoryBuilder.of(requestFactorySupplier)); } - /** - * Set the request factory function that should be called to provide a - * {@link ClientHttpRequestFactory} each time we {@link #build()} a new - * {@link RestTemplate} instance. - * @param requestFactoryFunction the settings to request factory function - * @return a new builder instance - * @since 3.0.0 - * @deprecated since 3.4.0 for removal in 4.0.0 in favor of - * {@link #requestFactoryBuilder(ClientHttpRequestFactoryBuilder)} - * @see ClientHttpRequestFactoryBuilder - * @see #requestFactoryBuilder(ClientHttpRequestFactoryBuilder) - */ - @Deprecated(since = "3.4.0", forRemoval = true) - @SuppressWarnings("removal") - public RestTemplateBuilder requestFactory( - Function requestFactoryFunction) { - Assert.notNull(requestFactoryFunction, "'requestFactoryFunction' must not be null"); - return requestFactoryBuilder((settings) -> requestFactoryFunction - .apply(org.springframework.boot.web.client.ClientHttpRequestFactorySettings.of(settings))); - } - /** * Set the {@link ClientHttpRequestFactoryBuilder} that should be used each time we * {@link #build()} a new {@link RestTemplate} instance. diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializer.java similarity index 97% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializer.java index 149326bb4c9..5803238fcb8 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.util.List; import java.util.Map; diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateCustomizer.java similarity index 94% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateCustomizer.java index 76c48f00839..e0d0c81f056 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import org.springframework.web.client.RestTemplate; @@ -22,7 +22,7 @@ import org.springframework.web.client.RestTemplate; * Callback interface that can be used to customize a {@link RestTemplate}. * * @author Phillip Webb - * @since 1.4.0 + * @since 4.0.0 * @see RestTemplateBuilder */ @FunctionalInterface diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateRequestCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateRequestCustomizer.java similarity index 95% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateRequestCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateRequestCustomizer.java index dba37fcd028..03ecdf68438 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RestTemplateRequestCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RestTemplateRequestCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.ClientHttpRequestInitializer; @@ -27,7 +27,7 @@ import org.springframework.web.client.RestTemplate; * @param the {@link ClientHttpRequest} type * @author Ilya Lukyanovich * @author Phillip Webb - * @since 2.2.0 + * @since 4.0.0 * @see RestTemplateBuilder * @see ClientHttpRequestInitializer */ diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriBuilderFactory.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriBuilderFactory.java similarity index 97% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriBuilderFactory.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriBuilderFactory.java index 67df7fa40ed..57611cde279 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriBuilderFactory.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriBuilderFactory.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import org.springframework.util.Assert; import org.springframework.web.client.RestTemplate; @@ -27,7 +27,7 @@ import org.springframework.web.util.UriTemplateHandler; * {@link UriBuilderFactory} to set the root for URI that starts with {@code '/'}. * * @author Scott Frederick - * @since 3.2.3 + * @since 4.0.0 */ public class RootUriBuilderFactory extends RootUriTemplateHandler implements UriBuilderFactory { diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriTemplateHandler.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriTemplateHandler.java similarity index 97% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriTemplateHandler.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriTemplateHandler.java index eda6a4e7bda..4a7d9d958d2 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/RootUriTemplateHandler.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/RootUriTemplateHandler.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.net.URI; import java.util.Map; @@ -28,7 +28,7 @@ import org.springframework.web.util.UriTemplateHandler; * * @author Phillip Webb * @author Scott Frederick - * @since 1.4.0 + * @since 4.0.0 */ public class RootUriTemplateHandler implements UriTemplateHandler { diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizer.java similarity index 93% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizer.java index 96990d5677a..8bb40fa13a1 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizer.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.actuate.observation; +package org.springframework.boot.restclient.actuate.observation; import io.micrometer.observation.ObservationRegistry; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.http.client.observation.ClientRequestObservationConvention; import org.springframework.util.Assert; import org.springframework.web.client.RestClient.Builder; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizer.java similarity index 93% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizer.java index cca2d32e0f9..c05936c0cfc 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizer.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.actuate.observation; +package org.springframework.boot.restclient.actuate.observation; import io.micrometer.observation.ObservationRegistry; -import org.springframework.boot.web.client.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateCustomizer; import org.springframework.http.client.observation.ClientRequestObservationConvention; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/package-info.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/package-info.java similarity index 90% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/package-info.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/package-info.java index 94c76b7caa6..6d84bcedc25 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/actuate/observation/package-info.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/actuate/observation/package-info.java @@ -17,4 +17,4 @@ /** * Observation integration for RestClient and RestTemplate. */ -package org.springframework.boot.http.client.rest.actuate.observation; +package org.springframework.boot.restclient.actuate.observation; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSsl.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSsl.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSsl.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSsl.java index 4db95546c7e..cba2ec09fa6 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSsl.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSsl.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.function.Consumer; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizer.java similarity index 93% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizer.java index bb48262425c..4fd8ed6dc88 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizer.java @@ -14,13 +14,13 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.Arrays; import java.util.List; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.http.converter.HttpMessageConverter; import org.springframework.util.Assert; import org.springframework.web.client.RestClient; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationCondition.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationCondition.java similarity index 95% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationCondition.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationCondition.java index 2067c32008f..4de24c51b6e 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationCondition.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationCondition.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.NoneNestedConditions; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java similarity index 96% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java index 90ad6b79d0e..e4894a4d10c 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/NotReactiveWebApplicationOrVirtualThreadsExecutorEnabledCondition.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import org.springframework.boot.autoconfigure.condition.AnyNestedCondition; import org.springframework.boot.autoconfigure.condition.ConditionalOnBean; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfiguration.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfiguration.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfiguration.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfiguration.java index c071a138395..8e8f502e096 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfiguration.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.config.ConfigurableBeanFactory; @@ -29,8 +29,8 @@ import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.boot.ssl.SslBundles; -import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Scope; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurer.java similarity index 95% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurer.java index ebf18cc4159..231abe2cfde 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurer.java @@ -14,14 +14,14 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.Collections; import java.util.List; import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.web.client.RestClient; import org.springframework.web.client.RestClient.Builder; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientSsl.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientSsl.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientSsl.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientSsl.java index 6e0d06254c4..54a4e9f33bb 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientSsl.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestClientSsl.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.function.Consumer; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfiguration.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfiguration.java similarity index 92% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfiguration.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfiguration.java index 4a39d309457..2dcf0397e42 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfiguration.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import org.springframework.beans.factory.ObjectProvider; import org.springframework.boot.autoconfigure.AutoConfiguration; @@ -25,9 +25,9 @@ import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.client.RestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateRequestCustomizer; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateRequestCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.context.annotation.Lazy; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateBuilderConfigurer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateBuilderConfigurer.java similarity index 93% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateBuilderConfigurer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateBuilderConfigurer.java index e9d4dabcfa1..70b1126f0aa 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateBuilderConfigurer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/RestTemplateBuilderConfigurer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.Collection; import java.util.List; @@ -23,9 +23,9 @@ import java.util.function.BiFunction; import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.client.RestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateRequestCustomizer; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateRequestCustomizer; import org.springframework.util.ObjectUtils; /** diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/package-info.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/package-info.java similarity index 84% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/package-info.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/package-info.java index 86bf26a2833..0a7984ff8c1 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/rest/autoconfigure/package-info.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/autoconfigure/package-info.java @@ -15,6 +15,6 @@ */ /** - * Auto-configuration for web clients. + * Auto-configuration for RestClient and RestTemplate. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/package-info.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/package-info.java similarity index 93% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/package-info.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/package-info.java index 211d76a3756..feecadcbc27 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/package-info.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/package-info.java @@ -17,4 +17,4 @@ /** * Web client utilities. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/AbstractHttpClientServiceProperties.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/AbstractHttpClientServiceProperties.java similarity index 96% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/AbstractHttpClientServiceProperties.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/AbstractHttpClientServiceProperties.java index 6953c7f2bdb..43620a18df4 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/AbstractHttpClientServiceProperties.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/AbstractHttpClientServiceProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import java.util.LinkedHashMap; import java.util.List; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServiceProperties.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServiceProperties.java similarity index 95% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServiceProperties.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServiceProperties.java index 6cf0d4a13d9..9180e800539 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServiceProperties.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServiceProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import java.util.LinkedHashMap; import java.util.Map; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfiguration.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfiguration.java similarity index 94% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfiguration.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfiguration.java index 0ff2976462f..69ac712caf0 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfiguration.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.ObjectProvider; @@ -26,9 +26,9 @@ import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; import org.springframework.boot.http.client.autoconfigure.HttpClientProperties; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.RestClientCustomizer; +import org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration; import org.springframework.boot.ssl.SslBundles; -import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Conditional; import org.springframework.web.client.support.RestClientAdapter; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/NotReactiveWebApplicationCondition.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/NotReactiveWebApplicationCondition.java similarity index 95% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/NotReactiveWebApplicationCondition.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/NotReactiveWebApplicationCondition.java index 4f686f38c38..fb3919c8ea6 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/NotReactiveWebApplicationCondition.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/NotReactiveWebApplicationCondition.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import org.springframework.boot.autoconfigure.condition.ConditionalOnWebApplication; import org.springframework.boot.autoconfigure.condition.NoneNestedConditions; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java similarity index 93% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java index ce55413b940..61133eaea71 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientCustomizerHttpServiceGroupConfigurer.java @@ -14,10 +14,10 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.web.client.RestClientCustomizer; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.web.client.RestClient; import org.springframework.web.client.support.RestClientHttpServiceGroupConfigurer; import org.springframework.web.service.registry.HttpServiceGroup; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java similarity index 98% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java index dc5fd10b6e3..29a746fde16 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/RestClientPropertiesHttpServiceGroupConfigurer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import java.util.List; import java.util.Map; diff --git a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/package-info.java b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/package-info.java similarity index 91% rename from spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/package-info.java rename to spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/package-info.java index 0ec978ab79b..73fb1bb1d2d 100644 --- a/spring-boot-project/spring-boot-http-client/src/main/java/org/springframework/boot/http/client/service/autoconfigure/package-info.java +++ b/spring-boot-project/spring-boot-restclient/src/main/java/org/springframework/boot/restclient/service/autoconfigure/package-info.java @@ -17,4 +17,4 @@ /** * Auto-Configuration for Spring's Blocking HTTP Service Interface Clients. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; diff --git a/spring-boot-project/spring-boot-restclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-restclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000000..be5538d040b --- /dev/null +++ b/spring-boot-project/spring-boot-restclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,3 @@ +org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration +org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration +org.springframework.boot.restclient.service.autoconfigure.HttpServiceClientAutoConfiguration diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializerTests.java similarity index 98% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializerTests.java index 8038a2c20f7..8a829be0f2a 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderClientHttpRequestInitializerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderClientHttpRequestInitializerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.util.Arrays; import java.util.Collections; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderTests.java similarity index 97% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderTests.java index 135897077c6..a014b35ca65 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RestTemplateBuilderTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RestTemplateBuilderTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.net.URI; import java.nio.charset.StandardCharsets; @@ -22,7 +22,6 @@ import java.time.Duration; import java.util.Arrays; import java.util.Collections; import java.util.Set; -import java.util.function.Function; import java.util.function.Supplier; import org.junit.jupiter.api.Test; @@ -274,14 +273,6 @@ class RestTemplateBuilderTests { .withMessageContaining("requestFactorySupplier' must not be null"); } - @Test - @SuppressWarnings("removal") - void requestFactoryWhenFunctionIsNullShouldThrowException() { - assertThatIllegalArgumentException().isThrownBy(() -> this.builder.requestFactory( - (Function) null)) - .withMessageContaining("'requestFactoryFunction' must not be null"); - } - @Test void requestFactoryShouldApply() { ClientHttpRequestFactory requestFactory = mock(ClientHttpRequestFactory.class); diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriBuilderFactoryTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriBuilderFactoryTests.java similarity index 96% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriBuilderFactoryTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriBuilderFactoryTests.java index 79dd317b1bd..7251decdd0b 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriBuilderFactoryTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriBuilderFactoryTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.net.URI; import java.net.URISyntaxException; diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriTemplateHandlerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriTemplateHandlerTests.java similarity index 98% rename from spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriTemplateHandlerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriTemplateHandlerTests.java index 4f2c20d3f4a..ffc7b99c80d 100644 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/RootUriTemplateHandlerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/RootUriTemplateHandlerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.client; +package org.springframework.boot.restclient; import java.net.URI; import java.net.URISyntaxException; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizerTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizerTests.java index f50024a2ef1..47e1176b3ab 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestClientCustomizerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestClientCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.actuate.observation; +package org.springframework.boot.restclient.actuate.observation; import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.tck.TestObservationRegistry; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizerTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizerTests.java index 84f0b99e64b..8772db9ca44 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/actuate/observation/ObservationRestTemplateCustomizerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/actuate/observation/ObservationRestTemplateCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.actuate.observation; +package org.springframework.boot.restclient.actuate.observation; import io.micrometer.observation.ObservationRegistry; import io.micrometer.observation.tck.TestObservationRegistry; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSslTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSslTests.java similarity index 98% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSslTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSslTests.java index 8254b0035cd..207051e4ce8 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/AutoConfiguredRestClientSslTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/AutoConfiguredRestClientSslTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.time.Duration; import java.util.function.Consumer; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java index ae5a1d9d826..33daa4b69e0 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/HttpMessageConvertersRestClientCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.ArrayList; import java.util.Arrays; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfigurationTests.java similarity index 99% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfigurationTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfigurationTests.java index 0b2cd5d2dc6..e72064cce44 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.time.Duration; import java.util.List; @@ -31,12 +31,12 @@ import org.springframework.boot.http.client.HttpRedirects; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.boot.ssl.SslBundle; import org.springframework.boot.ssl.SslBundles; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.client.SimpleClientHttpRequestFactory; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurerTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurerTests.java similarity index 95% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurerTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurerTests.java index 7c17ca5bf5c..e76ae038510 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestClientBuilderConfigurerTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestClientBuilderConfigurerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.List; @@ -25,8 +25,8 @@ import org.mockito.junit.jupiter.MockitoExtension; import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; +import org.springframework.boot.restclient.RestClientCustomizer; import org.springframework.boot.ssl.SslBundle; -import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.http.client.ClientHttpRequestFactory; import org.springframework.web.client.RestClient; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfigurationTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfigurationTests.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfigurationTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfigurationTests.java index ec338150905..78b229d9a8e 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/rest/autoconfigure/RestTemplateAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/autoconfigure/RestTemplateAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.rest.autoconfigure; +package org.springframework.boot.restclient.autoconfigure; import java.util.Collections; import java.util.List; @@ -26,12 +26,12 @@ import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConverters; import org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateCustomizer; +import org.springframework.boot.restclient.RestTemplateRequestCustomizer; import org.springframework.boot.test.context.runner.ApplicationContextRunner; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; import org.springframework.boot.test.context.runner.WebApplicationContextRunner; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.client.RestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateRequestCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpStatus; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServicePropertiesTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServicePropertiesTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServicePropertiesTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServicePropertiesTests.java index 12368481328..c10ec5d9843 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpClientServicePropertiesTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpClientServicePropertiesTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import java.time.Duration; import java.util.List; @@ -25,7 +25,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.http.client.HttpRedirects; import org.springframework.boot.http.client.autoconfigure.AbstractHttpRequestFactoryProperties.Factory; -import org.springframework.boot.http.client.service.autoconfigure.HttpClientServiceProperties.Group; +import org.springframework.boot.restclient.service.autoconfigure.HttpClientServiceProperties.Group; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.mock.env.MockEnvironment; diff --git a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java similarity index 97% rename from spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java rename to spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java index 8e27976b713..7f5f624924b 100644 --- a/spring-boot-project/spring-boot-http-client/src/test/java/org/springframework/boot/http/client/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-restclient/src/test/java/org/springframework/boot/restclient/service/autoconfigure/HttpServiceClientAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.service.autoconfigure; +package org.springframework.boot.restclient.service.autoconfigure; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; @@ -32,9 +32,9 @@ import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.HttpRedirects; import org.springframework.boot.http.client.autoconfigure.HttpClientAutoConfiguration; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration; +import org.springframework.boot.restclient.RestClientCustomizer; +import org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.web.client.RestClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.test.web.client.MockRestServiceServer; diff --git a/spring-boot-project/spring-boot-security/build.gradle b/spring-boot-project/spring-boot-security/build.gradle index ed6c09e78de..8efe7c8e645 100644 --- a/spring-boot-project/spring-boot-security/build.gradle +++ b/spring-boot-project/spring-boot-security/build.gradle @@ -54,6 +54,7 @@ dependencies { testImplementation(project(":spring-boot-project:spring-boot-http-converter")) testImplementation(project(":spring-boot-project:spring-boot-jackson")) testImplementation(project(":spring-boot-project:spring-boot-jpa")) + testImplementation(project(":spring-boot-project:spring-boot-restclient")) testImplementation(project(":spring-boot-project:spring-boot-rsocket")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tomcat")) diff --git a/spring-boot-project/spring-boot-starters/spring-boot-starter-test/build.gradle b/spring-boot-project/spring-boot-starters/spring-boot-starter-test/build.gradle index 87ace22bd29..28cfcb08224 100644 --- a/spring-boot-project/spring-boot-starters/spring-boot-starter-test/build.gradle +++ b/spring-boot-project/spring-boot-starters/spring-boot-starter-test/build.gradle @@ -21,12 +21,13 @@ plugins { description = "Starter for testing Spring Boot applications with libraries including JUnit Jupiter, Hamcrest and Mockito" dependencies { - api(project(":spring-boot-project:spring-boot-http-client")) - api(project(":spring-boot-project:spring-boot-http-client-reactive")) + api(project(":spring-boot-project:spring-boot-restclient")) + api(project(":spring-boot-project:spring-boot-restclient-test")) api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter")) api(project(":spring-boot-project:spring-boot-test")) api(project(":spring-boot-project:spring-boot-test-autoconfigure")) api(project(":spring-boot-project:spring-boot-web-server-test")) + api(project(":spring-boot-project:spring-boot-webclient")) api("com.jayway.jsonpath:json-path") api("jakarta.xml.bind:jakarta.xml.bind-api") api("net.minidev:json-smart") diff --git a/spring-boot-project/spring-boot-test-autoconfigure/build.gradle b/spring-boot-project/spring-boot-test-autoconfigure/build.gradle index 5fee6ca15a1..45c66ec4756 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-test-autoconfigure/build.gradle @@ -78,8 +78,6 @@ dependencies { optional(project(":spring-boot-project:spring-boot-groovy-templates")) optional(project(":spring-boot-project:spring-boot-hateoas")) optional(project(":spring-boot-project:spring-boot-http-converter")) - optional(project(":spring-boot-project:spring-boot-http-client")) - optional(project(":spring-boot-project:spring-boot-http-client-reactive")) optional(project(":spring-boot-project:spring-boot-http-codec")) optional(project(":spring-boot-project:spring-boot-jackson")) optional(project(":spring-boot-project:spring-boot-jdbc")) @@ -91,6 +89,8 @@ dependencies { optional(project(":spring-boot-project:spring-boot-mongodb")) optional(project(":spring-boot-project:spring-boot-r2dbc")) optional(project(":spring-boot-project:spring-boot-reactor-netty")) + optional(project(":spring-boot-project:spring-boot-restclient")) + optional(project(":spring-boot-project:spring-boot-restclient-test")) optional(project(":spring-boot-project:spring-boot-security")) optional(project(":spring-boot-project:spring-boot-security-oauth2-client")) optional(project(":spring-boot-project:spring-boot-security-oauth2-resource-server")) @@ -98,6 +98,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-tx")) optional(project(":spring-boot-project:spring-boot-validation")) optional(project(":spring-boot-project:spring-boot-web-server-test")) + optional(project(":spring-boot-project:spring-boot-webclient")) optional(project(":spring-boot-project:spring-boot-webflux")) optional(project(":spring-boot-project:spring-boot-webmvc")) optional(project(":spring-boot-project:spring-boot-webservices")) diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServer.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServer.java index 949dfc4b27d..9ae0f3e278c 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServer.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServer.java @@ -24,10 +24,10 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.boot.test.autoconfigure.properties.PropertyMapping; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.web.client.RestClient.Builder; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureWebClient.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureWebClient.java index 30c96f82956..bd9971b2c51 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureWebClient.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureWebClient.java @@ -24,9 +24,9 @@ import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.autoconfigure.json.AutoConfigureJson; import org.springframework.boot.test.autoconfigure.properties.PropertyMapping; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.web.client.RestTemplate; /** diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/MockRestServiceServerAutoConfiguration.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/MockRestServiceServerAutoConfiguration.java index 227ff3fc494..53142384e67 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/MockRestServiceServerAutoConfiguration.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/MockRestServiceServerAutoConfiguration.java @@ -24,8 +24,9 @@ import java.util.Map; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.http.client.ClientHttpRequest; import org.springframework.http.client.ClientHttpResponse; @@ -47,6 +48,7 @@ import org.springframework.web.client.RestTemplate; * @see AutoConfigureMockRestServiceServer */ @AutoConfiguration +@ConditionalOnClass(MockServerRestTemplateCustomizer.class) @ConditionalOnBooleanProperty("spring.test.webclient.mockrestserviceserver.enabled") public class MockRestServiceServerAutoConfiguration { diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTest.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTest.java index a9a02a5af6c..0262d519ca0 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTest.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTest.java @@ -27,10 +27,10 @@ import org.junit.jupiter.api.extension.ExtendWith; import org.springframework.boot.autoconfigure.ImportAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.autoconfigure.OverrideAutoConfiguration; import org.springframework.boot.test.autoconfigure.core.AutoConfigureCache; import org.springframework.boot.test.autoconfigure.filter.TypeExcludeFilters; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.ComponentScan; import org.springframework.core.annotation.AliasFor; import org.springframework.core.env.Environment; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/WebClientRestTemplateAutoConfiguration.java b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/WebClientRestTemplateAutoConfiguration.java index b2e1a8911cb..79d43195a67 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/WebClientRestTemplateAutoConfiguration.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/java/org/springframework/boot/test/autoconfigure/web/client/WebClientRestTemplateAutoConfiguration.java @@ -18,7 +18,8 @@ package org.springframework.boot.test.autoconfigure.web.client; import org.springframework.boot.autoconfigure.AutoConfiguration; import org.springframework.boot.autoconfigure.condition.ConditionalOnBooleanProperty; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.autoconfigure.condition.ConditionalOnClass; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.web.client.RestTemplate; @@ -30,8 +31,9 @@ import org.springframework.web.client.RestTemplate; * @since 1.4.0 * @see AutoConfigureMockRestServiceServer */ -@AutoConfiguration(afterName = "org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration") +@AutoConfiguration(afterName = "org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration") @ConditionalOnBooleanProperty("spring.test.webclient.register-rest-template") +@ConditionalOnClass(RestTemplateBuilder.class) public class WebClientRestTemplateAutoConfiguration { @Bean diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.client.AutoConfigureWebClient.imports b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.client.AutoConfigureWebClient.imports index 083ac41a92e..5ae9ead0a85 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.client.AutoConfigureWebClient.imports +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/main/resources/META-INF/spring/org.springframework.boot.test.autoconfigure.web.client.AutoConfigureWebClient.imports @@ -1,7 +1,7 @@ # AutoConfigureWebClient auto-configuration imports -optional:org.springframework.boot.http.client.reactive.web.WebClientAutoConfiguration -optional:org.springframework.boot.http.client.rest.autoconfigure.RestClientAutoConfiguration -optional:org.springframework.boot.http.client.rest.autoconfigure.RestTemplateAutoConfiguration optional:org.springframework.boot.http.codec.autoconfigure.CodecsAutoConfiguration optional:org.springframework.boot.http.converter.autoconfigure.HttpMessageConvertersAutoConfiguration +optional:org.springframework.boot.restclient.autoconfigure.RestClientAutoConfiguration +optional:org.springframework.boot.restclient.autoconfigure.RestTemplateAutoConfiguration +optional:org.springframework.boot.webclient.WebClientAutoConfiguration org.springframework.boot.test.autoconfigure.web.client.WebClientRestTemplateAutoConfiguration diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AnotherExampleRestTemplateService.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AnotherExampleRestTemplateService.java index a46ed931a32..9eaf059876f 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AnotherExampleRestTemplateService.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AnotherExampleRestTemplateService.java @@ -16,7 +16,7 @@ package org.springframework.boot.test.autoconfigure.web.client; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerEnabledFalseIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerEnabledFalseIntegrationTests.java index 3e842ba1663..ab9b8f70f4c 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerEnabledFalseIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerEnabledFalseIntegrationTests.java @@ -20,8 +20,8 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.context.ApplicationContext; import static org.assertj.core.api.Assertions.assertThatExceptionOfType; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerWithRestTemplateRootUriIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerWithRestTemplateRootUriIntegrationTests.java index bc91013d45e..d322558adb7 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerWithRestTemplateRootUriIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/AutoConfigureMockRestServiceServerWithRestTemplateRootUriIntegrationTests.java @@ -22,8 +22,8 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.autoconfigure.EnableAutoConfiguration; import org.springframework.boot.cassandra.autoconfigure.CassandraAutoConfiguration; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.MediaType; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/ExampleRestTemplateService.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/ExampleRestTemplateService.java index ddeaaddbfc0..13a265c30c9 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/ExampleRestTemplateService.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/ExampleRestTemplateService.java @@ -16,7 +16,7 @@ package org.springframework.boot.test.autoconfigure.web.client; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.stereotype.Service; import org.springframework.web.client.RestTemplate; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestNoComponentIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestNoComponentIntegrationTests.java index de950db88d8..f175c72385e 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestNoComponentIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestNoComponentIntegrationTests.java @@ -20,7 +20,7 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.NoSuchBeanDefinitionException; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.context.ApplicationContext; import org.springframework.http.MediaType; import org.springframework.test.web.client.MockRestServiceServer; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestClientTwoComponentsIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestClientTwoComponentsIntegrationTests.java index 540399cb28d..a358024bc59 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestClientTwoComponentsIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestClientTwoComponentsIntegrationTests.java @@ -19,7 +19,7 @@ package org.springframework.boot.test.autoconfigure.web.client; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; import org.springframework.http.MediaType; import org.springframework.test.web.client.MockRestServiceServer; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateAndRestClientTogetherIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateAndRestClientTogetherIntegrationTests.java index 4a278a76ea5..93f8b07f128 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateAndRestClientTogetherIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateAndRestClientTogetherIntegrationTests.java @@ -19,8 +19,8 @@ package org.springframework.boot.test.autoconfigure.web.client; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.web.client.MockServerRestClientCustomizer; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; +import org.springframework.boot.restclient.test.MockServerRestClientCustomizer; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.http.MediaType; import org.springframework.test.web.client.MockRestServiceServer; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateTwoComponentsIntegrationTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateTwoComponentsIntegrationTests.java index 9c583fb7a5f..8cd8883e4f2 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateTwoComponentsIntegrationTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientTestRestTemplateTwoComponentsIntegrationTests.java @@ -19,7 +19,7 @@ package org.springframework.boot.test.autoconfigure.web.client; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.boot.test.web.client.MockServerRestTemplateCustomizer; +import org.springframework.boot.restclient.test.MockServerRestTemplateCustomizer; import org.springframework.http.MediaType; import org.springframework.test.web.client.MockRestServiceServer; diff --git a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientWithRestTemplateBuilderTests.java b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientWithRestTemplateBuilderTests.java index cceb838bf7e..50146e9144f 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientWithRestTemplateBuilderTests.java +++ b/spring-boot-project/spring-boot-test-autoconfigure/src/test/java/org/springframework/boot/test/autoconfigure/web/client/RestClientWithRestTemplateBuilderTests.java @@ -18,7 +18,7 @@ package org.springframework.boot.test.autoconfigure.web.client; import org.junit.jupiter.api.Test; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.test.web.client.MockRestServiceServer; import org.springframework.web.client.RestClient; import org.springframework.web.client.RestClient.Builder; diff --git a/spring-boot-project/spring-boot-web-server-test/build.gradle b/spring-boot-project/spring-boot-web-server-test/build.gradle index 535cb27a2d1..e8984f22063 100644 --- a/spring-boot-project/spring-boot-web-server-test/build.gradle +++ b/spring-boot-project/spring-boot-web-server-test/build.gradle @@ -31,7 +31,9 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-test")) optional(project(":spring-boot-project:spring-boot-http-codec")) + optional(project(":spring-boot-project:spring-boot-restclient")) optional(project(":spring-boot-project:spring-boot-web-server")) + optional(project(":spring-boot-project:spring-boot-webclient")) optional("jakarta.servlet:jakarta.servlet-api") optional("org.apache.httpcomponents.client5:httpclient5") optional("org.jetbrains.kotlin:kotlin-reflect") diff --git a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/LocalHostUriTemplateHandler.java b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/LocalHostUriTemplateHandler.java index 628dc997dcb..fe0a21a90e3 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/LocalHostUriTemplateHandler.java +++ b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/LocalHostUriTemplateHandler.java @@ -16,7 +16,7 @@ package org.springframework.boot.web.server.test.client; -import org.springframework.boot.web.client.RootUriTemplateHandler; +import org.springframework.boot.restclient.RootUriTemplateHandler; import org.springframework.core.env.Environment; import org.springframework.util.Assert; import org.springframework.web.util.DefaultUriBuilderFactory; diff --git a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplate.java b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplate.java index 2e4e9096ef2..096ebc44341 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplate.java +++ b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplate.java @@ -51,9 +51,9 @@ import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.HttpComponentsClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.HttpRedirects; +import org.springframework.boot.restclient.RestTemplateBuilder; +import org.springframework.boot.restclient.RootUriTemplateHandler; import org.springframework.boot.ssl.SslBundle; -import org.springframework.boot.web.client.RestTemplateBuilder; -import org.springframework.boot.web.client.RootUriTemplateHandler; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; import org.springframework.http.HttpHeaders; @@ -1087,21 +1087,6 @@ public class TestRestTemplate { private final boolean enableRedirects; - /** - * Create a new {@link CustomHttpComponentsClientHttpRequestFactory} instance. - * @param httpClientOptions the {@link HttpClient} options - * @param settings the settings to apply - * @deprecated since 3.4.0 for removal in 4.0.0 in favor of - * {@link #CustomHttpComponentsClientHttpRequestFactory(HttpClientOption[], ClientHttpRequestFactorySettings)} - */ - @Deprecated(since = "3.4.0", forRemoval = true) - @SuppressWarnings("removal") - public CustomHttpComponentsClientHttpRequestFactory(HttpClientOption[] httpClientOptions, - org.springframework.boot.web.client.ClientHttpRequestFactorySettings settings) { - this(httpClientOptions, new ClientHttpRequestFactorySettings(null, settings.connectTimeout(), - settings.readTimeout(), settings.sslBundle())); - } - /** * Create a new {@link CustomHttpComponentsClientHttpRequestFactory} instance. * @param httpClientOptions the {@link HttpClient} options diff --git a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizer.java b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizer.java index 37588ef4b79..a069597ee2c 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizer.java +++ b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizer.java @@ -29,8 +29,8 @@ import org.springframework.beans.factory.config.ConfigurableListableBeanFactory; import org.springframework.beans.factory.support.BeanDefinitionRegistry; import org.springframework.beans.factory.support.BeanDefinitionRegistryPostProcessor; import org.springframework.beans.factory.support.RootBeanDefinition; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.AbstractConfigurableWebServerFactory; import org.springframework.boot.web.server.test.client.TestRestTemplate.HttpClientOption; import org.springframework.context.ApplicationContext; diff --git a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizerFactory.java b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizerFactory.java index 402f0521755..e69c92c230f 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizerFactory.java +++ b/spring-boot-project/spring-boot-web-server-test/src/main/java/org/springframework/boot/web/server/test/client/TestRestTemplateContextCustomizerFactory.java @@ -23,6 +23,7 @@ import org.springframework.test.context.ContextConfigurationAttributes; import org.springframework.test.context.ContextCustomizer; import org.springframework.test.context.ContextCustomizerFactory; import org.springframework.test.context.TestContextAnnotationUtils; +import org.springframework.util.ClassUtils; /** * {@link ContextCustomizerFactory} for {@link TestRestTemplate}. @@ -32,9 +33,16 @@ import org.springframework.test.context.TestContextAnnotationUtils; */ class TestRestTemplateContextCustomizerFactory implements ContextCustomizerFactory { + private static final boolean REST_TEMPLATE_BUILDER_PRESENT = ClassUtils.isPresent( + "org.springframework.boot.restclient.RestTemplateBuilder", + TestRestTemplateContextCustomizerFactory.class.getClassLoader()); + @Override public ContextCustomizer createContextCustomizer(Class testClass, List configAttributes) { + if (!REST_TEMPLATE_BUILDER_PRESENT) { + return null; + } SpringBootTest springBootTest = TestContextAnnotationUtils.findMergedAnnotation(testClass, SpringBootTest.class); return (springBootTest != null) ? new TestRestTemplateContextCustomizer() : null; diff --git a/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/SpringBootTestWebEnvironmentRandomPortTests.java b/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/SpringBootTestWebEnvironmentRandomPortTests.java index 5b3f04f8781..a6cf4b62bc9 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/SpringBootTestWebEnvironmentRandomPortTests.java +++ b/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/SpringBootTestWebEnvironmentRandomPortTests.java @@ -18,9 +18,9 @@ package org.springframework.boot.web.server.test; import org.junit.jupiter.api.Test; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.converter.StringHttpMessageConverter; diff --git a/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/client/TestRestTemplateTests.java b/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/client/TestRestTemplateTests.java index d43c2e4a6f8..58d6cc9c6e3 100644 --- a/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/client/TestRestTemplateTests.java +++ b/spring-boot-project/spring-boot-web-server-test/src/test/java/org/springframework/boot/web/server/test/client/TestRestTemplateTests.java @@ -35,7 +35,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.HttpRedirects; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.TestRestTemplate.HttpClientOption; import org.springframework.core.ParameterizedTypeReference; import org.springframework.http.HttpEntity; diff --git a/spring-boot-project/spring-boot-http-client-reactive/build.gradle b/spring-boot-project/spring-boot-webclient/build.gradle similarity index 94% rename from spring-boot-project/spring-boot-http-client-reactive/build.gradle rename to spring-boot-project/spring-boot-webclient/build.gradle index 78fa1d5791f..e2758400b1f 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/build.gradle +++ b/spring-boot-project/spring-boot-webclient/build.gradle @@ -18,15 +18,15 @@ plugins { id "java-library" id "org.springframework.boot.auto-configuration" - id "org.springframework.boot.configuration-properties" id "org.springframework.boot.deployed" id "org.springframework.boot.optional-dependencies" } -description = "Spring Boot Reactive HTTP Client" +description = "Spring Boot WebClient" dependencies { api(project(":spring-boot-project:spring-boot")) + api(project(":spring-boot-project:spring-boot-http-client")) api("org.springframework:spring-web") implementation(project(":spring-boot-project:spring-boot-http-codec")) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/WebClientCustomizer.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/WebClientCustomizer.java similarity index 95% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/WebClientCustomizer.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/WebClientCustomizer.java index 96a6f983893..6bf7adb0697 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/WebClientCustomizer.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/WebClientCustomizer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.web.reactive.function.client; +package org.springframework.boot.webclient; import org.springframework.web.reactive.function.client.WebClient; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizer.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizer.java similarity index 91% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizer.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizer.java index c227b42ccb8..0f28dcf0c23 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizer.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizer.java @@ -14,11 +14,11 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.actuate.observation; +package org.springframework.boot.webclient.actuate.observation; import io.micrometer.observation.ObservationRegistry; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; import org.springframework.web.reactive.function.client.ClientRequestObservationConvention; import org.springframework.web.reactive.function.client.WebClient; @@ -27,7 +27,7 @@ import org.springframework.web.reactive.function.client.WebClient; * observations. * * @author Brian Clozel - * @since 3.0.0 + * @since 4.0.0 */ public class ObservationWebClientCustomizer implements WebClientCustomizer { diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/package-info.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/package-info.java similarity index 89% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/package-info.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/package-info.java index 918def8a905..5046fb69b9e 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/actuate/observation/package-info.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/actuate/observation/package-info.java @@ -17,4 +17,4 @@ /** * Observation integration for WebClient. */ -package org.springframework.boot.http.client.reactive.web.actuate.observation; +package org.springframework.boot.webclient.actuate.observation; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/AutoConfiguredWebClientSsl.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/AutoConfiguredWebClientSsl.java similarity index 96% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/AutoConfiguredWebClientSsl.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/AutoConfiguredWebClientSsl.java index d530d7bc85b..01addca759f 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/AutoConfiguredWebClientSsl.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/AutoConfiguredWebClientSsl.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; import java.util.function.Consumer; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfiguration.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfiguration.java similarity index 95% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfiguration.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfiguration.java index 88c4087b260..74aa6035e24 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfiguration.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; import org.springframework.beans.factory.ObjectProvider; import org.springframework.beans.factory.config.ConfigurableBeanFactory; @@ -29,7 +29,7 @@ import org.springframework.boot.http.client.reactive.autoconfigure.ClientHttpCon import org.springframework.boot.http.codec.CodecCustomizer; import org.springframework.boot.http.codec.autoconfigure.CodecsAutoConfiguration; import org.springframework.boot.ssl.SslBundles; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; @@ -48,7 +48,7 @@ import org.springframework.web.reactive.function.client.WebClient; * * @author Brian Clozel * @author Phillip Webb - * @since 2.0.0 + * @since 4.0.0 */ @AutoConfiguration(after = { ClientHttpConnectorAutoConfiguration.class, CodecsAutoConfiguration.class }) @ConditionalOnClass(WebClient.class) diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientCodecCustomizer.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientCodecCustomizer.java similarity index 88% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientCodecCustomizer.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientCodecCustomizer.java index 9e8e5342e69..dfedf81ef3b 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientCodecCustomizer.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientCodecCustomizer.java @@ -14,19 +14,19 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; import java.util.List; import org.springframework.boot.http.codec.CodecCustomizer; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; import org.springframework.web.reactive.function.client.WebClient; /** * {@link WebClientCustomizer} that configures codecs for the HTTP client. * * @author Brian Clozel - * @since 2.0.0 + * @since 4.0.0 */ public class WebClientCodecCustomizer implements WebClientCustomizer { diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientSsl.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientSsl.java similarity index 96% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientSsl.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientSsl.java index 428eedd715d..e33b54d5628 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientSsl.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/WebClientSsl.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; import java.util.function.Consumer; @@ -38,7 +38,7 @@ import org.springframework.web.reactive.function.client.WebClient; * {@link WebClient.Builder#clientConnector configured} {@link ClientHttpConnector}. * * @author Phillip Webb - * @since 3.1.0 + * @since 4.0.0 */ public interface WebClientSsl { diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/package-info.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/package-info.java similarity index 90% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/package-info.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/package-info.java index 54762976bc4..e02cfd7d466 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/web/autoconfigure/package-info.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/package-info.java @@ -17,4 +17,4 @@ /** * Auto-configuration for Spring Framework's functional web client. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/package-info.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/package-info.java similarity index 91% rename from spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/package-info.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/package-info.java index 2a128ec2efa..813f14245f5 100644 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/reactive/function/client/package-info.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/package-info.java @@ -17,4 +17,4 @@ /** * Spring WebFlux WebClient support abstractions. */ -package org.springframework.boot.web.reactive.function.client; +package org.springframework.boot.webclient; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java similarity index 95% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java index 913a5d506a9..6cc26d5e71b 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/AbstractHttpReactiveClientServiceProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import java.util.LinkedHashMap; import java.util.List; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServiceProperties.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServiceProperties.java similarity index 95% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServiceProperties.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServiceProperties.java index daf02b47b8a..f86586ecc52 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServiceProperties.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServiceProperties.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import java.util.LinkedHashMap; import java.util.Map; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java similarity index 93% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java index dfe4c47ebe0..6501629751d 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfiguration.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import org.springframework.beans.factory.BeanClassLoaderAware; import org.springframework.beans.factory.ObjectProvider; @@ -26,9 +26,9 @@ import org.springframework.boot.http.client.reactive.ClientHttpConnectorBuilder; import org.springframework.boot.http.client.reactive.ClientHttpConnectorSettings; import org.springframework.boot.http.client.reactive.autoconfigure.ClientHttpConnectorAutoConfiguration; import org.springframework.boot.http.client.reactive.autoconfigure.HttpReactiveClientProperties; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.ssl.SslBundles; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.web.reactive.function.client.support.WebClientAdapter; import org.springframework.web.service.registry.HttpServiceProxyRegistry; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java similarity index 86% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java index 0dac8c1d0ce..4b5bbecd30b 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientCustomizerHttpServiceGroupConfigurer.java @@ -14,11 +14,10 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import org.springframework.beans.factory.ObjectProvider; -import org.springframework.boot.web.client.RestClientCustomizer; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; import org.springframework.web.client.RestClient; import org.springframework.web.client.support.RestClientHttpServiceGroupConfigurer; import org.springframework.web.reactive.function.client.WebClient; @@ -27,7 +26,7 @@ import org.springframework.web.service.registry.HttpServiceGroup; /** * A {@link RestClientHttpServiceGroupConfigurer} to apply auto-configured - * {@link RestClientCustomizer} beans to the group's {@link RestClient}. + * {@link WebClientCustomizer} beans to the group's {@link RestClient}. * * @author Olga Maciaszek-Sharma * @author Phillip Webb diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java similarity index 98% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java index a6e9e3d5d37..765d9929af8 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/WebClientPropertiesHttpServiceGroupConfigurer.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import java.util.List; import java.util.Map; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/package-info.java b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/package-info.java similarity index 90% rename from spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/package-info.java rename to spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/package-info.java index 953d7735384..fd39647e53e 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/main/java/org/springframework/boot/http/client/reactive/service/autoconfigure/package-info.java +++ b/spring-boot-project/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/service/autoconfigure/package-info.java @@ -17,4 +17,4 @@ /** * Auto-Configuration for Spring's Reactive HTTP Service Interface Clients. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; diff --git a/spring-boot-project/spring-boot-webclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports b/spring-boot-project/spring-boot-webclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports new file mode 100644 index 00000000000..7566511fc82 --- /dev/null +++ b/spring-boot-project/spring-boot-webclient/src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports @@ -0,0 +1,2 @@ +org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration +org.springframework.boot.webclient.service.autoconfigure.ReactiveHttpServiceClientAutoConfiguration diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizerTests.java b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizerTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizerTests.java rename to spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizerTests.java index 9703e855c3b..50f08cb5695 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/actuate/observation/ObservationWebClientCustomizerTests.java +++ b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/actuate/observation/ObservationWebClientCustomizerTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.actuate.observation; +package org.springframework.boot.webclient.actuate.observation; import io.micrometer.observation.tck.TestObservationRegistry; import org.junit.jupiter.api.Test; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfigurationTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfigurationTests.java rename to spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfigurationTests.java index 844add4ff49..81f7e30db95 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/web/autoconfigure/WebClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/autoconfigure/WebClientAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.web.autoconfigure; +package org.springframework.boot.webclient.autoconfigure; import org.junit.jupiter.api.Test; @@ -22,7 +22,7 @@ import org.springframework.boot.autoconfigure.AutoConfigurations; import org.springframework.boot.autoconfigure.ssl.SslAutoConfiguration; import org.springframework.boot.http.codec.CodecCustomizer; import org.springframework.boot.test.context.runner.ApplicationContextRunner; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.codec.CodecConfigurer; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java similarity index 96% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java rename to spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java index 20659e355b4..5ce3f663619 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java +++ b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpClientServicePropertiesTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import java.time.Duration; import java.util.List; @@ -25,7 +25,7 @@ import org.junit.jupiter.api.Test; import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.http.client.HttpRedirects; import org.springframework.boot.http.client.reactive.autoconfigure.AbstractClientHttpConnectorProperties.Connector; -import org.springframework.boot.http.client.reactive.service.autoconfigure.ReactiveHttpClientServiceProperties.Group; +import org.springframework.boot.webclient.service.autoconfigure.ReactiveHttpClientServiceProperties.Group; import org.springframework.context.annotation.AnnotationConfigApplicationContext; import org.springframework.context.annotation.Configuration; import org.springframework.mock.env.MockEnvironment; diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java similarity index 97% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java rename to spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java index 63c1d991396..c8ab92561cc 100644 --- a/spring-boot-project/spring-boot-http-client-reactive/src/test/java/org/springframework/boot/http/client/reactive/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java +++ b/spring-boot-project/spring-boot-webclient/src/test/java/org/springframework/boot/webclient/service/autoconfigure/ReactiveHttpServiceClientAutoConfigurationTests.java @@ -14,7 +14,7 @@ * limitations under the License. */ -package org.springframework.boot.http.client.reactive.service.autoconfigure; +package org.springframework.boot.webclient.service.autoconfigure; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Proxy; @@ -32,9 +32,9 @@ import org.springframework.boot.http.client.HttpRedirects; import org.springframework.boot.http.client.reactive.ClientHttpConnectorBuilder; import org.springframework.boot.http.client.reactive.ClientHttpConnectorSettings; import org.springframework.boot.http.client.reactive.autoconfigure.ClientHttpConnectorAutoConfiguration; -import org.springframework.boot.http.client.reactive.web.autoconfigure.WebClientAutoConfiguration; import org.springframework.boot.test.context.runner.ReactiveWebApplicationContextRunner; -import org.springframework.boot.web.reactive.function.client.WebClientCustomizer; +import org.springframework.boot.webclient.WebClientCustomizer; +import org.springframework.boot.webclient.autoconfigure.WebClientAutoConfiguration; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.http.HttpHeaders; diff --git a/spring-boot-project/spring-boot-integration-tests/src/test/resources/org/springframework/boot/web/client/test.jks b/spring-boot-project/spring-boot-webclient/src/test/resources/org/springframework/boot/http/client/reactive/test.jks similarity index 100% rename from spring-boot-project/spring-boot-integration-tests/src/test/resources/org/springframework/boot/web/client/test.jks rename to spring-boot-project/spring-boot-webclient/src/test/resources/org/springframework/boot/http/client/reactive/test.jks diff --git a/spring-boot-project/spring-boot-http-client-reactive/src/test/resources/org/springframework/boot/http/client/reactive/web/autoconfigure/test.jks b/spring-boot-project/spring-boot-webclient/src/test/resources/org/springframework/boot/http/client/reactive/web/autoconfigure/test.jks similarity index 100% rename from spring-boot-project/spring-boot-http-client-reactive/src/test/resources/org/springframework/boot/http/client/reactive/web/autoconfigure/test.jks rename to spring-boot-project/spring-boot-webclient/src/test/resources/org/springframework/boot/http/client/reactive/web/autoconfigure/test.jks diff --git a/spring-boot-project/spring-boot-webmvc/build.gradle b/spring-boot-project/spring-boot-webmvc/build.gradle index ad010f0565b..50339179d66 100644 --- a/spring-boot-project/spring-boot-webmvc/build.gradle +++ b/spring-boot-project/spring-boot-webmvc/build.gradle @@ -39,6 +39,7 @@ dependencies { optional(project(":spring-boot-project:spring-boot-web-server")) testImplementation(project(":spring-boot-project:spring-boot-freemarker")) + testImplementation(project(":spring-boot-project:spring-boot-restclient")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tomcat")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot-webservices/build.gradle b/spring-boot-project/spring-boot-webservices/build.gradle index 185fa4b1ae5..98ccc23f692 100644 --- a/spring-boot-project/spring-boot-webservices/build.gradle +++ b/spring-boot-project/spring-boot-webservices/build.gradle @@ -27,6 +27,7 @@ description = "Spring Boot Web Services" dependencies { api(project(":spring-boot-project:spring-boot")) + api(project(":spring-boot-project:spring-boot-http-client")) api("org.springframework:spring-oxm") api("org.springframework.ws:spring-ws-core") diff --git a/spring-boot-project/spring-boot/build.gradle b/spring-boot-project/spring-boot/build.gradle index 4aa819e53ab..09f986b4883 100644 --- a/spring-boot-project/spring-boot/build.gradle +++ b/spring-boot-project/spring-boot/build.gradle @@ -35,22 +35,19 @@ dependencies { optional("ch.qos.logback:logback-classic") optional("com.fasterxml.jackson.core:jackson-databind") optional("com.google.code.gson:gson") + optional("io.projectreactor:reactor-core") optional("jakarta.servlet:jakarta.servlet-api") optional("jakarta.validation:jakarta.validation-api") - optional("io.projectreactor.netty:reactor-netty-http") optional("org.apache.groovy:groovy") - optional("org.apache.httpcomponents.client5:httpclient5") optional("org.apache.logging.log4j:log4j-api") optional("org.apache.logging.log4j:log4j-core") optional("org.apache.logging.log4j:log4j-jul") optional("org.crac:crac") - optional("org.eclipse.jetty:jetty-client") optional("org.jetbrains.kotlin:kotlin-reflect") optional("org.jetbrains.kotlin:kotlin-stdlib") optional("org.slf4j:jul-to-slf4j") optional("org.springframework:spring-test") - optional("org.springframework:spring-webflux") - optional("org.springframework:spring-webmvc") + optional("org.springframework:spring-web") optional("org.yaml:snakeyaml") testFixturesCompileOnly(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactories.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactories.java deleted file mode 100644 index 5d9ce988237..00000000000 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactories.java +++ /dev/null @@ -1,126 +0,0 @@ -/* - * Copyright 2012-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.client; - -import java.util.function.Supplier; - -import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; -import org.springframework.boot.http.client.JdkClientHttpRequestFactoryBuilder; -import org.springframework.http.client.ClientHttpRequestFactory; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.http.client.JdkClientHttpRequestFactory; -import org.springframework.http.client.JettyClientHttpRequestFactory; -import org.springframework.http.client.ReactorClientHttpRequestFactory; -import org.springframework.http.client.SimpleClientHttpRequestFactory; -import org.springframework.util.Assert; -import org.springframework.util.ClassUtils; - -/** - * Utility class that can be used to create {@link ClientHttpRequestFactory} instances - * configured using given {@link ClientHttpRequestFactorySettings}. - * - * @author Andy Wilkinson - * @author Phillip Webb - * @author Scott Frederick - * @since 3.0.0 - * @deprecated since 3.4.0 for removal in 4.0.0 in favor of - * {@link ClientHttpRequestFactoryBuilder} - */ -@Deprecated(since = "3.4.0", forRemoval = true) -public final class ClientHttpRequestFactories { - - private ClientHttpRequestFactories() { - } - - /** - * Return a {@link ClientHttpRequestFactory} implementation with the given - * {@code settings} applied. The first of the following implementations whose - * dependencies {@link ClassUtils#isPresent are available} is returned: - *
    - *
  1. {@link HttpComponentsClientHttpRequestFactory}
  2. - *
  3. {@link JettyClientHttpRequestFactory}
  4. - *
  5. {@link ReactorClientHttpRequestFactory}
  6. - *
  7. {@link SimpleClientHttpRequestFactory}
  8. - *
- * @param settings the settings to apply - * @return a new {@link ClientHttpRequestFactory} - */ - @SuppressWarnings("removal") - public static ClientHttpRequestFactory get(ClientHttpRequestFactorySettings settings) { - Assert.notNull(settings, "'settings' must not be null"); - return detectBuilder().build(settings.adapt()); - } - - /** - * Return a new {@link ClientHttpRequestFactory} of the given - * {@code requestFactoryType}, applying {@link ClientHttpRequestFactorySettings} using - * reflection if necessary. The following implementations are supported without the - * use of reflection: - *
    - *
  • {@link HttpComponentsClientHttpRequestFactory}
  • - *
  • {@link JdkClientHttpRequestFactory}
  • - *
  • {@link JettyClientHttpRequestFactory}
  • - *
  • {@link ReactorClientHttpRequestFactory}
  • - *
  • {@link SimpleClientHttpRequestFactory}
  • - *
- * A {@code requestFactoryType} of {@link ClientHttpRequestFactory} is equivalent to - * calling {@link #get(ClientHttpRequestFactorySettings)}. - * @param the {@link ClientHttpRequestFactory} type - * @param requestFactoryType the {@link ClientHttpRequestFactory} type - * @param settings the settings to apply - * @return a new {@link ClientHttpRequestFactory} instance - */ - @SuppressWarnings("removal") - public static T get(Class requestFactoryType, - ClientHttpRequestFactorySettings settings) { - Assert.notNull(settings, "'settings' must not be null"); - return getBuilder(requestFactoryType).build(settings.adapt()); - } - - /** - * Return a new {@link ClientHttpRequestFactory} from the given supplier, applying - * {@link ClientHttpRequestFactorySettings} using reflection. - * @param the {@link ClientHttpRequestFactory} type - * @param requestFactorySupplier the {@link ClientHttpRequestFactory} supplier - * @param settings the settings to apply - * @return a new {@link ClientHttpRequestFactory} instance - */ - @SuppressWarnings("removal") - public static T get(Supplier requestFactorySupplier, - ClientHttpRequestFactorySettings settings) { - return ClientHttpRequestFactoryBuilder.of(requestFactorySupplier).build(settings.adapt()); - } - - @SuppressWarnings("unchecked") - private static ClientHttpRequestFactoryBuilder getBuilder( - Class requestFactoryType) { - if (requestFactoryType == ClientHttpRequestFactory.class) { - return (ClientHttpRequestFactoryBuilder) detectBuilder(); - } - return ClientHttpRequestFactoryBuilder.of(requestFactoryType); - } - - private static ClientHttpRequestFactoryBuilder detectBuilder() { - ClientHttpRequestFactoryBuilder builder = ClientHttpRequestFactoryBuilder.detect(); - if (builder instanceof JdkClientHttpRequestFactoryBuilder) { - // Same logic as earlier versions which did not support JDK client factories - return ClientHttpRequestFactoryBuilder.simple(); - } - return builder; - } - -} diff --git a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettings.java b/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettings.java deleted file mode 100644 index 7eb823680fa..00000000000 --- a/spring-boot-project/spring-boot/src/main/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettings.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * Copyright 2012-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.client; - -import java.time.Duration; - -import org.springframework.boot.http.client.ClientHttpRequestFactoryBuilder; -import org.springframework.boot.ssl.SslBundle; -import org.springframework.http.client.ClientHttpRequestFactory; - -/** - * Settings that can be applied when creating a {@link ClientHttpRequestFactory}. - * - * @param connectTimeout the connect timeout - * @param readTimeout the read timeout - * @param sslBundle the SSL bundle providing SSL configuration - * @author Andy Wilkinson - * @author Phillip Webb - * @author Scott Frederick - * @since 3.0.0 - * @see ClientHttpRequestFactoryBuilder - * @deprecated since 3.4.0 for removal in 4.0.0 in favor of - * {@link org.springframework.boot.http.client.ClientHttpRequestFactorySettings} - */ -@Deprecated(since = "3.4.0", forRemoval = true) -public record ClientHttpRequestFactorySettings(Duration connectTimeout, Duration readTimeout, SslBundle sslBundle) { - - /** - * Use defaults for the {@link ClientHttpRequestFactory} which can differ depending on - * the implementation. - */ - public static final ClientHttpRequestFactorySettings DEFAULTS = new ClientHttpRequestFactorySettings(null, null, - null); - - /** - * Return a new {@link ClientHttpRequestFactorySettings} instance with an updated - * connect timeout setting. - * @param connectTimeout the new connect timeout setting - * @return a new {@link ClientHttpRequestFactorySettings} instance - */ - public ClientHttpRequestFactorySettings withConnectTimeout(Duration connectTimeout) { - return new ClientHttpRequestFactorySettings(connectTimeout, this.readTimeout, this.sslBundle); - } - - /** - * Return a new {@link ClientHttpRequestFactorySettings} instance with an updated read - * timeout setting. - * @param readTimeout the new read timeout setting - * @return a new {@link ClientHttpRequestFactorySettings} instance - */ - - public ClientHttpRequestFactorySettings withReadTimeout(Duration readTimeout) { - return new ClientHttpRequestFactorySettings(this.connectTimeout, readTimeout, this.sslBundle); - } - - /** - * Return a new {@link ClientHttpRequestFactorySettings} instance with an updated SSL - * bundle setting. - * @param sslBundle the new SSL bundle setting - * @return a new {@link ClientHttpRequestFactorySettings} instance - * @since 3.1.0 - */ - public ClientHttpRequestFactorySettings withSslBundle(SslBundle sslBundle) { - return new ClientHttpRequestFactorySettings(this.connectTimeout, this.readTimeout, sslBundle); - } - - org.springframework.boot.http.client.ClientHttpRequestFactorySettings adapt() { - return new org.springframework.boot.http.client.ClientHttpRequestFactorySettings(null, connectTimeout(), - readTimeout(), sslBundle()); - } - - static ClientHttpRequestFactorySettings of( - org.springframework.boot.http.client.ClientHttpRequestFactorySettings settings) { - return new ClientHttpRequestFactorySettings(settings.connectTimeout(), settings.readTimeout(), - settings.sslBundle()); - } - -} diff --git a/spring-boot-project/spring-boot/src/main/resources/META-INF/spring/aot.factories b/spring-boot-project/spring-boot/src/main/resources/META-INF/spring/aot.factories index a39a187175a..61390a75beb 100644 --- a/spring-boot-project/spring-boot/src/main/resources/META-INF/spring/aot.factories +++ b/spring-boot-project/spring-boot/src/main/resources/META-INF/spring/aot.factories @@ -5,7 +5,6 @@ org.springframework.boot.WebApplicationType$WebApplicationTypeRuntimeHints,\ org.springframework.boot.context.config.ConfigDataLocationRuntimeHints,\ org.springframework.boot.context.config.ConfigDataPropertiesRuntimeHints,\ org.springframework.boot.env.PropertySourceRuntimeHints,\ -org.springframework.boot.http.client.ClientHttpRequestFactoryRuntimeHints,\ org.springframework.boot.json.JacksonRuntimeHints,\ org.springframework.boot.logging.java.JavaLoggingSystemRuntimeHints,\ org.springframework.boot.logging.logback.LogbackRuntimeHints,\ diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesTests.java deleted file mode 100644 index a1b6aff1ba0..00000000000 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactoriesTests.java +++ /dev/null @@ -1,261 +0,0 @@ -/* - * Copyright 2012-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.client; - -import java.net.URI; -import java.time.Duration; - -import org.junit.jupiter.api.Test; - -import org.springframework.http.HttpMethod; -import org.springframework.http.client.BufferingClientHttpRequestFactory; -import org.springframework.http.client.ClientHttpRequest; -import org.springframework.http.client.ClientHttpRequestFactory; -import org.springframework.http.client.HttpComponentsClientHttpRequestFactory; -import org.springframework.http.client.JdkClientHttpRequestFactory; -import org.springframework.http.client.ReactorClientHttpRequestFactory; -import org.springframework.http.client.SimpleClientHttpRequestFactory; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatIllegalStateException; - -/** - * Tests for {@link ClientHttpRequestFactories}. - * - * @author Andy Wilkinson - * @deprecated since 3.4.0 for removal in 4.0.0 - */ -@SuppressWarnings("removal") -@Deprecated(since = "3.4.0", forRemoval = true) -class ClientHttpRequestFactoriesTests { - - @Test - void getReturnsRequestFactoryOfExpectedType() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories - .get(ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(HttpComponentsClientHttpRequestFactory.class); - } - - @Test - void getOfGeneralTypeReturnsRequestFactoryOfExpectedType() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(ClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(HttpComponentsClientHttpRequestFactory.class); - } - - @Test - void getOfSimpleFactoryReturnsSimpleFactory() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(SimpleClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(SimpleClientHttpRequestFactory.class); - } - - @Test - void getOfHttpComponentsFactoryReturnsHttpComponentsFactory() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories - .get(HttpComponentsClientHttpRequestFactory.class, ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(HttpComponentsClientHttpRequestFactory.class); - } - - @Test - void getOfReactorFactoryReturnsReactorFactory() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(ReactorClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(ReactorClientHttpRequestFactory.class); - } - - @Test - void getOfJdkFactoryReturnsJdkFactory() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(JdkClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(JdkClientHttpRequestFactory.class); - } - - @Test - void getOfUnknownTypeCreatesFactory() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(TestClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS); - assertThat(requestFactory).isInstanceOf(TestClientHttpRequestFactory.class); - } - - @Test - void getOfUnknownTypeWithConnectTimeoutCreatesFactoryAndConfiguresConnectTimeout() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(TestClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofSeconds(60))); - assertThat(requestFactory).isInstanceOf(TestClientHttpRequestFactory.class); - assertThat(((TestClientHttpRequestFactory) requestFactory).connectTimeout) - .isEqualTo(Duration.ofSeconds(60).toMillis()); - } - - @Test - void getOfUnknownTypeWithReadTimeoutCreatesFactoryAndConfiguresReadTimeout() { - ClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get(TestClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withReadTimeout(Duration.ofSeconds(90))); - assertThat(requestFactory).isInstanceOf(TestClientHttpRequestFactory.class); - assertThat(((TestClientHttpRequestFactory) requestFactory).readTimeout) - .isEqualTo(Duration.ofSeconds(90).toMillis()); - } - - @Test - void getOfUnconfigurableTypeWithConnectTimeoutThrows() { - assertThatIllegalStateException() - .isThrownBy(() -> ClientHttpRequestFactories.get(UnconfigurableClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofSeconds(60)))) - .withMessageContaining("suitable setConnectTimeout method"); - } - - @Test - void getOfUnconfigurableTypeWithReadTimeoutThrows() { - assertThatIllegalStateException() - .isThrownBy(() -> ClientHttpRequestFactories.get(UnconfigurableClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withReadTimeout(Duration.ofSeconds(60)))) - .withMessageContaining("suitable setReadTimeout method"); - } - - @Test - void getOfTypeWithDeprecatedConnectTimeoutThrowsWithConnectTimeout() { - assertThatIllegalStateException() - .isThrownBy(() -> ClientHttpRequestFactories.get(DeprecatedMethodsClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofSeconds(60)))) - .withMessageContaining("setConnectTimeout method marked as deprecated"); - } - - @Test - void getOfTypeWithDeprecatedReadTimeoutThrowsWithReadTimeout() { - assertThatIllegalStateException() - .isThrownBy(() -> ClientHttpRequestFactories.get(DeprecatedMethodsClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withReadTimeout(Duration.ofSeconds(60)))) - .withMessageContaining("setReadTimeout method marked as deprecated"); - } - - @Test - void connectTimeoutCanBeConfiguredOnAWrappedRequestFactory() { - SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); - BufferingClientHttpRequestFactory result = ClientHttpRequestFactories.get( - () -> new BufferingClientHttpRequestFactory(requestFactory), - ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofMillis(1234))); - assertThat(result).extracting("requestFactory").isSameAs(requestFactory); - assertThat(requestFactory).hasFieldOrPropertyWithValue("connectTimeout", 1234); - } - - @Test - void readTimeoutCanBeConfiguredOnAWrappedRequestFactory() { - SimpleClientHttpRequestFactory requestFactory = new SimpleClientHttpRequestFactory(); - BufferingClientHttpRequestFactory result = ClientHttpRequestFactories.get( - () -> new BufferingClientHttpRequestFactory(requestFactory), - ClientHttpRequestFactorySettings.DEFAULTS.withReadTimeout(Duration.ofMillis(1234))); - assertThat(result).extracting("requestFactory").isSameAs(requestFactory); - assertThat(requestFactory).hasFieldOrPropertyWithValue("readTimeout", 1234); - } - - @Test - void reflectiveShouldFavorDurationTimeoutMethods() { - IntAndDurationTimeoutsClientHttpRequestFactory requestFactory = ClientHttpRequestFactories.get( - IntAndDurationTimeoutsClientHttpRequestFactory.class, - ClientHttpRequestFactorySettings.DEFAULTS.withConnectTimeout(Duration.ofSeconds(1)) - .withReadTimeout(Duration.ofSeconds(2))); - assertThat((requestFactory).connectTimeout).isZero(); - assertThat((requestFactory).readTimeout).isZero(); - assertThat((requestFactory).connectTimeoutDuration).isEqualTo(Duration.ofSeconds(1)); - assertThat((requestFactory).readTimeoutDuration).isEqualTo(Duration.ofSeconds(2)); - } - - public static class TestClientHttpRequestFactory implements ClientHttpRequestFactory { - - private int connectTimeout; - - private int readTimeout; - - @Override - public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) { - throw new UnsupportedOperationException(); - } - - public void setConnectTimeout(int timeout) { - this.connectTimeout = timeout; - } - - public void setReadTimeout(int timeout) { - this.readTimeout = timeout; - } - - } - - public static class UnconfigurableClientHttpRequestFactory implements ClientHttpRequestFactory { - - @Override - public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) { - throw new UnsupportedOperationException(); - } - - } - - public static class DeprecatedMethodsClientHttpRequestFactory implements ClientHttpRequestFactory { - - @Override - public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) { - throw new UnsupportedOperationException(); - } - - @Deprecated(since = "3.0.0", forRemoval = false) - public void setConnectTimeout(int timeout) { - } - - @Deprecated(since = "3.0.0", forRemoval = false) - public void setReadTimeout(int timeout) { - } - - @Deprecated(since = "3.0.0", forRemoval = false) - public void setBufferRequestBody(boolean bufferRequestBody) { - } - - } - - public static class IntAndDurationTimeoutsClientHttpRequestFactory implements ClientHttpRequestFactory { - - private int readTimeout; - - private int connectTimeout; - - private Duration readTimeoutDuration; - - private Duration connectTimeoutDuration; - - @Override - public ClientHttpRequest createRequest(URI uri, HttpMethod httpMethod) { - throw new UnsupportedOperationException(); - } - - public void setConnectTimeout(int timeout) { - this.connectTimeout = timeout; - } - - public void setReadTimeout(int timeout) { - this.readTimeout = timeout; - } - - public void setConnectTimeout(Duration timeout) { - this.connectTimeoutDuration = timeout; - } - - public void setReadTimeout(Duration timeout) { - this.readTimeoutDuration = timeout; - } - - } - -} diff --git a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettingsTests.java b/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettingsTests.java deleted file mode 100644 index 2798f61da40..00000000000 --- a/spring-boot-project/spring-boot/src/test/java/org/springframework/boot/web/client/ClientHttpRequestFactorySettingsTests.java +++ /dev/null @@ -1,75 +0,0 @@ -/* - * Copyright 2012-present the original author or authors. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * https://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.springframework.boot.web.client; - -import java.time.Duration; - -import org.junit.jupiter.api.Test; - -import org.springframework.boot.ssl.SslBundle; - -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.mock; - -/** - * Tests for {@link ClientHttpRequestFactorySettings}. - * - * @author Phillip Webb - * @deprecated since 3.4.0 for removal in 4.0.0 - */ -@SuppressWarnings("removal") -@Deprecated(since = "3.4.0", forRemoval = true) -class ClientHttpRequestFactorySettingsTests { - - private static final Duration ONE_SECOND = Duration.ofSeconds(1); - - @Test - void defaultsHasNullValues() { - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS; - assertThat(settings.connectTimeout()).isNull(); - assertThat(settings.readTimeout()).isNull(); - assertThat(settings.sslBundle()).isNull(); - } - - @Test - void withConnectTimeoutReturnsInstanceWithUpdatedConnectionTimeout() { - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS - .withConnectTimeout(ONE_SECOND); - assertThat(settings.connectTimeout()).isEqualTo(ONE_SECOND); - assertThat(settings.readTimeout()).isNull(); - assertThat(settings.sslBundle()).isNull(); - } - - @Test - void withReadTimeoutReturnsInstanceWithUpdatedReadTimeout() { - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS - .withReadTimeout(ONE_SECOND); - assertThat(settings.connectTimeout()).isNull(); - assertThat(settings.readTimeout()).isEqualTo(ONE_SECOND); - assertThat(settings.sslBundle()).isNull(); - } - - @Test - void withSslBundleReturnsInstanceWithUpdatedSslBundle() { - SslBundle sslBundle = mock(SslBundle.class); - ClientHttpRequestFactorySettings settings = ClientHttpRequestFactorySettings.DEFAULTS.withSslBundle(sslBundle); - assertThat(settings.connectTimeout()).isNull(); - assertThat(settings.readTimeout()).isNull(); - assertThat(settings.sslBundle()).isSameAs(sslBundle); - } - -} diff --git a/spring-boot-system-tests/spring-boot-deployment-tests/src/systemTest/java/org/springframework/boot/deployment/AbstractDeploymentTests.java b/spring-boot-system-tests/spring-boot-deployment-tests/src/systemTest/java/org/springframework/boot/deployment/AbstractDeploymentTests.java index d277b12f221..c5f1ae8da9c 100644 --- a/spring-boot-system-tests/spring-boot-deployment-tests/src/systemTest/java/org/springframework/boot/deployment/AbstractDeploymentTests.java +++ b/spring-boot-system-tests/spring-boot-deployment-tests/src/systemTest/java/org/springframework/boot/deployment/AbstractDeploymentTests.java @@ -31,7 +31,7 @@ import org.testcontainers.containers.GenericContainer; import org.testcontainers.images.builder.ImageFromDockerfile; import org.testcontainers.images.builder.dockerfile.DockerfileBuilder; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/build.gradle b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/build.gradle index c13e4aa7279..68e1a0a8ff9 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/build.gradle +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/build.gradle @@ -27,7 +27,7 @@ configurations { dependencies { app project(path: ":spring-boot-project:spring-boot-dependencies", configuration: "mavenRepository") - app project(path: ":spring-boot-project:spring-boot-http-client", configuration: "mavenRepository") + app project(path: ":spring-boot-project:spring-boot-restclient", configuration: "mavenRepository") app project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter", configuration: "mavenRepository") app project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-actuator", configuration: "mavenRepository") app project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-tomcat", configuration: "mavenRepository") diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/build.gradle b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/build.gradle index 7b45ad5a197..05f7f230ea3 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/build.gradle +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/build.gradle @@ -33,6 +33,6 @@ repositories { dependencies { implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)) - implementation("org.springframework.boot:spring-boot-http-client") + implementation("org.springframework.boot:spring-boot-restclient") implementation("org.springframework.boot:spring-boot-starter-web") } diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/src/main/java/org/springframework/boot/sni/client/SniClientApplication.java b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/src/main/java/org/springframework/boot/sni/client/SniClientApplication.java index b8ed860901e..fad9d10be95 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/src/main/java/org/springframework/boot/sni/client/SniClientApplication.java +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-sni-tests/spring-boot-sni-client-app/src/main/java/org/springframework/boot/sni/client/SniClientApplication.java @@ -22,7 +22,7 @@ import org.springframework.boot.CommandLineRunner; import org.springframework.boot.WebApplicationType; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.http.client.rest.autoconfigure.RestClientSsl; +import org.springframework.boot.restclient.autoconfigure.RestClientSsl; import org.springframework.context.annotation.Bean; import org.springframework.http.ResponseEntity; import org.springframework.util.Assert; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/test/java/smoketest/actuator/customsecurity/CorsSampleActuatorApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/test/java/smoketest/actuator/customsecurity/CorsSampleActuatorApplicationTests.java index 61f420f9fb1..0b3c346ff1e 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/test/java/smoketest/actuator/customsecurity/CorsSampleActuatorApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/src/test/java/smoketest/actuator/customsecurity/CorsSampleActuatorApplicationTests.java @@ -23,8 +23,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.LocalHostUriTemplateHandler; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.context.ApplicationContext; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-extension/src/test/java/smoketest/actuator/extension/SampleActuatorExtensionApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-extension/src/test/java/smoketest/actuator/extension/SampleActuatorExtensionApplicationTests.java index 3c1580f16be..713f7ef33d0 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-extension/src/test/java/smoketest/actuator/extension/SampleActuatorExtensionApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-extension/src/test/java/smoketest/actuator/extension/SampleActuatorExtensionApplicationTests.java @@ -21,9 +21,9 @@ import java.util.Map; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.boot.test.context.SpringBootTest.WebEnvironment; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.LocalHostUriTemplateHandler; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.core.env.Environment; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/src/test/java/smoketest/actuator/CorsSampleActuatorApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/src/test/java/smoketest/actuator/CorsSampleActuatorApplicationTests.java index 405e89277e5..1fc85405f7d 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/src/test/java/smoketest/actuator/CorsSampleActuatorApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/src/test/java/smoketest/actuator/CorsSampleActuatorApplicationTests.java @@ -23,8 +23,8 @@ import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.client.LocalHostUriTemplateHandler; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.context.ApplicationContext; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-jdbc/src/test/java/smoketest/session/SampleSessionJdbcApplicationTests.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-jdbc/src/test/java/smoketest/session/SampleSessionJdbcApplicationTests.java index 7802742e9f3..7db4be4524f 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-jdbc/src/test/java/smoketest/session/SampleSessionJdbcApplicationTests.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-jdbc/src/test/java/smoketest/session/SampleSessionJdbcApplicationTests.java @@ -27,8 +27,8 @@ import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.boot.http.client.ClientHttpRequestFactorySettings; import org.springframework.boot.http.client.HttpRedirects; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.boot.test.context.SpringBootTest; -import org.springframework.boot.web.client.RestTemplateBuilder; import org.springframework.boot.web.server.test.LocalServerPort; import org.springframework.boot.web.server.test.client.TestRestTemplate; import org.springframework.core.ParameterizedTypeReference; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle index ba85f57e5e9..d837536eec3 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle @@ -21,6 +21,7 @@ plugins { description = "Spring Boot Test smoke test" dependencies { + implementation(project(":spring-boot-project:spring-boot-restclient")) implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-jpa")) implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/src/main/java/smoketest/test/service/RemoteVehicleDetailsService.java b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/src/main/java/smoketest/test/service/RemoteVehicleDetailsService.java index 3fa8152f014..23c58264d31 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/src/main/java/smoketest/test/service/RemoteVehicleDetailsService.java +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/src/main/java/smoketest/test/service/RemoteVehicleDetailsService.java @@ -20,7 +20,7 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import smoketest.test.domain.VehicleIdentificationNumber; -import org.springframework.boot.web.client.RestTemplateBuilder; +import org.springframework.boot.restclient.RestTemplateBuilder; import org.springframework.http.HttpStatus; import org.springframework.stereotype.Service; import org.springframework.util.Assert; diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-testng/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-testng/build.gradle index dbaf2aea466..034b50b0ecf 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-testng/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-testng/build.gradle @@ -27,6 +27,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-tomcat")) implementation(project(":spring-boot-project:spring-boot-webmvc")) + testImplementation(project(":spring-boot-project:spring-boot-restclient")) testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-web-server-test")) testImplementation("org.assertj:assertj-core")