Skip to content

Commit 8d63b74

Browse files
committed
Polish "Add Jsonb support"
Closes gh-9648
1 parent 97aeaa4 commit 8d63b74

File tree

8 files changed

+203
-247
lines changed

8 files changed

+203
-247
lines changed

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

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ class GsonHttpMessageConvertersConfiguration {
4343

4444
@Configuration
4545
@ConditionalOnBean(Gson.class)
46-
@Conditional(PreferGsonOrMissingJacksonAndJsonbCondition.class)
46+
@Conditional(PreferGsonOrJacksonAndJsonbUnavailableCondition.class)
4747
protected static class GsonHttpMessageConverterConfiguration {
4848

4949
@Bean
@@ -56,27 +56,28 @@ public GsonHttpMessageConverter gsonHttpMessageConverter(Gson gson) {
5656

5757
}
5858

59-
private static class PreferGsonOrMissingJacksonAndJsonbCondition extends AnyNestedCondition {
59+
private static class PreferGsonOrJacksonAndJsonbUnavailableCondition
60+
extends AnyNestedCondition {
6061

61-
PreferGsonOrMissingJacksonAndJsonbCondition() {
62+
PreferGsonOrJacksonAndJsonbUnavailableCondition() {
6263
super(ConfigurationPhase.REGISTER_BEAN);
6364
}
6465

65-
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY, havingValue = "gson", matchIfMissing = false)
66+
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY, havingValue = "gson")
6667
static class GsonPreferred {
6768

6869
}
6970

70-
@Conditional(JacksonAndJsonbMissing.class)
71-
static class JacksonJsonbMissing {
71+
@Conditional(JacksonAndJsonbUnavailable.class)
72+
static class JacksonJsonbUnavailable {
7273

7374
}
7475

7576
}
7677

77-
private static class JacksonAndJsonbMissing extends NoneNestedConditions {
78+
private static class JacksonAndJsonbUnavailable extends NoneNestedConditions {
7879

79-
JacksonAndJsonbMissing() {
80+
JacksonAndJsonbUnavailable() {
8081
super(ConfigurationPhase.REGISTER_BEAN);
8182
}
8283

@@ -86,7 +87,7 @@ static class JacksonMissing {
8687
}
8788

8889
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY, havingValue = "jsonb")
89-
static class JsonbMissing {
90+
static class JsonbPreferred {
9091

9192
}
9293

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

Lines changed: 6 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
2424
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
2525
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
26-
import org.springframework.boot.autoconfigure.condition.NoneNestedConditions;
2726
import org.springframework.context.annotation.Bean;
2827
import org.springframework.context.annotation.Conditional;
2928
import org.springframework.context.annotation.Configuration;
29+
import org.springframework.http.converter.json.GsonHttpMessageConverter;
3030
import org.springframework.http.converter.json.JsonbHttpMessageConverter;
3131
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
3232

@@ -55,40 +55,24 @@ public JsonbHttpMessageConverter jsonbHttpMessageConverter(Jsonb jsonb) {
5555

5656
}
5757

58-
private static class PreferJsonbOrMissingJacksonAndGsonCondition extends AnyNestedCondition {
58+
private static class PreferJsonbOrMissingJacksonAndGsonCondition
59+
extends AnyNestedCondition {
5960

6061
PreferJsonbOrMissingJacksonAndGsonCondition() {
6162
super(ConfigurationPhase.REGISTER_BEAN);
6263
}
6364

64-
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY, havingValue = "jsonb", matchIfMissing = false)
65+
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY, havingValue = "jsonb")
6566
static class JsonbPreferred {
6667

6768
}
6869

69-
@Conditional(JacksonAndGsonMissing.class)
70-
static class JacksonGsonMissing {
70+
@ConditionalOnMissingBean({ MappingJackson2HttpMessageConverter.class, GsonHttpMessageConverter.class })
71+
static class JacksonAndGsonMissing {
7172

7273
}
7374

7475
}
7576

76-
private static class JacksonAndGsonMissing extends NoneNestedConditions {
77-
78-
JacksonAndGsonMissing() {
79-
super(ConfigurationPhase.REGISTER_BEAN);
80-
}
81-
82-
@ConditionalOnBean(MappingJackson2HttpMessageConverter.class)
83-
static class JacksonMissing {
84-
85-
}
86-
87-
@ConditionalOnProperty(name = HttpMessageConvertersAutoConfiguration.PREFERRED_MAPPER_PROPERTY, havingValue = "gson")
88-
static class GsonMissing {
89-
90-
}
91-
92-
}
9377

9478
}

spring-boot-autoconfigure/src/main/resources/META-INF/additional-spring-configuration-metadata.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -200,7 +200,7 @@
200200
{
201201
"name": "spring.http.converters.preferred-json-mapper",
202202
"type": "java.lang.String",
203-
"description": "Preferred JSON mapper to use for HTTP message conversion. Set to \"gson\" to force the use of Gson when both it and Jackson are on the classpath."
203+
"description": "Preferred JSON mapper to use for HTTP message conversion, auto-detected according to the environment by default."
204204
},
205205
{
206206
"name": "spring.jersey.type",

0 commit comments

Comments
 (0)