Skip to content

Commit 4dd83c8

Browse files
committed
Merge branch '6.2.x'
2 parents b8d9dee + 2ee7a8e commit 4dd83c8

File tree

2 files changed

+49
-8
lines changed

2 files changed

+49
-8
lines changed

spring-web/src/main/java/org/springframework/web/client/DefaultRestClientBuilder.java

Lines changed: 48 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,19 @@
4747
import org.springframework.http.converter.HttpMessageConverter;
4848
import org.springframework.http.converter.ResourceHttpMessageConverter;
4949
import org.springframework.http.converter.StringHttpMessageConverter;
50+
import org.springframework.http.converter.cbor.KotlinSerializationCborHttpMessageConverter;
5051
import org.springframework.http.converter.cbor.MappingJackson2CborHttpMessageConverter;
52+
import org.springframework.http.converter.feed.AtomFeedHttpMessageConverter;
53+
import org.springframework.http.converter.feed.RssChannelHttpMessageConverter;
5154
import org.springframework.http.converter.json.GsonHttpMessageConverter;
5255
import org.springframework.http.converter.json.JsonbHttpMessageConverter;
5356
import org.springframework.http.converter.json.KotlinSerializationJsonHttpMessageConverter;
5457
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
58+
import org.springframework.http.converter.protobuf.KotlinSerializationProtobufHttpMessageConverter;
5559
import org.springframework.http.converter.smile.MappingJackson2SmileHttpMessageConverter;
5660
import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
61+
import org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter;
62+
import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
5763
import org.springframework.http.converter.yaml.MappingJackson2YamlHttpMessageConverter;
5864
import org.springframework.util.Assert;
5965
import org.springframework.util.ClassUtils;
@@ -86,20 +92,30 @@ final class DefaultRestClientBuilder implements RestClient.Builder {
8692

8793
// message factories
8894

89-
private static final boolean jackson2Present;
95+
private static final boolean romePresent;
9096

91-
private static final boolean gsonPresent;
97+
private static final boolean jaxb2Present;
9298

93-
private static final boolean jsonbPresent;
99+
private static final boolean jackson2Present;
94100

95-
private static final boolean kotlinSerializationJsonPresent;
101+
private static final boolean jackson2XmlPresent;
96102

97103
private static final boolean jackson2SmilePresent;
98104

99105
private static final boolean jackson2CborPresent;
100106

101107
private static final boolean jackson2YamlPresent;
102108

109+
private static final boolean gsonPresent;
110+
111+
private static final boolean jsonbPresent;
112+
113+
private static final boolean kotlinSerializationCborPresent;
114+
115+
private static final boolean kotlinSerializationJsonPresent;
116+
117+
private static final boolean kotlinSerializationProtobufPresent;
118+
103119

104120
static {
105121
ClassLoader loader = DefaultRestClientBuilder.class.getClassLoader();
@@ -109,14 +125,19 @@ final class DefaultRestClientBuilder implements RestClient.Builder {
109125
reactorNettyClientPresent = ClassUtils.isPresent("reactor.netty.http.client.HttpClient", loader);
110126
jdkClientPresent = ClassUtils.isPresent("java.net.http.HttpClient", loader);
111127

128+
romePresent = ClassUtils.isPresent("com.rometools.rome.feed.WireFeed", loader);
129+
jaxb2Present = ClassUtils.isPresent("jakarta.xml.bind.Binder", loader);
112130
jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", loader) &&
113131
ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", loader);
114-
gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", loader);
115-
jsonbPresent = ClassUtils.isPresent("jakarta.json.bind.Jsonb", loader);
116-
kotlinSerializationJsonPresent = ClassUtils.isPresent("kotlinx.serialization.json.Json", loader);
132+
jackson2XmlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", loader);
117133
jackson2SmilePresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.smile.SmileFactory", loader);
118134
jackson2CborPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.cbor.CBORFactory", loader);
119135
jackson2YamlPresent = ClassUtils.isPresent("com.fasterxml.jackson.dataformat.yaml.YAMLFactory", loader);
136+
gsonPresent = ClassUtils.isPresent("com.google.gson.Gson", loader);
137+
jsonbPresent = ClassUtils.isPresent("jakarta.json.bind.Jsonb", loader);
138+
kotlinSerializationCborPresent = ClassUtils.isPresent("kotlinx.serialization.cbor.Cbor", loader);
139+
kotlinSerializationJsonPresent = ClassUtils.isPresent("kotlinx.serialization.json.Json", loader);
140+
kotlinSerializationProtobufPresent = ClassUtils.isPresent("kotlinx.serialization.protobuf.ProtoBuf", loader);
120141
}
121142

122143
private @Nullable String baseUrl;
@@ -419,6 +440,22 @@ private List<HttpMessageConverter<?>> initMessageConverters() {
419440
this.messageConverters.add(new ResourceHttpMessageConverter(false));
420441
this.messageConverters.add(new AllEncompassingFormHttpMessageConverter());
421442

443+
if (romePresent) {
444+
this.messageConverters.add(new AtomFeedHttpMessageConverter());
445+
this.messageConverters.add(new RssChannelHttpMessageConverter());
446+
}
447+
448+
if (jackson2XmlPresent) {
449+
this.messageConverters.add(new MappingJackson2XmlHttpMessageConverter());
450+
}
451+
else if (jaxb2Present) {
452+
this.messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
453+
}
454+
455+
if (kotlinSerializationProtobufPresent) {
456+
this.messageConverters.add(new KotlinSerializationProtobufHttpMessageConverter());
457+
}
458+
422459
if (jackson2Present) {
423460
this.messageConverters.add(new MappingJackson2HttpMessageConverter());
424461
}
@@ -437,9 +474,13 @@ else if (kotlinSerializationJsonPresent) {
437474
if (jackson2CborPresent) {
438475
this.messageConverters.add(new MappingJackson2CborHttpMessageConverter());
439476
}
477+
else if (kotlinSerializationCborPresent) {
478+
this.messageConverters.add(new KotlinSerializationCborHttpMessageConverter());
479+
}
440480
if (jackson2YamlPresent) {
441481
this.messageConverters.add(new MappingJackson2YamlHttpMessageConverter());
442482
}
483+
443484
}
444485
return this.messageConverters;
445486
}

spring-web/src/main/java/org/springframework/web/client/RestTemplate.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -148,6 +148,7 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
148148

149149
static {
150150
ClassLoader classLoader = RestTemplate.class.getClassLoader();
151+
151152
romePresent = ClassUtils.isPresent("com.rometools.rome.feed.WireFeed", classLoader);
152153
jaxb2Present = ClassUtils.isPresent("jakarta.xml.bind.Binder", classLoader);
153154
jackson2Present = ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", classLoader) &&
@@ -185,7 +186,6 @@ public RestTemplate() {
185186
this.messageConverters.add(new ByteArrayHttpMessageConverter());
186187
this.messageConverters.add(new StringHttpMessageConverter());
187188
this.messageConverters.add(new ResourceHttpMessageConverter(false));
188-
189189
this.messageConverters.add(new AllEncompassingFormHttpMessageConverter());
190190

191191
if (romePresent) {

0 commit comments

Comments
 (0)