diff --git a/spring-web/src/main/java/org/springframework/http/converter/support/AllEncompassingFormHttpMessageConverter.java b/spring-web/src/main/java/org/springframework/http/converter/support/AllEncompassingFormHttpMessageConverter.java index 005b9cec69..19a49a9e8d 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/support/AllEncompassingFormHttpMessageConverter.java +++ b/spring-web/src/main/java/org/springframework/http/converter/support/AllEncompassingFormHttpMessageConverter.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2014 the original author or authors. + * Copyright 2002-2015 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. @@ -19,8 +19,10 @@ package org.springframework.http.converter.support; import javax.xml.transform.Source; import org.springframework.http.converter.FormHttpMessageConverter; +import org.springframework.http.converter.json.GsonHttpMessageConverter; import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter; import org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter; +import org.springframework.http.converter.xml.MappingJackson2XmlHttpMessageConverter; import org.springframework.http.converter.xml.SourceHttpMessageConverter; import org.springframework.util.ClassUtils; @@ -29,6 +31,7 @@ import org.springframework.util.ClassUtils; * adding support for XML and JSON-based parts. * * @author Rossen Stoyanchev + * @author Juergen Hoeller * @since 3.2 */ public class AllEncompassingFormHttpMessageConverter extends FormHttpMessageConverter { @@ -40,15 +43,29 @@ public class AllEncompassingFormHttpMessageConverter extends FormHttpMessageConv ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", AllEncompassingFormHttpMessageConverter.class.getClassLoader()) && ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", AllEncompassingFormHttpMessageConverter.class.getClassLoader()); + private static final boolean jackson2XmlPresent = + ClassUtils.isPresent("com.fasterxml.jackson.dataformat.xml.XmlMapper", AllEncompassingFormHttpMessageConverter.class.getClassLoader()); + + private static final boolean gsonPresent = + ClassUtils.isPresent("com.google.gson.Gson", AllEncompassingFormHttpMessageConverter.class.getClassLoader()); + public AllEncompassingFormHttpMessageConverter() { addPartConverter(new SourceHttpMessageConverter()); - if (jaxb2Present) { + + if (jackson2XmlPresent) { + addPartConverter(new MappingJackson2XmlHttpMessageConverter()); + } + else if (jaxb2Present) { addPartConverter(new Jaxb2RootElementHttpMessageConverter()); } + if (jackson2Present) { addPartConverter(new MappingJackson2HttpMessageConverter()); } + else if (gsonPresent) { + addPartConverter(new GsonHttpMessageConverter()); + } } }