Add Gson converter to MVC config

Issue: SPR-9488
This commit is contained in:
Rossen Stoyanchev
2014-05-22 22:20:55 -04:00
parent bc3ca2dea1
commit e3a6fce403
2 changed files with 16 additions and 2 deletions

View File

@@ -20,6 +20,7 @@ import java.util.List;
import java.util.Properties;
import org.springframework.web.servlet.mvc.method.annotation.JsonViewResponseBodyInterceptor;
import org.springframework.http.converter.json.GsonHttpMessageConverter;
import org.w3c.dom.Element;
import org.springframework.beans.factory.FactoryBean;
@@ -144,6 +145,9 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", AnnotationDrivenBeanDefinitionParser.class.getClassLoader()) &&
ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", AnnotationDrivenBeanDefinitionParser.class.getClassLoader());
private static final boolean gsonPresent =
ClassUtils.isPresent("com.google.gson.Gson", AnnotationDrivenBeanDefinitionParser.class.getClassLoader());
@Override
public BeanDefinition parse(Element element, ParserContext parserContext) {
@@ -379,7 +383,7 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
if (jaxb2Present) {
props.put("xml", MediaType.APPLICATION_XML_VALUE);
}
if (jackson2Present) {
if (jackson2Present || gsonPresent) {
props.put("json", MediaType.APPLICATION_JSON_VALUE);
}
return props;
@@ -493,6 +497,9 @@ class AnnotationDrivenBeanDefinitionParser implements BeanDefinitionParser {
if (jackson2Present) {
messageConverters.add(createConverterDefinition(MappingJackson2HttpMessageConverter.class, source));
}
else if (gsonPresent) {
messageConverters.add(createConverterDefinition(GsonHttpMessageConverter.class, source));
}
}
return messageConverters;
}

View File

@@ -44,6 +44,7 @@ import org.springframework.http.converter.ResourceHttpMessageConverter;
import org.springframework.http.converter.StringHttpMessageConverter;
import org.springframework.http.converter.feed.AtomFeedHttpMessageConverter;
import org.springframework.http.converter.feed.RssChannelHttpMessageConverter;
import org.springframework.http.converter.json.GsonHttpMessageConverter;
import org.springframework.http.converter.json.MappingJackson2HttpMessageConverter;
import org.springframework.http.converter.support.AllEncompassingFormHttpMessageConverter;
import org.springframework.http.converter.xml.Jaxb2RootElementHttpMessageConverter;
@@ -159,6 +160,9 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv
ClassUtils.isPresent("com.fasterxml.jackson.databind.ObjectMapper", WebMvcConfigurationSupport.class.getClassLoader()) &&
ClassUtils.isPresent("com.fasterxml.jackson.core.JsonGenerator", WebMvcConfigurationSupport.class.getClassLoader());
private static final boolean gsonPresent =
ClassUtils.isPresent("com.google.gson.Gson", WebMvcConfigurationSupport.class.getClassLoader());
private ServletContext servletContext;
@@ -290,7 +294,7 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv
if (jaxb2Present) {
map.put("xml", MediaType.APPLICATION_XML);
}
if (jackson2Present) {
if (jackson2Present || gsonPresent) {
map.put("json", MediaType.APPLICATION_JSON);
}
return map;
@@ -605,6 +609,9 @@ public class WebMvcConfigurationSupport implements ApplicationContextAware, Serv
if (jackson2Present) {
messageConverters.add(new MappingJackson2HttpMessageConverter());
}
else if (gsonPresent) {
messageConverters.add(new GsonHttpMessageConverter());
}
}
/**