Support Jackson filters in combination with serialization view

Issue: SPR-17209
This commit is contained in:
Juergen Hoeller
2018-08-24 12:06:52 +02:00
parent 7056808716
commit 03f1920106
2 changed files with 18 additions and 22 deletions

View File

@@ -256,10 +256,11 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
try {
writePrefix(generator, object);
Object value = object;
Class<?> serializationView = null;
FilterProvider filters = null;
Object value = object;
JavaType javaType = null;
if (object instanceof MappingJacksonValue) {
MappingJacksonValue container = (MappingJacksonValue) object;
value = container.getValue();
@@ -269,15 +270,11 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
if (type != null && TypeUtils.isAssignable(type, value.getClass())) {
javaType = getJavaType(type, null);
}
ObjectWriter objectWriter;
if (serializationView != null) {
objectWriter = this.objectMapper.writerWithView(serializationView);
}
else if (filters != null) {
objectWriter = this.objectMapper.writer(filters);
}
else {
objectWriter = this.objectMapper.writer();
ObjectWriter objectWriter = (serializationView != null ?
this.objectMapper.writerWithView(serializationView) : this.objectMapper.writer());
if (filters != null) {
objectWriter = objectWriter.with(filters);
}
if (javaType != null && javaType.isContainerType()) {
objectWriter = objectWriter.forType(javaType);
@@ -291,7 +288,6 @@ public abstract class AbstractJackson2HttpMessageConverter extends AbstractGener
writeSuffix(generator, object);
generator.flush();
}
catch (InvalidDefinitionException ex) {
throw new HttpMessageConversionException("Type definition error: " + ex.getType(), ex);