Open tetradon opened 1 year ago
Version 2.11.1 is very old so I would strongly recommend upgrading to a later version, like 2.14.1. There is a chance the issue may have been resolved as there have been many fixes between these minor versions. (although to be honest polymorphic deserialization is tricky with XML using Jackson so there may well be edge cases)
Version 2.11.1 is very old so I would strongly recommend upgrading to a later version, like 2.14.1. There is a chance the issue may have been resolved as there have been many fixes between these minor versions. (although to be honest polymorphic deserialization is tricky with XML using Jackson so there may well be edge cases)
Yeah, the goal is to migrate to the latest, my point is that the issue was introduced in 2.11.1 and actual for all versions after it, including the latest 2.14.1
Ok, as long as it still fail on 2.14.1 that's all I needed; I wasn't sure from the description.
Other than that couple of suggestions:
@JsonIgnoreProperties(ignoreUnknown = true)
on tests -- it tends to hide problemsI've removed @JsonIgnoreProperties(ignoreUnknown = true)
and added unit tests to the project with the original case and roundtrip, both are failing
Ok. So the issue is likely combination of problems due to use of polymorphism (for both wrapper and Lists elements), unwrapped List
s and buffering: legal combination of things, but unfortunately something that is known to be problematic (I think #525 may be due to same root cause -- although there is no reordering needed here; possibly #426 too).
I don't know how this could have worked in earlier versions, nor exactly what is going on here. But at least there is a test that I will try to add under failing tests of this module.
Ok, I added a failing test (reproduction) in project so at least there's slightly less set up work for investigation.
But I also realized that while I suspect buffering (and inability for token stream to handle "unwrapped" case when reading from buffer) is related, this does look bit different from other failing cases, as there's "first one missing" symptom. That is probably related to handling of unwrapped-aspect (sequence of items is not contained in one scope but two for some reason).
During Jackson migration, I discovered an issue that looks like a regression in 2.11.1. In this version, the first element in XML array is ignored when I deserialize to the base class.
Output:
Version 2.11.0
Version 2.11.1+
Workarounds:
new XmlMapper().readValue(xmlString, Wrapper.class);