Fix #1622: @JsonIgnoreProperties not applied due to deserializer cach… #5502
+443
−220
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue: #1622, #3355
While working on #1622, I fortunately fixed #3355 as well (?)
Here's what I think was happening:
When
Childdeserializer is created throughParent'schildrenfield,it gets built without
_propertyBasedCreator. (_propertyBasedCreator == null)The root cause is the timing issue between
createContextual()andresolve().childrenfieldcreateContextual()is called to apply@JsonIgnoreProperties_propertyBasedCreatoris stillnull(resolve() not called yet)_propertyBasedCreatorresolve()is called later on the original deserializer, but doesn't affect the contextual oneSo I fixed it, reconstructing PropertyBasedCreator in createContextual() when _propertyBasedCreator == null is detected.
When you have a moment, please take a look.