-
Notifications
You must be signed in to change notification settings - Fork 3
JSTEP 2
Note: matching github issue: #35
Tatu Saloranta (@cowtowncoder)
- 2019-02-10: create skeletal version
During Jackson 2.x development, certain default settings have proven either problematic by development team, or non-intuitive/non-optimal by users: latter indicated both by filed issues and comments on mailing list discussions. Since default settings and behavior are important part of the public API, changes have had to wait until major version change in most cases.
This document details proposed/planned changes.
Note that at the time of writing (February 2019), some of the work has already been done. Attempt is made to include such changes in this plan as if work was being planned, even if initial changes have been made.
First, following deprecated features are to be removed from 3.0:
-
USE_STD_BEAN_NAMING: should always be enabled, no need for old slightly differing algorithm -
AUTO_DETECT_xxx: old limited settings superceded by more granular settings -- frees up 5 features
And defaults to following features will be changed:
-
SORT_PROPERTIES_ALPHABETICALLY: default totrue(falsereally doesn't make much sense since it is unstable, and arbitrary based on JVM/JDK)
Changes to defaults:
-
READ_ENUMS_USING_TO_STRING: default totrue(instead offalsethat relies onname()) -
FAIL_ON_UNKNOWN_PROPERTIES: default tofalse? (TOP REQUEST by users)
Other changes, potential:
- Although all features still make sense, would make sense to try to combine some, and/or create new type of configuration to use instead of feature -- for example
-
FAIL_xxxare all kind of similar.DeserializationFail, or "check" or... ? -
READ_xxx_as_yyy, similarly -
ACCEPT_xxx_as_yyy, similarly
-
Changes to defaults:
-
FAIL_ON_EMPTY_BEANS: default tofalse
Other changes, potential:
- Most if not all features seem to make sense, but there are groups that could use unification of some kind
FAIL_ON_xxxWRITE_xxx_as_yyy
- Disable
lenientsetting (that is: default to "strict") - Check defaults of date/time handling
-
DecimalNodecreation viaJsonNodeFactory: default to NOT truncating trailing zeroes (minimal trimming), becauseJsonNodeshould by default expose content as close to way it came.