-
-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Jackson Release 2.18
Tatu Saloranta edited this page Aug 24, 2024
·
112 revisions
Jackson Version 2.18 started in March, 2024 and is planned to complete during August, 2024, with release following in September, 2024.
This wiki page gives a list of links to all changes (with brief descriptions) that will be included, as well as about original plans for bigger changes (and in some cases changes to plans, postponing).
Branch is being close to release lock-down as of August 2024.
No release yet
Same as Jackson 2.17, SDK 26
Same as Jackson 2.17
Kotlin 1.7.x no longer supported (1.8, 1.9, 2.0 are): kotlin#803
JAX-RS Provides will once again support JAX-RS 1.x as per:
- #192: Bring back code to support JAXRS v1 (revert #134 for 2.18)
where support had been earlier removed from Jackson 2.13. Support will not continue to 3.0 but is now planned to continue for the rest of 2.x series
-
databind#512: Add
@JsonWrapped- Matching annotations issue: annotations#42
- Has been on top spot of priority lists since at least 2.8 (mentioned in release notes) -- 8 years ago!!!
- [https://github.com/FasterXML/jackson-databind/issues/4515] -- fully rewritten POJO (including Record) Property Introspection
- Solved 5 previously failing unit tests:
- (only for 3.0) #538: Injection when there is cyclic references fails
-
#806: Problem with
NamingStrategy, creator methods with implicit names -
#2977: Incompatible
FAIL_ON_MISSING_PRIMITIVE_PROPERTIESand field level@JsonProperty -
#3241:
constructorDetectorseems to invalidatedefaultSetterInfofor nullability -
#4119: Exception when deserialization uses a record with a constructor property with
access=READ_ONLY
- Solved 5 previously failing unit tests:
-
databind#562: Allow
@JsonAnySetterto flow through Creators
- More optimized
JsonParser.getFloatValue()/JsonParser.getDoubleValue(): avoidStringcreation when callingFastDoubleParser:
- No changes since 2.17
-
#1230: Improve performance of
floatanddoubleparsing fromTextBuffer -
#1251: InternCache - replace synchronized with
ReentrantLock -
#1252:
ThreadLocalBufferManagerreplace synchronized withReentrantLock - #1257: Increase InternCache default max size from 100 to 200
- #1262: Add diagnostic method pooledCount() in RecyclerPool
-
#1264: Rename shaded
ch.randelshofer:fastdoubleparserclasses to prevent use by downstream consumers -
#1271: Deprecate
LockFreePoolimplementation in 2.18 (remove from 3.0) -
#1274:
NUL-corrupted keys, values on JSON serialization -
#1277: Add back Java 22 optimisation in
FastDoubleParser -
#1284: Optimize
JsonParser.getDoubleValue()/getFloatValue()/getDecimalValue()to avoid String allocation -
#1310: Add new
StreamReadConstraints(maxTokenCount) to limit maximum number of Tokens allowed per document
-
#562: Allow
@JsonAnySetterto flow through Creators -
#806: Problem with
NamingStrategy, creator methods with implicit names -
#2977: Incompatible
FAIL_ON_MISSING_PRIMITIVE_PROPERTIESand field level@JsonProperty -
#3241:
constructorDetectorseems to invalidatedefaultSetterInfofor nullability -
#3439: Java Record
@JsonAnySettervalue is null after deserialization -
#4119: Exception when deserialization uses a record with a constructor property with
access=READ_ONLY -
#4356:
BeanDeserializerModifier::updateBuilder()doesn't work for beans with Creator methods -
#4407:
nulltype id handling does not work withwriteTypePrefix() -
#4452:
@JsonPropertynot serializing field names properly on@JsonCreatorin Record -
#4453: Allow JSON Integer to deserialize into a single-arg constructor of parameter type
double -
#4456: Rework locking in
DeserializerCache -
#4458: Rework synchronized block from
BeanDeserializerBase -
#4464: When
Include.NON_DEFAULTsetting is used,isEmpty()method is not called on the serializer -
#4472: Rework synchronized block in
TypeDeserializerBase -
#4483: Remove
finalon method BeanSerializer.serialize() - #4515: Rewrite Bean Property Introspection logic in Jackson 2.x
-
#4570: Deprecate
ObjectMapper.canDeserialize()/ObjectMapper.canSerialize() -
#4580: Add
MapperFeature.SORT_CREATOR_PROPERTIES_BY_DECLARATION_ORDERto use Creator properties' declaration order for sorting - #4584: Provide extension point for detecting "primary" Constructor for Kotlin (and similar) data classes
-
#4602: Possible wrong use of _arrayDelegateDeserializer in
BeanDeserializerBase::deserializeFromObjectUsingNonDefault() - #4617: Record property serialization order not preserved
-
#4634:
@JsonAnySetternot working when annotated on both constructor parameter & field
- #167: Incompatibility with Avro >=1.9.0 (upgrade to Avro 1.11.3)
- #494: Avro Schema generation: allow mapping Java Enum properties to Avro String values
-
#508: Ignore
specificDatafield on serialization
-
#468: Remove synchronization from
CsvMapper -
#469: Allow CSV to differentiate between
nulland empty fields (foo,,bar vs. foo,"",bar) - #483: Incorrect location of CSV errors
- #485: CSVDecoder: No Long and Int out of range exceptions
- #509: IonValueMapper.builder() not implemented, does not register modules
-
#484: Rework synchronization in
ProtobufMapper
-
#482: Allow passing
ParserImplby a subclass or overwrite the events
- #248: jClass annotations and polymorphic types are ignored when deserializing Android Record fields
- #233: Tolerate JAX-RS 2.2 in jackson-module-jaxb-annotations so that it can be deployed in Liberty alongside features which use 2.2
- #782: Content marked as deprecated has been reorganized. Several constructors and accessors to properties of KotlinModule.Builder that were marked as DeprecationLevel.ERROR have been removed. Also, the content marked as DeprecationLevel.WARNING is now DeprecationLevel.ERROR.
- #803: Update Kotlin version; remove support for 1.7
- #192: Bring back code to support JAXRS v1 (revert #134 for 2.18)
- #193: JacksonJsonProvider has @Produces(MediaType.WILDCARD) and yet hasMatchingMediaType(MediaType.WILDCARD) return false
-
#30:
JacksonJsonProviderhas @Produces(MediaType.WILDCARD) and yet hasMatchingMediaType(MediaType.WILDCARD) return false
- #162: Add support for deserializing Java Records