Browse Source

Require Jackson 2.6+, FreeMarker 2.3.21+, XStream 1.4.5+

Issue: SPR-13062
pull/937/head
Juergen Hoeller 9 years ago
parent
commit
8ce5e88c66
  1. 8
      spring-context-support/src/main/java/org/springframework/ui/freemarker/FreeMarkerConfigurationFactory.java
  2. 4
      spring-jms/src/main/java/org/springframework/jms/support/converter/MappingJackson2MessageConverter.java
  3. 16
      spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java
  4. 12
      spring-oxm/src/main/java/org/springframework/oxm/xstream/XStreamMarshaller.java
  5. 22
      spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java
  6. 19
      spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java
  7. 2
      spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java
  8. 4
      spring-web/src/main/java/org/springframework/http/converter/json/MappingJackson2HttpMessageConverter.java
  9. 5
      spring-web/src/main/java/org/springframework/http/converter/xml/MappingJackson2XmlHttpMessageConverter.java
  10. 5
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/freemarker/FreeMarkerView.java
  11. 37
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/AbstractJackson2View.java
  12. 2
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/MappingJackson2JsonView.java
  13. 4
      spring-webmvc/src/main/java/org/springframework/web/servlet/view/xml/MappingJackson2XmlView.java
  14. 4
      spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/Jackson2SockJsMessageCodec.java

8
spring-context-support/src/main/java/org/springframework/ui/freemarker/FreeMarkerConfigurationFactory.java

