Skip to content

Commit 6a55d7b

Browse files
committed
Polishing contribition
Closes gh-46546
1 parent c7621bb commit 6a55d7b

File tree

9 files changed

+63
-45
lines changed

9 files changed

+63
-45
lines changed

buildSrc/src/main/java/org/springframework/boot/build/context/properties/DocumentConfigurationProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ private void mailPrefixes(Config config) {
118118
private void jsonPrefixes(Config config) {
119119
config.accept("spring.jackson");
120120
config.accept("spring.gson");
121-
config.accept("spring.kotlin-serialization");
121+
config.accept("spring.kotlin.serialization");
122122
}
123123

124124
private void dataPrefixes(Config config) {

documentation/spring-boot-docs/src/docs/antora/modules/reference/pages/features/json.adoc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,4 @@ The preferred JSON-B implementation is Eclipse Yasson for which dependency manag
7777

7878
Auto-configuration for Kotlin Serialization is provided.
7979
When `kotlinx-serialization-json` is on the classpath a https://kotlinlang.org/api/kotlinx.serialization/kotlinx-serialization-json/kotlinx.serialization.json/-json/[Json] bean is automatically configured.
80-
Several `+spring.kotlin-serialization.*+` configuration properties are provided for customizing the configuration.
80+
Several `+spring.kotlin.serialization.*+` configuration properties are provided for customizing the configuration.

module/spring-boot-http-converter/src/main/java/org/springframework/boot/http/converter/autoconfigure/GsonHttpMessageConvertersConfiguration.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class GsonHttpMessageConvertersConfiguration {
4242

4343
@Configuration(proxyBeanMethods = false)
4444
@ConditionalOnBean(Gson.class)
45-
@Conditional(PreferGsonOrJacksonAndJsonbUnavailableCondition.class)
45+
@Conditional(PreferGsonOrOtherJsonLibraryUnavailableCondition.class)
4646
static class GsonHttpMessageConverterConfiguration {
4747

4848
@Bean
@@ -55,9 +55,9 @@ GsonHttpMessageConverter gsonHttpMessageConverter(Gson gson) {
5555

5656
}
5757

58-
private static class PreferGsonOrJacksonAndJsonbUnavailableCondition extends AnyNestedCondition {
58+
private static class PreferGsonOrOtherJsonLibraryUnavailableCondition extends AnyNestedCondition {
5959

60-
PreferGsonOrJacksonAndJsonbUnavailableCondition() {
60+
PreferGsonOrOtherJsonLibraryUnavailableCondition() {
6161
super(ConfigurationPhase.REGISTER_BEAN);
6262
}
6363

@@ -67,16 +67,16 @@ static class GsonPreferred {
6767

6868
}
6969

70-
@Conditional(JacksonAndJsonbUnavailableCondition.class)
70+
@Conditional(OtherJsonLibrariesUnavailableCondition.class)
7171
static class JacksonJsonbUnavailable {
7272

7373
}
7474

7575
}
7676

77-
private static class JacksonAndJsonbUnavailableCondition extends NoneNestedConditions {
77+
private static class OtherJsonLibrariesUnavailableCondition extends NoneNestedConditions {
7878

79-
JacksonAndJsonbUnavailableCondition() {
79+
OtherJsonLibrariesUnavailableCondition() {
8080
super(ConfigurationPhase.REGISTER_BEAN);
8181
}
8282

@@ -93,7 +93,7 @@ static class JsonbPreferred {
9393

9494
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY,
9595
havingValue = "kotlin-serialization")
96-
static class KotlinxSerialization {
96+
static class KotlinSerializationPreferred {
9797

9898
}
9999

module/spring-boot-http-converter/src/main/java/org/springframework/boot/http/converter/autoconfigure/JsonbHttpMessageConvertersConfiguration.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ class JsonbHttpMessageConvertersConfiguration {
4242

4343
@Configuration(proxyBeanMethods = false)
4444
@ConditionalOnBean(Jsonb.class)
45-
@Conditional(PreferJsonbOrMissingJacksonAndGsonCondition.class)
45+
@Conditional(PreferJsonbOrOtherJsonLibrariesMissingCondition.class)
4646
static class JsonbHttpMessageConverterConfiguration {
4747

4848
@Bean
@@ -55,9 +55,9 @@ JsonbHttpMessageConverter jsonbHttpMessageConverter(Jsonb jsonb) {
5555

5656
}
5757

58-
private static class PreferJsonbOrMissingJacksonAndGsonCondition extends AnyNestedCondition {
58+
private static class PreferJsonbOrOtherJsonLibrariesMissingCondition extends AnyNestedCondition {
5959

60-
PreferJsonbOrMissingJacksonAndGsonCondition() {
60+
PreferJsonbOrOtherJsonLibrariesMissingCondition() {
6161
super(ConfigurationPhase.REGISTER_BEAN);
6262
}
6363

@@ -67,16 +67,16 @@ static class JsonbPreferred {
6767

6868
}
6969

70-
@Conditional(JacksonAndGsonAndKotlinSerializationMissingCondition.class)
71-
static class JacksonAndGsonAndKotlinSerializationMissing {
70+
@Conditional(OtherJsonLibrariesMissingMissingCondition.class)
71+
static class OtherJsonLibrariesMissingMissing {
7272

7373
}
7474

7575
}
7676

77-
private static class JacksonAndGsonAndKotlinSerializationMissingCondition extends NoneNestedConditions {
77+
private static class OtherJsonLibrariesMissingMissingCondition extends NoneNestedConditions {
7878

79-
JacksonAndGsonAndKotlinSerializationMissingCondition() {
79+
OtherJsonLibrariesMissingMissingCondition() {
8080
super(ConfigurationPhase.REGISTER_BEAN);
8181
}
8282

@@ -92,7 +92,7 @@ static class GsonAvailable {
9292

9393
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY,
9494
havingValue = "kotlin-serialization")
95-
static class KotlinxPreferred {
95+
static class KotlinPreferred {
9696

9797
}
9898

module/spring-boot-http-converter/src/main/java/org/springframework/boot/http/converter/autoconfigure/KotlinSerializationHttpMessageConvertersConfiguration.java

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,17 @@
1818

1919
import kotlinx.serialization.json.Json;
2020

21+
import org.springframework.boot.autoconfigure.condition.AnyNestedCondition;
2122
import org.springframework.boot.autoconfigure.condition.ConditionalOnBean;
2223
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2324
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2425
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
2526
import org.springframework.context.annotation.Bean;
27+
import org.springframework.context.annotation.Conditional;
2628
import org.springframework.context.annotation.Configuration;
29+
import org.springframework.http.converter.json.GsonHttpMessageConverter;
30+
import org.springframework.http.converter.json.JacksonJsonHttpMessageConverter;
31+
import org.springframework.http.converter.json.JsonbHttpMessageConverter;
2732
import org.springframework.http.converter.json.KotlinSerializationJsonHttpMessageConverter;
2833

2934
/**
@@ -37,8 +42,7 @@ class KotlinSerializationHttpMessageConvertersConfiguration {
3742

3843
@Configuration(proxyBeanMethods = false)
3944
@ConditionalOnBean(Json.class)
40-
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY,
41-
havingValue = "kotlin-serialization")
45+
@Conditional(PreferKotlinSerializationOrOtherJsonLibrariesUnavailableCondition.class)
4246
static class KotlinSerializationHttpMessageConverterConfiguration {
4347

4448
@Bean
@@ -49,4 +53,24 @@ KotlinSerializationJsonHttpMessageConverter kotlinSerializationJsonHttpMessageCo
4953

5054
}
5155

56+
private static class PreferKotlinSerializationOrOtherJsonLibrariesUnavailableCondition extends AnyNestedCondition {
57+
58+
PreferKotlinSerializationOrOtherJsonLibrariesUnavailableCondition() {
59+
super(ConfigurationPhase.REGISTER_BEAN);
60+
}
61+
62+
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY,
63+
havingValue = "kotlin-serialization")
64+
static class KotlinSerializationPreferred {
65+
66+
}
67+
68+
@ConditionalOnMissingBean({ JacksonJsonHttpMessageConverter.class, JsonbHttpMessageConverter.class,
69+
GsonHttpMessageConverter.class })
70+
static class OtherJsonLibrariesUnavailable {
71+
72+
}
73+
74+
}
75+
5276
}

module/spring-boot-kotlin-serialization/build.gradle

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,3 @@ dependencies {
4040
testRuntimeOnly("ch.qos.logback:logback-classic")
4141
testRuntimeOnly("org.jetbrains.kotlin:kotlin-reflect")
4242
}
43-
44-
tasks.named("checkAutoConfigurationClasses", CheckAutoConfigurationClasses.class) {
45-
doFirst {
46-
classpath = classpath.filter { !it.path.contains('/build/classes/kotlin/main') }
47-
}
48-
}

module/spring-boot-kotlin-serialization/src/main/java/org/springframework/boot/kotlin/serialization/autoconfigure/KotlinSerializationAutoConfiguration.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,7 @@ public int getOrder() {
7979
@Override
8080
public void customize(JsonBuilder jsonBuilder) {
8181
KotlinSerializationProperties properties = this.properties;
82-
PropertyMapper map = PropertyMapper.get().alwaysApplyingWhenNonNull();
82+
PropertyMapper map = PropertyMapper.get();
8383
map.from(properties::getNamingStrategy).to(setNamingStrategy(jsonBuilder));
8484
map.from(properties::getPrettyPrint).to(jsonBuilder::setPrettyPrint);
8585
map.from(properties::getLenient).to(jsonBuilder::setLenient);

module/spring-boot-kotlin-serialization/src/main/java/org/springframework/boot/kotlin/serialization/autoconfigure/KotlinSerializationProperties.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@
2828
* @author Dmitry Sulman
2929
* @since 4.0.0
3030
*/
31-
@ConfigurationProperties("spring.kotlin-serialization")
31+
@ConfigurationProperties("spring.kotlin.serialization")
3232
public class KotlinSerializationProperties {
3333

3434
/**

module/spring-boot-kotlin-serialization/src/test/kotlin/org/springframework/boot/kotlin/serialization/autoconfigure/KotlinSerializationAutoConfigurationTests.kt

Lines changed: 18 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,14 @@ class KotlinSerializationAutoConfigurationTests {
4242
.withConfiguration(AutoConfigurations.of(KotlinSerializationAutoConfiguration::class.java))
4343

4444
@Test
45-
fun shouldSupplyBean() {
45+
fun shouldSupplyJsonBean() {
4646
this.contextRunner.run { context ->
4747
assertThat(context).hasSingleBean(Json::class.java)
4848
}
4949
}
5050

5151
@Test
52-
fun shouldNotSupplyBean() {
52+
fun shouldNotSupplyJsonBean() {
5353
this.contextRunner
5454
.withClassLoader(FilteredClassLoader(Json::class.java))
5555
.run { context ->
@@ -90,7 +90,7 @@ class KotlinSerializationAutoConfigurationTests {
9090
@Test
9191
fun serializeSnakeCase() {
9292
this.contextRunner
93-
.withPropertyValues("spring.kotlin-serialization.naming-strategy=snake_case")
93+
.withPropertyValues("spring.kotlin.serialization.naming-strategy=snake_case")
9494
.run { context ->
9595
val json = context.getBean(Json::class.java)
9696
assertThat(json.encodeToString(DataObject("hello")))
@@ -101,7 +101,7 @@ class KotlinSerializationAutoConfigurationTests {
101101
@Test
102102
fun serializeKebabCase() {
103103
this.contextRunner
104-
.withPropertyValues("spring.kotlin-serialization.naming-strategy=kebab_case")
104+
.withPropertyValues("spring.kotlin.serialization.naming-strategy=kebab_case")
105105
.run { context ->
106106
val json = context.getBean(Json::class.java)
107107
assertThat(json.encodeToString(DataObject("hello")))
@@ -112,7 +112,7 @@ class KotlinSerializationAutoConfigurationTests {
112112
@Test
113113
fun serializePrettyPrint() {
114114
this.contextRunner
115-
.withPropertyValues("spring.kotlin-serialization.pretty-print=true")
115+
.withPropertyValues("spring.kotlin.serialization.pretty-print=true")
116116
.run { context ->
117117
val json = context.getBean(Json::class.java)
118118
assertThat(json.encodeToString(DataObject("hello")))
@@ -130,7 +130,7 @@ class KotlinSerializationAutoConfigurationTests {
130130
@Suppress("JsonStandardCompliance")
131131
fun deserializeLenient() {
132132
this.contextRunner
133-
.withPropertyValues("spring.kotlin-serialization.lenient=true")
133+
.withPropertyValues("spring.kotlin.serialization.lenient=true")
134134
.run { context ->
135135
val json = context.getBean(Json::class.java)
136136
assertThat(json.decodeFromString<DataObject>("""{"stringField":hello}"""))
@@ -141,7 +141,7 @@ class KotlinSerializationAutoConfigurationTests {
141141
@Test
142142
fun deserializeIgnoreUnknownKeys() {
143143
this.contextRunner
144-
.withPropertyValues("spring.kotlin-serialization.ignore-unknown-keys=true")
144+
.withPropertyValues("spring.kotlin.serialization.ignore-unknown-keys=true")
145145
.run { context ->
146146
val json = context.getBean(Json::class.java)
147147
assertThat(json.decodeFromString<DataObject>("""{"stringField":"hello", "anotherField":"value"}"""))
@@ -152,7 +152,7 @@ class KotlinSerializationAutoConfigurationTests {
152152
@Test
153153
fun serializeDefaults() {
154154
this.contextRunner
155-
.withPropertyValues("spring.kotlin-serialization.encode-defaults=true")
155+
.withPropertyValues("spring.kotlin.serialization.encode-defaults=true")
156156
.run { context ->
157157
val json = context.getBean(Json::class.java)
158158
assertThat(json.encodeToString(DataObjectWithDefault("hello")))
@@ -163,7 +163,7 @@ class KotlinSerializationAutoConfigurationTests {
163163
@Test
164164
fun serializeExplicitNullsFalse() {
165165
this.contextRunner
166-
.withPropertyValues("spring.kotlin-serialization.explicit-nulls=false")
166+
.withPropertyValues("spring.kotlin.serialization.explicit-nulls=false")
167167
.run { context ->
168168
val json = context.getBean(Json::class.java)
169169
assertThat(json.encodeToString(DataObjectWithDefault(null, "hello")))
@@ -174,7 +174,7 @@ class KotlinSerializationAutoConfigurationTests {
174174
@Test
175175
fun deserializeCoerceInputValues() {
176176
this.contextRunner
177-
.withPropertyValues("spring.kotlin-serialization.coerce-input-values=true")
177+
.withPropertyValues("spring.kotlin.serialization.coerce-input-values=true")
178178
.run { context ->
179179
val json = context.getBean(Json::class.java)
180180
assertThat(json.decodeFromString<DataObjectWithDefault>("""{"stringField":"hello", "defaultField":null}"""))
@@ -185,7 +185,7 @@ class KotlinSerializationAutoConfigurationTests {
185185
@Test
186186
fun serializeStructuredMapKeys() {
187187
this.contextRunner
188-
.withPropertyValues("spring.kotlin-serialization.allow-structured-map-keys=true")
188+
.withPropertyValues("spring.kotlin.serialization.allow-structured-map-keys=true")
189189
.run { context ->
190190
val json = context.getBean(Json::class.java)
191191
val map = mapOf(
@@ -200,7 +200,7 @@ class KotlinSerializationAutoConfigurationTests {
200200
@Test
201201
fun serializeSpecialFloatingPointValues() {
202202
this.contextRunner
203-
.withPropertyValues("spring.kotlin-serialization.allow-special-floating-point-values=true")
203+
.withPropertyValues("spring.kotlin.serialization.allow-special-floating-point-values=true")
204204
.run { context ->
205205
val json = context.getBean(Json::class.java)
206206
assertThat(json.encodeToString(DataObjectDouble(Double.NaN)))
@@ -211,7 +211,7 @@ class KotlinSerializationAutoConfigurationTests {
211211
@Test
212212
fun serializeClassDiscriminator() {
213213
this.contextRunner
214-
.withPropertyValues("spring.kotlin-serialization.class-discriminator=class")
214+
.withPropertyValues("spring.kotlin.serialization.class-discriminator=class")
215215
.run { context ->
216216
val json = context.getBean(Json::class.java)
217217
val value: BaseClass = ChildClass("value")
@@ -223,7 +223,7 @@ class KotlinSerializationAutoConfigurationTests {
223223
@Test
224224
fun serializeClassDiscriminatorNone() {
225225
this.contextRunner
226-
.withPropertyValues("spring.kotlin-serialization.class-discriminator-mode=none")
226+
.withPropertyValues("spring.kotlin.serialization.class-discriminator-mode=none")
227227
.run { context ->
228228
val json = context.getBean(Json::class.java)
229229
val value: BaseClass = ChildClass("value")
@@ -235,7 +235,7 @@ class KotlinSerializationAutoConfigurationTests {
235235
@Test
236236
fun deserializeEnumsCaseInsensitive() {
237237
this.contextRunner
238-
.withPropertyValues("spring.kotlin-serialization.decode-enums-case-insensitive=true")
238+
.withPropertyValues("spring.kotlin.serialization.decode-enums-case-insensitive=true")
239239
.run { context ->
240240
val json = context.getBean(Json::class.java)
241241
assertThat(json.decodeFromString<DataObjectEnumValues>("""{"values":["value_A", "alternative"]}"""))
@@ -246,7 +246,7 @@ class KotlinSerializationAutoConfigurationTests {
246246
@Test
247247
fun deserializeAlternativeNames() {
248248
this.contextRunner
249-
.withPropertyValues("spring.kotlin-serialization.use-alternative-names=false")
249+
.withPropertyValues("spring.kotlin.serialization.use-alternative-names=false")
250250
.run { context ->
251251
val json = context.getBean(Json::class.java)
252252
assertThatExceptionOfType(SerializationException::class.java).isThrownBy {
@@ -259,7 +259,7 @@ class KotlinSerializationAutoConfigurationTests {
259259
@Suppress("JsonStandardCompliance")
260260
fun deserializeTrailingComma() {
261261
this.contextRunner
262-
.withPropertyValues("spring.kotlin-serialization.allow-trailing-comma=true")
262+
.withPropertyValues("spring.kotlin.serialization.allow-trailing-comma=true")
263263
.run { context ->
264264
val json = context.getBean(Json::class.java)
265265
assertThat(json.decodeFromString<DataObject>("""{"stringField":"hello",}"""))
@@ -271,7 +271,7 @@ class KotlinSerializationAutoConfigurationTests {
271271
@Suppress("JsonStandardCompliance")
272272
fun deserializeComments() {
273273
this.contextRunner
274-
.withPropertyValues("spring.kotlin-serialization.allow-comments=true")
274+
.withPropertyValues("spring.kotlin.serialization.allow-comments=true")
275275
.run { context ->
276276
val json = context.getBean(Json::class.java)
277277
assertThat(json.decodeFromString<DataObject>("""{"stringField":"hello" /*comment*/}"""))

0 commit comments

Comments
 (0)