-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
Closed
Milestone
Description
Utilizing jackson-databind-2.7.5.
There seems to be an issue surrounding the _filterId when serializing a Map. The Implementation we are setting a default filter by overriding, the JacksonAnnotationIntrospector findFilterId. A default filterId is set if one is not found. That Id may or may not be found, so we set the SimpleFilterProvider().setFailOnUnknownId to false. However in the Implementation of the MapSerializer there is an issue within the serialize method specifically
if (_filterId != null) {
serializeFilteredFields(value, gen, provider,
findPropertyFilter(provider, _filterId, value), suppressableValue);
} else if (suppressableValue != null) {
serializeOptionalFields(value, gen, provider, suppressableValue);
} else if (_valueSerializer != null) {
serializeFieldsUsing(value, gen, provider, _valueSerializer);
} else {
serializeFields(value, gen, provider);
}
Since the above code block assumes that the filter will be found, null gets passed into serializeFilteredFields resulting in an NPE.
The above I believe could be written:
if (_filterId != null && findPropertyFilter(provider, _filterId, value) != null) {
serializeFilteredFields(value, gen, provider,
findPropertyFilter(provider, _filterId, value), suppressableValue);
} else if (suppressableValue != null) {
serializeOptionalFields(value, gen, provider, suppressableValue);
} else if (_valueSerializer != null) {
serializeFieldsUsing(value, gen, provider, _valueSerializer);
} else {
serializeFields(value, gen, provider);
}
Metadata
Metadata
Assignees
Labels
No labels