Skip to content

Commit 2989fe4

Browse files
committed
Support Jackson based XML serialization in RestTemplate
Issue: SPR-12225
1 parent f27c7df commit 2989fe4

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

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

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
4848
import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
4949
import org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter;
50+
import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter;
5051
import org.springframework.http.converter.xml.SourceHttpMessageConverter;
5152
import org.springframework.util.Assert;
5253
import org.springframework.util.ClassUtils;
@@ -122,6 +123,9 @@ public class RestTemplate extends InterceptingHttpAccessor implements RestOperat
122123
ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", RestTemplate.class.getClassLoader()) &&
123124
ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", RestTemplate.class.getClassLoader());
124125

126+
private static final boolean jackson2XmlPresent =
127+
ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", RestTemplate.class.getClassLoader());
128+
125129
private static final boolean gsonPresent =
126130
ClassUtils.isPresent("com.google.gson.Gson", RestTemplate.class.getClassLoader());
127131

@@ -148,7 +152,10 @@ public RestTemplate() {
148152
this.messageConverters.add(new AtomFeedHttpMessageConverter());
149153
this.messageConverters.add(new RssChannelHttpMessageConverter());
150154
}
151-
if (jaxb2Present) {
155+
if (jackson2XmlPresent) {
156+
messageConverters.add(new MappingJackson2XmlHttpMessageConverter());
157+
}
158+
else if (jaxb2Present) {
152159
this.messageConverters.add(new Jaxb2RootElementHttpMessageConverter());
153160
}
154161
if (jackson2Present) {

spring-web/src/test/java/org/springframework/web/client/RestTemplateIntegrationTests.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -222,7 +222,7 @@ public void jsonPostForObjectWithJacksonView() throws URISyntaxException {
222222
MySampleBean bean = new MySampleBean("with", "with", "without");
223223
MappingJacksonValue jacksonValue = new MappingJacksonValue(bean);
224224
jacksonValue.setSerializationView(MyJacksonView1.class);
225-
HttpEntity<MappingJacksonValue> entity = new HttpEntity<MappingJacksonValue>(jacksonValue);
225+
HttpEntity<MappingJacksonValue> entity = new HttpEntity<MappingJacksonValue>(jacksonValue, entityHeaders);
226226
String s = template.postForObject(baseUrl + "/jsonpost", entity, String.class, "post");
227227
assertTrue(s.contains("\"with1\":\"with\""));
228228
assertFalse(s.contains("\"with2\":\"with\""));

0 commit comments

Comments
 (0)