mirror of
https://github.com/spring-projects/spring-framework
synced 2026-06-08 17:33:33 +00:00
Improve converter config in RestClient.Builder
Internally maintain a chain of HttpMessageConverters.ClientBuilder consumers in addition to the List of converters. List based methods apply to the list. HttpMessageConverters based methods are composed into a Consumer. At build() time prepare a single HttpMessageConverters.ClientBuilder. Insert list based converters first. Apply HttpMessageConverters consumers after that. Deprecate both List methods. Eventually, HttpMessageConverters should be the main mechanism. In the mean time we layer them as described. Closes gh-35578
This commit is contained in:
@@ -112,6 +112,7 @@ public class RestClientBuilderTests {
|
||||
assertThat(fieldValue("baseUrl", defaultBuilder)).isEqualTo(baseUrl.toString());
|
||||
}
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Test
|
||||
void messageConvertersList() {
|
||||
StringHttpMessageConverter stringConverter = new StringHttpMessageConverter();
|
||||
@@ -126,6 +127,7 @@ public class RestClientBuilderTests {
|
||||
.containsExactly(stringConverter);
|
||||
}
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Test
|
||||
void messageConvertersListEmpty() {
|
||||
RestClient.Builder builder = RestClient.builder();
|
||||
@@ -133,6 +135,7 @@ public class RestClientBuilderTests {
|
||||
assertThatIllegalArgumentException().isThrownBy(() -> builder.messageConverters(converters));
|
||||
}
|
||||
|
||||
@SuppressWarnings("removal")
|
||||
@Test
|
||||
void messageConvertersListWithNullElement() {
|
||||
RestClient.Builder builder = RestClient.builder();
|
||||
@@ -147,9 +150,9 @@ public class RestClientBuilderTests {
|
||||
RestClient.Builder builder = RestClient.builder();
|
||||
builder.configureMessageConverters(clientBuilder -> clientBuilder.stringMessageConverter(stringConverter));
|
||||
assertThat(builder).isInstanceOf(DefaultRestClientBuilder.class);
|
||||
DefaultRestClientBuilder defaultBuilder = (DefaultRestClientBuilder) builder;
|
||||
DefaultRestClient restClient = (DefaultRestClient) builder.build();
|
||||
|
||||
assertThat(fieldValue("messageConverters", defaultBuilder))
|
||||
assertThat(fieldValue("messageConverters", restClient))
|
||||
.asInstanceOf(InstanceOfAssertFactories.LIST)
|
||||
.hasExactlyElementsOfTypes(StringHttpMessageConverter.class, AllEncompassingFormHttpMessageConverter.class);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user