From 38db64e0d8668328bd7f806bcdbc70245289a07d Mon Sep 17 00:00:00 2001 From: Sebastien Deleuze Date: Sat, 17 Jun 2017 00:07:59 +0200 Subject: [PATCH] Warn when Jackson + Kotlin are used without jackson-module-kotlin Issue: SPR-15658 --- .../json/Jackson2ObjectMapperBuilder.java | 22 +++++++++++-------- 1 file changed, 13 insertions(+), 9 deletions(-) diff --git a/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java b/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java index d4d6b0a1729..02b8d89c0ec 100644 --- a/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java +++ b/spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java @@ -53,6 +53,8 @@ import com.fasterxml.jackson.dataformat.smile.SmileFactory; import com.fasterxml.jackson.dataformat.xml.JacksonXmlModule; import com.fasterxml.jackson.dataformat.xml.XmlFactory; import com.fasterxml.jackson.dataformat.xml.XmlMapper; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.springframework.beans.BeanUtils; import org.springframework.beans.FatalBeanException; @@ -93,6 +95,16 @@ import org.springframework.util.StringUtils; */ public class Jackson2ObjectMapperBuilder { + private final Log logger = LogFactory.getLog(getClass()); + + private final Map, Class> mixIns = new HashMap<>(); + + private final Map, JsonSerializer> serializers = new LinkedHashMap<>(); + + private final Map, JsonDeserializer> deserializers = new LinkedHashMap<>(); + + private final Map features = new HashMap<>(); + private boolean createXmlMapper = false; private JsonFactory factory; @@ -113,14 +125,6 @@ public class Jackson2ObjectMapperBuilder { private FilterProvider filters; - private final Map, Class> mixIns = new HashMap<>(); - - private final Map, JsonSerializer> serializers = new LinkedHashMap<>(); - - private final Map, JsonDeserializer> deserializers = new LinkedHashMap<>(); - - private final Map features = new HashMap<>(); - private List modules; private Class[] moduleClasses; @@ -762,7 +766,7 @@ public class Jackson2ObjectMapperBuilder { objectMapper.registerModule(BeanUtils.instantiateClass(kotlinModule)); } catch (ClassNotFoundException ex) { - // jackson-module-kotlin not available + logger.warn("For Jackson Kotlin classes support please add \"com.fasterxml.jackson.module:jackson-module-kotlin\" to the classpath"); } } }