@ -1,5 +1,5 @@ @@ -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.
@ -316,12 +316,8 @@ public class FreeMarkerConfigurationFactory { @@ -316,12 +316,8 @@ public class FreeMarkerConfigurationFactory {
* @throws TemplateException on FreeMarker initialization failure
* @see #createConfiguration()
*/
@SuppressWarnings("deprecation")
protected Configuration newConfiguration() throws IOException, TemplateException {
// The default Configuration constructor is deprecated as of FreeMarker 2.3.21,
// in favor of specifying a compatibility version - which is a 2.3.21 feature.
// We won't be able to call that for a long while, but custom subclasses can.
return new Configuration();
return new Configuration(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS);
}
/**

4
spring-jms/src/main/java/org/springframework/jms/support/converter/MappingJackson2MessageConverter.java

@ -1,5 +1,5 @@ @@ -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.
@ -50,7 +50,7 @@ import org.springframework.util.ClassUtils; @@ -50,7 +50,7 @@ import org.springframework.util.ClassUtils;
* <li>{@link DeserializationFeature#FAIL_ON_UNKNOWN_PROPERTIES} is disabled</li>
* </ul>
*
* <p>Tested against Jackson 2.2; compatible with Jackson 2.0 and higher.
* <p>Compatible with Jackson 2.6 and higher, as of Spring 4.3.
*
* @author Mark Pollack
* @author Dave Syer

16
spring-messaging/src/main/java/org/springframework/messaging/converter/MappingJackson2MessageConverter.java

@ -50,7 +50,7 @@ import org.springframework.util.MimeType; @@ -50,7 +50,7 @@ import org.springframework.util.MimeType;
* <li>{@link DeserializationFeature#FAIL_ON_UNKNOWN_PROPERTIES} is disabled</li>
* </ul>
*
* <p>Compatible with Jackson 2.1 and higher.
* <p>Compatible with Jackson 2.6 and higher, as of Spring 4.3.
*
* @author Rossen Stoyanchev
* @author Juergen Hoeller
@ -59,11 +59,6 @@ import org.springframework.util.MimeType; @@ -59,11 +59,6 @@ import org.springframework.util.MimeType;
*/
public class MappingJackson2MessageConverter extends AbstractMessageConverter {
// Check for Jackson 2.3's overloaded canDeserialize/canSerialize variants with cause reference
private static final boolean jackson23Available =
ClassUtils.hasMethod(ObjectMapper.class, "canDeserialize", JavaType.class, AtomicReference.class);
private ObjectMapper objectMapper;
private Boolean prettyPrint;
@ -146,7 +141,7 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter { @@ -146,7 +141,7 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter {
return false;
}
JavaType javaType = this.objectMapper.constructType(targetClass);
if (!jackson23Available || !logger.isWarnEnabled()) {
if (!logger.isWarnEnabled()) {
return (this.objectMapper.canDeserialize(javaType) && supportsMimeType(message.getHeaders()));
}
AtomicReference<Throwable> causeRef = new AtomicReference<Throwable>();
@ -168,7 +163,7 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter { @@ -168,7 +163,7 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter {
@Override
protected boolean canConvertTo(Object payload, MessageHeaders headers) {
if (!jackson23Available || !logger.isWarnEnabled()) {
if (!logger.isWarnEnabled()) {
return (this.objectMapper.canSerialize(payload.getClass()) && supportsMimeType(headers));
}
AtomicReference<Throwable> causeRef = new AtomicReference<Throwable>();
@ -195,7 +190,6 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter { @@ -195,7 +190,6 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter {
}
@Override
@SuppressWarnings("deprecation")
protected Object convertFromInternal(Message<?> message, Class<?> targetClass, Object conversionHint) {
JavaType javaType = this.objectMapper.constructType(targetClass);
Object payload = message.getPayload();
@ -204,7 +198,7 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter { @@ -204,7 +198,7 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter {
try {
if (payload instanceof byte[]) {
if (view != null) {
return this.objectMapper.readerWithView(view).withType(javaType).readValue((byte[]) payload);
return this.objectMapper.readerWithView(view).forType(javaType).readValue((byte[]) payload);
}
else {
return this.objectMapper.readValue((byte[]) payload, javaType);
@ -212,7 +206,7 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter { @@ -212,7 +206,7 @@ public class MappingJackson2MessageConverter extends AbstractMessageConverter {
}
else {
if (view != null) {
return this.objectMapper.readerWithView(view).withType(javaType).readValue(payload.toString());
return this.objectMapper.readerWithView(view).forType(javaType).readValue(payload.toString());
}
else {
return this.objectMapper.readValue(payload.toString(), javaType);

12
spring-oxm/src/main/java/org/springframework/oxm/xstream/XStreamMarshaller.java

@ -1,5 +1,5 @@ @@ -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.
@ -44,6 +44,7 @@ import com.thoughtworks.xstream.converters.ConverterRegistry; @@ -44,6 +44,7 @@ import com.thoughtworks.xstream.converters.ConverterRegistry;
import com.thoughtworks.xstream.converters.DataHolder;
import com.thoughtworks.xstream.converters.SingleValueConverter;
import com.thoughtworks.xstream.converters.reflection.ReflectionProvider;
import com.thoughtworks.xstream.core.ClassLoaderReference;
import com.thoughtworks.xstream.core.DefaultConverterLookup;
import com.thoughtworks.xstream.core.util.CompositeClassLoader;
import com.thoughtworks.xstream.io.HierarchicalStreamDriver;
@ -104,7 +105,7 @@ import org.springframework.util.xml.StaxUtils; @@ -104,7 +105,7 @@ import org.springframework.util.xml.StaxUtils;
* Therefore, it has limited namespace support. As such, it is rather unsuitable for
* usage within Web Services.
*
* <p>This marshaller requires XStream 1.4 or higher, as of Spring 4.0.
* <p>This marshaller requires XStream 1.4.5 or higher, as of Spring 4.3.
* Note that {@link XStream} construction has been reworked in 4.0, with the
* stream driver and the class loader getting passed into XStream itself now.
*
@ -405,12 +406,9 @@ public class XStreamMarshaller extends AbstractMarshaller implements Initializin @@ -405,12 +406,9 @@ public class XStreamMarshaller extends AbstractMarshaller implements Initializin
* standard constructors or creating a custom subclass.
* @return the {@code XStream} instance
*/
@SuppressWarnings("deprecation")
protected XStream constructXStream() {
// The referenced XStream constructor has been deprecated as of 1.4.5.
// We're preserving this call for broader XStream 1.4.x compatibility.
return new XStream(this.reflectionProvider, getDefaultDriver(),
this.beanClassLoader, this.mapper, this.converterLookup, this.converterRegistry) {
return new XStream(this.reflectionProvider, getDefaultDriver(), new ClassLoaderReference(this.beanClassLoader),
this.mapper, this.converterLookup, this.converterRegistry) {
@Override
protected MapperWrapper wrapMapper(MapperWrapper next) {
MapperWrapper mapperToWrap = next;

22
spring-web/src/main/java/org/springframework/http/converter/json/AbstractJackson2HttpMessageConverter.java

@ -48,7 +48,7 @@ import org.springframework.util.TypeUtils; @@ -48,7 +48,7 @@ import org.springframework.util.TypeUtils;
* Abstract base class for Jackson based and content type independent
* {@link HttpMessageConverter} implementations.
*
* <p>Compatible with Jackson 2.1 and higher.
* <p>Compatible with Jackson 2.6 and higher, as of Spring 4.3.
*
* @author Arjen Poutsma
* @author Keith Donald
@ -62,14 +62,6 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener @@ -62,14 +62,6 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
public static final Charset DEFAULT_CHARSET = Charset.forName("UTF-8");
// Check for Jackson 2.3's overloaded canDeserialize/canSerialize variants with cause reference
private static final boolean jackson23Available = ClassUtils.hasMethod(ObjectMapper.class,
"canDeserialize", JavaType.class, AtomicReference.class);
// Check for Jackson 2.6+ for support of generic type aware serialization of polymorphic collections
private static final boolean jackson26Available = ClassUtils.hasMethod(ObjectMapper.class,
"setDefaultPrettyPrinter", PrettyPrinter.class);
protected ObjectMapper objectMapper;
@ -144,7 +136,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener @@ -144,7 +136,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
@Override
public boolean canRead(Type type, Class<?> contextClass, MediaType mediaType) {
JavaType javaType = getJavaType(type, contextClass);
if (!jackson23Available || !logger.isWarnEnabled()) {
if (!logger.isWarnEnabled()) {
return (this.objectMapper.canDeserialize(javaType) && canRead(mediaType));
}
AtomicReference<Throwable> causeRef = new AtomicReference<Throwable>();
@ -166,7 +158,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener @@ -166,7 +158,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
@Override
public boolean canWrite(Class<?> clazz, MediaType mediaType) {
if (!jackson23Available || !logger.isWarnEnabled()) {
if (!logger.isWarnEnabled()) {
return (this.objectMapper.canSerialize(clazz) && canWrite(mediaType));
}
AtomicReference<Throwable> causeRef = new AtomicReference<Throwable>();
@ -208,13 +200,12 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener @@ -208,13 +200,12 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
return readJavaType(javaType, inputMessage);
}
@SuppressWarnings("deprecation")
private Object readJavaType(JavaType javaType, HttpInputMessage inputMessage) {
try {
if (inputMessage instanceof MappingJacksonInputMessage) {
Class<?> deserializationView = ((MappingJacksonInputMessage) inputMessage).getDeserializationView();
if (deserializationView != null) {
return this.objectMapper.readerWithView(deserializationView).withType(javaType).
return this.objectMapper.readerWithView(deserializationView).forType(javaType).
readValue(inputMessage.getBody());
}
}
@ -226,7 +217,6 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener @@ -226,7 +217,6 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
}
@Override
@SuppressWarnings("deprecation")
protected void writeInternal(Object object, Type type, HttpOutputMessage outputMessage)
throws IOException, HttpMessageNotWritableException {
@ -245,7 +235,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener @@ -245,7 +235,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
serializationView = container.getSerializationView();
filters = container.getFilters();
}
if (jackson26Available && type != null && value != null && TypeUtils.isAssignable(type, value.getClass())) {
if (type != null && value != null && TypeUtils.isAssignable(type, value.getClass())) {
javaType = getJavaType(type, null);
}
ObjectWriter objectWriter;
@ -259,7 +249,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener @@ -259,7 +249,7 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
objectWriter = this.objectMapper.writer();
}
if (javaType != null && javaType.isContainerType()) {
objectWriter = objectWriter.withType(javaType);
objectWriter = objectWriter.forType(javaType);
}
objectWriter.writeValue(generator, value);

19
spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperBuilder.java

@ -75,7 +75,7 @@ import org.springframework.util.StringUtils; @@ -75,7 +75,7 @@ import org.springframework.util.StringUtils;
* <li><a href="https://github.com/FasterXML/jackson-datatype-joda">jackson-datatype-joda</a>: support for Joda-Time types</li>
* </ul>
*
* <p>Tested against Jackson 2.4, 2.5, 2.6; compatible with Jackson 2.0 and higher.
* <p>Compatible with Jackson 2.6 and higher, as of Spring 4.3.
*
* @author Sebastien Deleuze
* @author Juergen Hoeller
@ -561,7 +561,6 @@ public class Jackson2ObjectMapperBuilder { @@ -561,7 +561,6 @@ public class Jackson2ObjectMapperBuilder {
* settings. This can be applied to any number of {@code ObjectMappers}.
* @param objectMapper the ObjectMapper to configure
*/
@SuppressWarnings("deprecation")
public void configure(ObjectMapper objectMapper) {
Assert.notNull(objectMapper, "ObjectMapper must not be null");
@ -609,13 +608,11 @@ public class Jackson2ObjectMapperBuilder { @@ -609,13 +608,11 @@ public class Jackson2ObjectMapperBuilder {
}
if (this.filters != null) {
// Deprecated as of Jackson 2.6, but just in favor of a fluent variant.
objectMapper.setFilters(this.filters);
objectMapper.setFilterProvider(this.filters);
}
for (Class<?> target : this.mixIns.keySet()) {
// Deprecated as of Jackson 2.5, but just in favor of a fluent variant.
objectMapper.addMixInAnnotations(target, this.mixIns.get(target));
objectMapper.addMixIn(target, this.mixIns.get(target));
}
if (!this.serializers.isEmpty() || !this.deserializers.isEmpty()) {
@ -720,15 +717,7 @@ public class Jackson2ObjectMapperBuilder { @@ -720,15 +717,7 @@ public class Jackson2ObjectMapperBuilder {
objectMapper.registerModule(BeanUtils.instantiate(javaTimeModule));
}
catch (ClassNotFoundException ex) {
// jackson-datatype-jsr310 not available or older than 2.6
try {
Class<? extends Module> jsr310Module = (Class<? extends Module>)
ClassUtils.forName("com.fasterxml.jackson.datatype.jsr310.JSR310Module", this.moduleClassLoader);
objectMapper.registerModule(BeanUtils.instantiate(jsr310Module));
}
catch (ClassNotFoundException ex2) {
// OK, jackson-datatype-jsr310 not available at all...
}
// jackson-datatype-jsr310 not available
}
}

2
spring-web/src/main/java/org/springframework/http/converter/json/Jackson2ObjectMapperFactoryBean.java

@ -127,7 +127,7 @@ import org.springframework.context.ApplicationContextAware; @@ -127,7 +127,7 @@ import org.springframework.context.ApplicationContextAware;
* &lt;/bean
* </pre>
*
* <p>Tested against Jackson 2.4, 2.5, 2.6; compatible with Jackson 2.0 and higher.
* <p>Compatible with Jackson 2.6 and higher, as of Spring 4.3.
*
* @author <a href="mailto:dmitry.katsubo@gmail.com">Dmitry Katsubo</a>
* @author Rossen Stoyanchev

4
spring-web/src/main/java/org/springframework/http/converter/json/MappingJackson2HttpMessageConverter.java

@ -1,5 +1,5 @@ @@ -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.
@ -35,7 +35,7 @@ import org.springframework.http.MediaType; @@ -35,7 +35,7 @@ import org.springframework.http.MediaType;
*
* <p>The default constructor uses the default configuration provided by {@link Jackson2ObjectMapperBuilder}.
*
* <p>Compatible with Jackson 2.1 and higher.
* <p>Compatible with Jackson 2.6 and higher, as of Spring 4.3.
*
* @author Arjen Poutsma
* @author Keith Donald

5
spring-web/src/main/java/org/springframework/http/converter/xml/MappingJackson2XmlHttpMessageConverter.java

@ -1,5 +1,5 @@ @@ -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.
@ -35,7 +35,7 @@ import org.springframework.util.Assert; @@ -35,7 +35,7 @@ import org.springframework.util.Assert;
*
* <p>The default constructor uses the default configuration provided by {@link Jackson2ObjectMapperBuilder}.
*
* <p>Compatible with Jackson 2.1 and higher.
* <p>Compatible with Jackson 2.6 and higher, as of Spring 4.3.
*
* @author Sebastien Deleuze
* @since 4.1
@ -72,4 +72,5 @@ public class MappingJackson2XmlHttpMessageConverter extends AbstractJackson2Http @@ -72,4 +72,5 @@ public class MappingJackson2XmlHttpMessageConverter extends AbstractJackson2Http
Assert.isAssignable(XmlMapper.class, objectMapper.getClass());
super.setObjectMapper(objectMapper);
}
}

5
spring-webmvc/src/main/java/org/springframework/web/servlet/view/freemarker/FreeMarkerView.java

@ -42,6 +42,7 @@ import freemarker.ext.servlet.HttpRequestParametersHashModel; @@ -42,6 +42,7 @@ import freemarker.ext.servlet.HttpRequestParametersHashModel;
import freemarker.ext.servlet.HttpSessionHashModel;
import freemarker.ext.servlet.ServletContextHashModel;
import freemarker.template.Configuration;
import freemarker.template.DefaultObjectWrapperBuilder;
import freemarker.template.ObjectWrapper;
import freemarker.template.SimpleHash;
import freemarker.template.Template;
@ -186,10 +187,10 @@ public class FreeMarkerView extends AbstractTemplateView { @@ -186,10 +187,10 @@ public class FreeMarkerView extends AbstractTemplateView {
* {@link ObjectWrapper#DEFAULT_WRAPPER default wrapper} if none specified.
* @see freemarker.template.Configuration#getObjectWrapper()
*/
@SuppressWarnings("deprecation")
protected ObjectWrapper getObjectWrapper() {
ObjectWrapper ow = getConfiguration().getObjectWrapper();
return (ow != null ? ow : ObjectWrapper.DEFAULT_WRAPPER);
return (ow != null ? ow :
new DefaultObjectWrapperBuilder(Configuration.DEFAULT_INCOMPATIBLE_IMPROVEMENTS).build());
}
/**

37
spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/AbstractJackson2View.java

@ -38,7 +38,7 @@ import org.springframework.web.servlet.view.AbstractView; @@ -38,7 +38,7 @@ import org.springframework.web.servlet.view.AbstractView;
* Abstract base class for Jackson based and content type independent
* {@link AbstractView} implementations.
*
* <p>Compatible with Jackson 2.1 and higher.
* <p>Compatible with Jackson 2.6 and higher, as of Spring 4.3.
*
* @author Jeremy Grelle
* @author Arjen Poutsma
@ -122,12 +122,6 @@ public abstract class AbstractJackson2View extends AbstractView { @@ -122,12 +122,6 @@ public abstract class AbstractJackson2View extends AbstractView {
}
}
/**
* Set the attribute in the model that should be rendered by this view.
* When set, all other model attributes will be ignored.
*/
public abstract void setModelKey(String modelKey);
/**
* Disables caching of the generated JSON.
* <p>Default is {@code true}, which will prevent the client from caching the generated JSON.
@ -187,23 +181,13 @@ public abstract class AbstractJackson2View extends AbstractView { @@ -187,23 +181,13 @@ public abstract class AbstractJackson2View extends AbstractView {
return value;
}
/**
* Filter out undesired attributes from the given model.
* The return value can be either another {@link Map} or a single value object.
* @param model the model, as passed on to {@link #renderMergedOutputModel}
* @return the value to be rendered
*/
protected abstract Object filterModel(Map<String, Object> model);
/**
* Write the actual JSON content to the stream.
* @param stream the output stream to use
* @param object the value to be rendered, as returned from {@link #filterModel}
* @throws IOException if writing failed
*/
protected void writeContent(OutputStream stream, Object object)
throws IOException {
protected void writeContent(OutputStream stream, Object object) throws IOException {
JsonGenerator generator = this.objectMapper.getFactory().createGenerator(stream, this.encoding);
writePrefix(generator, object);
@ -230,13 +214,27 @@ public abstract class AbstractJackson2View extends AbstractView { @@ -230,13 +214,27 @@ public abstract class AbstractJackson2View extends AbstractView {
generator.flush();
}
/**
* Set the attribute in the model that should be rendered by this view.
* When set, all other model attributes will be ignored.
*/
public abstract void setModelKey(String modelKey);
/**
* Filter out undesired attributes from the given model.
* The return value can be either another {@link Map} or a single value object.
* @param model the model, as passed on to {@link #renderMergedOutputModel}
* @return the value to be rendered
*/
protected abstract Object filterModel(Map<String, Object> model);
/**
* Write a prefix before the main content.
* @param generator the generator to use for writing content.
* @param object the object to write to the output message.
*/
protected void writePrefix(JsonGenerator generator, Object object) throws IOException {
}
/**
@ -245,7 +243,6 @@ public abstract class AbstractJackson2View extends AbstractView { @@ -245,7 +243,6 @@ public abstract class AbstractJackson2View extends AbstractView {
* @param object the object to write to the output message.
*/
protected void writeSuffix(JsonGenerator generator, Object object) throws IOException {
}
}

2
spring-webmvc/src/main/java/org/springframework/web/servlet/view/json/MappingJackson2JsonView.java

@ -49,7 +49,7 @@ import org.springframework.web.servlet.View; @@ -49,7 +49,7 @@ import org.springframework.web.servlet.View;
*
* <p>The default constructor uses the default configuration provided by {@link Jackson2ObjectMapperBuilder}.
*
* <p>Compatible with Jackson 2.1 and higher.
* <p>Compatible with Jackson 2.6 and higher, as of Spring 4.3.
*
* @author Jeremy Grelle
* @author Arjen Poutsma

4
spring-webmvc/src/main/java/org/springframework/web/servlet/view/xml/MappingJackson2XmlView.java

@ -1,5 +1,5 @@ @@ -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.
@ -36,7 +36,7 @@ import org.springframework.web.servlet.view.json.AbstractJackson2View; @@ -36,7 +36,7 @@ import org.springframework.web.servlet.view.json.AbstractJackson2View;
*
* <p>The default constructor uses the default configuration provided by {@link Jackson2ObjectMapperBuilder}.
*
* <p>Compatible with Jackson 2.1 and higher.
* <p>Compatible with Jackson 2.6 and higher, as of Spring 4.3.
*
* @author Sebastien Deleuze
* @since 4.1

4
spring-websocket/src/main/java/org/springframework/web/socket/sockjs/frame/Jackson2SockJsMessageCodec.java

@ -1,5 +1,5 @@ @@ -1,5 +1,5 @@
/*
* Copyright 2002-2013 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.
@ -28,7 +28,7 @@ import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder; @@ -28,7 +28,7 @@ import org.springframework.http.converter.json.Jackson2ObjectMapperBuilder;
import org.springframework.util.Assert;
/**
* A Jackson 2.x codec for encoding and decoding SockJS messages.
* A Jackson 2.6+ codec for encoding and decoding SockJS messages.
*
* <p>It customizes Jackson's default properties with the following ones:
* <ul>

Loading…
Cancel
Save