Refine Kotlin serialization converters/codecs conditions
This commit is a follow-up of 34410 to refine the activation conditions of Kotlin serialization converters/codecs. Closes gh-34438
This commit is contained in:
@@ -411,10 +411,6 @@ class BaseDefaultCodecs implements CodecConfigurer.DefaultCodecs, CodecConfigure
|
|||||||
addCodec(this.typedReaders, new DecoderHttpMessageReader<>(this.protobufDecoder != null ?
|
addCodec(this.typedReaders, new DecoderHttpMessageReader<>(this.protobufDecoder != null ?
|
||||||
(ProtobufDecoder) this.protobufDecoder : new ProtobufDecoder()));
|
(ProtobufDecoder) this.protobufDecoder : new ProtobufDecoder()));
|
||||||
}
|
}
|
||||||
else if (kotlinSerializationProtobufPresent) {
|
|
||||||
addCodec(this.typedReaders, new DecoderHttpMessageReader<>(this.kotlinSerializationProtobufDecoder != null ?
|
|
||||||
(KotlinSerializationProtobufDecoder) this.kotlinSerializationProtobufDecoder : new KotlinSerializationProtobufDecoder()));
|
|
||||||
}
|
|
||||||
addCodec(this.typedReaders, new FormHttpMessageReader());
|
addCodec(this.typedReaders, new FormHttpMessageReader());
|
||||||
if (this.multipartReader != null) {
|
if (this.multipartReader != null) {
|
||||||
addCodec(this.typedReaders, this.multipartReader);
|
addCodec(this.typedReaders, this.multipartReader);
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2002-2024 the original author or authors.
|
* Copyright 2002-2025 the original author or authors.
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -87,9 +87,6 @@ public class AllEncompassingFormHttpMessageConverter extends FormHttpMessageConv
|
|||||||
addPartConverter(new Jaxb2RootElementHttpMessageConverter());
|
addPartConverter(new Jaxb2RootElementHttpMessageConverter());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kotlinSerializationJsonPresent) {
|
|
||||||
addPartConverter(new KotlinSerializationJsonHttpMessageConverter());
|
|
||||||
}
|
|
||||||
if (jackson2Present) {
|
if (jackson2Present) {
|
||||||
addPartConverter(new MappingJackson2HttpMessageConverter());
|
addPartConverter(new MappingJackson2HttpMessageConverter());
|
||||||
}
|
}
|
||||||
@@ -99,6 +96,9 @@ public class AllEncompassingFormHttpMessageConverter extends FormHttpMessageConv
|
|||||||
else if (jsonbPresent) {
|
else if (jsonbPresent) {
|
||||||
addPartConverter(new JsonbHttpMessageConverter());
|
addPartConverter(new JsonbHttpMessageConverter());
|
||||||
}
|
}
|
||||||
|
else if (kotlinSerializationJsonPresent) {
|
||||||
|
addPartConverter(new KotlinSerializationJsonHttpMessageConverter());
|
||||||
|
}
|
||||||
|
|
||||||
if (jackson2XmlPresent) {
|
if (jackson2XmlPresent) {
|
||||||
addPartConverter(new MappingJackson2XmlHttpMessageConverter());
|
addPartConverter(new MappingJackson2XmlHttpMessageConverter());
|
||||||
@@ -111,15 +111,14 @@ public class AllEncompassingFormHttpMessageConverter extends FormHttpMessageConv
|
|||||||
if (jackson2CborPresent) {
|
if (jackson2CborPresent) {
|
||||||
addPartConverter(new MappingJackson2CborHttpMessageConverter());
|
addPartConverter(new MappingJackson2CborHttpMessageConverter());
|
||||||
}
|
}
|
||||||
|
else if (kotlinSerializationCborPresent) {
|
||||||
|
addPartConverter(new KotlinSerializationCborHttpMessageConverter());
|
||||||
|
}
|
||||||
|
|
||||||
if (jackson2YamlPresent) {
|
if (jackson2YamlPresent) {
|
||||||
addPartConverter(new MappingJackson2YamlHttpMessageConverter());
|
addPartConverter(new MappingJackson2YamlHttpMessageConverter());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kotlinSerializationCborPresent) {
|
|
||||||
addPartConverter(new KotlinSerializationCborHttpMessageConverter());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (kotlinSerializationProtobufPresent) {
|
if (kotlinSerializationProtobufPresent) {
|
||||||
addPartConverter(new KotlinSerializationProtobufHttpMessageConverter());
|
addPartConverter(new KotlinSerializationProtobufHttpMessageConverter());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -419,9 +419,6 @@ final class DefaultRestClientBuilder implements RestClient.Builder {
|
|||||||
this.messageConverters.add(new ResourceHttpMessageConverter(false));
|
this.messageConverters.add(new ResourceHttpMessageConverter(false));
|
||||||
this.messageConverters.add(new AllEncompassingFormHttpMessageConverter());
|
this.messageConverters.add(new AllEncompassingFormHttpMessageConverter());
|
||||||
|
|
||||||
if (kotlinSerializationJsonPresent) {
|
|
||||||
this.messageConverters.add(new KotlinSerializationJsonHttpMessageConverter());
|
|
||||||
}
|
|
||||||
if (jackson2Present) {
|
if (jackson2Present) {
|
||||||
this.messageConverters.add(new MappingJackson2HttpMessageConverter());
|
this.messageConverters.add(new MappingJackson2HttpMessageConverter());
|
||||||
}
|
}
|
||||||
@@ -431,6 +428,9 @@ final class DefaultRestClientBuilder implements RestClient.Builder {
|
|||||||
else if (jsonbPresent) {
|
else if (jsonbPresent) {
|
||||||
this.messageConverters.add(new JsonbHttpMessageConverter());
|
this.messageConverters.add(new JsonbHttpMessageConverter());
|
||||||
}
|
}
|
||||||
|
else if (kotlinSerializationJsonPresent) {
|
||||||
|
this.messageConverters.add(new KotlinSerializationJsonHttpMessageConverter());
|
||||||
|
}
|
||||||
if (jackson2SmilePresent) {
|
if (jackson2SmilePresent) {
|
||||||
this.messageConverters.add(new MappingJackson2SmileHttpMessageConverter());
|
this.messageConverters.add(new MappingJackson2SmileHttpMessageConverter());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -204,9 +204,6 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
|
|||||||
this.messageConverters.add(new KotlinSerializationProtobufHttpMessageConverter());
|
this.messageConverters.add(new KotlinSerializationProtobufHttpMessageConverter());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kotlinSerializationJsonPresent) {
|
|
||||||
this.messageConverters.add(new KotlinSerializationJsonHttpMessageConverter());
|
|
||||||
}
|
|
||||||
if (jackson2Present) {
|
if (jackson2Present) {
|
||||||
this.messageConverters.add(new MappingJackson2HttpMessageConverter());
|
this.messageConverters.add(new MappingJackson2HttpMessageConverter());
|
||||||
}
|
}
|
||||||
@@ -216,6 +213,9 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
|
|||||||
else if (jsonbPresent) {
|
else if (jsonbPresent) {
|
||||||
this.messageConverters.add(new JsonbHttpMessageConverter());
|
this.messageConverters.add(new JsonbHttpMessageConverter());
|
||||||
}
|
}
|
||||||
|
else if (kotlinSerializationJsonPresent) {
|
||||||
|
this.messageConverters.add(new KotlinSerializationJsonHttpMessageConverter());
|
||||||
|
}
|
||||||
|
|
||||||
if (jackson2SmilePresent) {
|
if (jackson2SmilePresent) {
|
||||||
this.messageConverters.add(new MappingJackson2SmileHttpMessageConverter());
|
this.messageConverters.add(new MappingJackson2SmileHttpMessageConverter());
|
||||||
|
|||||||
@@ -108,14 +108,16 @@ class RestTemplateTests {
|
|||||||
template.setErrorHandler(errorHandler);
|
template.setErrorHandler(errorHandler);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test // gh-29008
|
@Test
|
||||||
void defaultMessageConvertersWithKotlinSerialization() {
|
void defaultMessageConvertersWithoutKotlinSerialization() {
|
||||||
RestTemplate restTemplate = new RestTemplate();
|
RestTemplate restTemplate = new RestTemplate();
|
||||||
List<HttpMessageConverter<?>> httpMessageConverters = restTemplate.getMessageConverters();
|
List<HttpMessageConverter<?>> httpMessageConverters = restTemplate.getMessageConverters();
|
||||||
assertThat(httpMessageConverters).extracting("class").containsOnlyOnce(
|
assertThat(httpMessageConverters).extracting("class").containsOnlyOnce(
|
||||||
KotlinSerializationJsonHttpMessageConverter.class,
|
|
||||||
MappingJackson2HttpMessageConverter.class
|
MappingJackson2HttpMessageConverter.class
|
||||||
);
|
);
|
||||||
|
assertThat(httpMessageConverters).extracting("class").doesNotContain(
|
||||||
|
KotlinSerializationJsonHttpMessageConverter.class
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
|||||||
@@ -891,9 +891,6 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv
|
|||||||
messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
|
messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kotlinSerializationCborPresent) {
|
|
||||||
messageConverters.add(new KotlinSerializationCborHttpMessageConverter());
|
|
||||||
}
|
|
||||||
if (kotlinSerializationProtobufPresent) {
|
if (kotlinSerializationProtobufPresent) {
|
||||||
messageConverters.add(new KotlinSerializationProtobufHttpMessageConverter());
|
messageConverters.add(new KotlinSerializationProtobufHttpMessageConverter());
|
||||||
}
|
}
|
||||||
@@ -929,6 +926,9 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv
|
|||||||
}
|
}
|
||||||
messageConverters.add(new MappingJackson2CborHttpMessageConverter(builder.build()));
|
messageConverters.add(new MappingJackson2CborHttpMessageConverter(builder.build()));
|
||||||
}
|
}
|
||||||
|
else if (kotlinSerializationCborPresent) {
|
||||||
|
messageConverters.add(new KotlinSerializationCborHttpMessageConverter());
|
||||||
|
}
|
||||||
if (jackson2YamlPresent) {
|
if (jackson2YamlPresent) {
|
||||||
Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.yaml();
|
Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.yaml();
|
||||||
if (this.applicationContext != null) {
|
if (this.applicationContext != null) {
|
||||||
|
|||||||
@@ -172,7 +172,7 @@ class WebMvcConfigurationSupportTests {
|
|||||||
ApplicationContext context = initContext(WebConfig.class);
|
ApplicationContext context = initContext(WebConfig.class);
|
||||||
RequestMappingHandlerAdapter adapter = context.getBean(RequestMappingHandlerAdapter.class);
|
RequestMappingHandlerAdapter adapter = context.getBean(RequestMappingHandlerAdapter.class);
|
||||||
List<HttpMessageConverter<?>> converters = adapter.getMessageConverters();
|
List<HttpMessageConverter<?>> converters = adapter.getMessageConverters();
|
||||||
assertThat(converters).hasSizeGreaterThanOrEqualTo(14);
|
assertThat(converters).hasSizeGreaterThanOrEqualTo(13);
|
||||||
converters.stream()
|
converters.stream()
|
||||||
.filter(AbstractJackson2HttpMessageConverter.class::isInstance)
|
.filter(AbstractJackson2HttpMessageConverter.class::isInstance)
|
||||||
.forEach(converter -> {
|
.forEach(converter -> {
|
||||||
|
|||||||
Reference in New Issue
Block a user