Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Change default setting of FromXmlParser.Feature.EMPTY_ELEMENT_AS_NULL from true to false #411

Closed
cowtowncoder opened this issue Jun 5, 2020 · 1 comment

Comments

@cowtowncoder
Copy link
Member

In the past it seemed like a good idea to try to make use of slight difference between logically equivalent cases of:

<root>
   <empty/>
   <start></start>
</root>

so that empty would be automatically exposed as null token; whereas start element would have non-null empty String.
This was the behavior until 2.9: 2.9 introduced FromXmlParser.Feature.EMPTY_ELEMENT_AS_NULL to control whether this should be done or not: if disabled, both were equivalent, exposing them as start-end pair regardless.
This is more compatible with the logical content model of XML, but default was left as "enabled" for backwards compatibility.

However: with 2.12 there is much better support for various things:

  1. Exposing xsi:nil attributes for true nulls (added in 2.10.0)
  2. Allowing flexible coercions from empty String into "empty" POJOs, collections, maps

so it seems much more likely that users find defaulting of this setting to false as the right behavior.

I realize that change in behavior can cause issues but in this case I think change is warranted: it is also what 3.0 is planned to use.

@cowtowncoder cowtowncoder changed the title Change default setting of FromXmlParser.Feature.EMPTY_ELEMENT_AS_NULL Change default setting of FromXmlParser.Feature.EMPTY_ELEMENT_AS_NULL from true to false Jun 5, 2020
@ilgrosso
Copy link

For everyone having troubles upgrading to 2.12 because of the current change: please have a look at #437 for some backgorund and possible solution.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants