Skip to content

Commit

Permalink
Refine Kotlin serialization converters/codecs conditions
Browse files Browse the repository at this point in the history
This commit is a follow-up of 34410 to refine the activation conditions
of Kotlin serialization converters/codecs.

Closes gh-34438
  • Loading branch information
sdeleuze committed Feb 17, 2025
1 parent eae0963 commit b8d9dee
Show file tree
Hide file tree
Showing 7 changed files with 22 additions and 25 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -411,10 +411,6 @@ protected void initTypedReaders() {
addCodec(this.typedReaders, new DecoderHttpMessageReader<>(this.protobufDecoder != null ?
(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());
if (this.multipartReader != null) {
addCodec(this.typedReaders, this.multipartReader);
Expand Down
Original file line number Diff line number Diff line change
@@ -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");
* you may not use this file except in compliance with the License.
Expand Down Expand Up @@ -87,9 +87,6 @@ public AllEncompassingFormHttpMessageConverter() {
addPartConverter(new Jaxb2RootElementHttpMessageConverter());
}

if (kotlinSerializationJsonPresent) {
addPartConverter(new KotlinSerializationJsonHttpMessageConverter());
}
if (jackson2Present) {
addPartConverter(new MappingJackson2HttpMessageConverter());
}
Expand All @@ -99,6 +96,9 @@ else if (gsonPresent) {
else if (jsonbPresent) {
addPartConverter(new JsonbHttpMessageConverter());
}
else if (kotlinSerializationJsonPresent) {
addPartConverter(new KotlinSerializationJsonHttpMessageConverter());
}

if (jackson2XmlPresent) {
addPartConverter(new MappingJackson2XmlHttpMessageConverter());
Expand All @@ -111,15 +111,14 @@ else if (jsonbPresent) {
if (jackson2CborPresent) {
addPartConverter(new MappingJackson2CborHttpMessageConverter());
}
else if (kotlinSerializationCborPresent) {
addPartConverter(new KotlinSerializationCborHttpMessageConverter());
}

if (jackson2YamlPresent) {
addPartConverter(new MappingJackson2YamlHttpMessageConverter());
}

if (kotlinSerializationCborPresent) {
addPartConverter(new KotlinSerializationCborHttpMessageConverter());
}

if (kotlinSerializationProtobufPresent) {
addPartConverter(new KotlinSerializationProtobufHttpMessageConverter());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -419,9 +419,6 @@ private List<HttpMessageConverter<?>> initMessageConverters() {
this.messageConverters.add(new ResourceHttpMessageConverter(false));
this.messageConverters.add(new AllEncompassingFormHttpMessageConverter());

if (kotlinSerializationJsonPresent) {
this.messageConverters.add(new KotlinSerializationJsonHttpMessageConverter());
}
if (jackson2Present) {
this.messageConverters.add(new MappingJackson2HttpMessageConverter());
}
Expand All @@ -431,6 +428,9 @@ else if (gsonPresent) {
else if (jsonbPresent) {
this.messageConverters.add(new JsonbHttpMessageConverter());
}
else if (kotlinSerializationJsonPresent) {
this.messageConverters.add(new KotlinSerializationJsonHttpMessageConverter());
}
if (jackson2SmilePresent) {
this.messageConverters.add(new MappingJackson2SmileHttpMessageConverter());
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -204,9 +204,6 @@ else if (jaxb2Present) {
this.messageConverters.add(new KotlinSerializationProtobufHttpMessageConverter());
}

if (kotlinSerializationJsonPresent) {
this.messageConverters.add(new KotlinSerializationJsonHttpMessageConverter());
}
if (jackson2Present) {
this.messageConverters.add(new MappingJackson2HttpMessageConverter());
}
Expand All @@ -216,6 +213,9 @@ else if (gsonPresent) {
else if (jsonbPresent) {
this.messageConverters.add(new JsonbHttpMessageConverter());
}
else if (kotlinSerializationJsonPresent) {
this.messageConverters.add(new KotlinSerializationJsonHttpMessageConverter());
}

if (jackson2SmilePresent) {
this.messageConverters.add(new MappingJackson2SmileHttpMessageConverter());
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -108,14 +108,16 @@ void setup() {
template.setErrorHandler(errorHandler);
}

@Test // gh-29008
void defaultMessageConvertersWithKotlinSerialization() {
@Test
void defaultMessageConvertersWithoutKotlinSerialization() {
RestTemplate restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> httpMessageConverters = restTemplate.getMessageConverters();
assertThat(httpMessageConverters).extracting("class").containsOnlyOnce(
KotlinSerializationJsonHttpMessageConverter.class,
MappingJackson2HttpMessageConverter.class
);
assertThat(httpMessageConverters).extracting("class").doesNotContain(
KotlinSerializationJsonHttpMessageConverter.class
);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -891,9 +891,6 @@ else if (jaxb2Present) {
messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
}

if (kotlinSerializationCborPresent) {
messageConverters.add(new KotlinSerializationCborHttpMessageConverter());
}
if (kotlinSerializationProtobufPresent) {
messageConverters.add(new KotlinSerializationProtobufHttpMessageConverter());
}
Expand Down Expand Up @@ -929,6 +926,9 @@ else if (kotlinSerializationJsonPresent) {
}
messageConverters.add(new MappingJackson2CborHttpMessageConverter(builder.build()));
}
else if (kotlinSerializationCborPresent) {
messageConverters.add(new KotlinSerializationCborHttpMessageConverter());
}
if (jackson2YamlPresent) {
Jackson2ObjectMapperBuilder builder = Jackson2ObjectMapperBuilder.yaml();
if (this.applicationContext != null) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -172,7 +172,7 @@ void requestMappingHandlerAdapter() {
ApplicationContext context = initContext(WebConfig.class);
RequestMappingHandlerAdapter adapter = context.getBean(RequestMappingHandlerAdapter.class);
List<HttpMessageConverter<?>> converters = adapter.getMessageConverters();
assertThat(converters).hasSizeGreaterThanOrEqualTo(14);
assertThat(converters).hasSizeGreaterThanOrEqualTo(13);
converters.stream()
.filter(AbstractJackson2HttpMessageConverter.class::isInstance)
.forEach(converter -> {
Expand Down

0 comments on commit b8d9dee

Please sign in to comment.