Releases: ProjectMapK/jackson-module-kogera
2.18.1-beta15
Enhancements
Update library version
The version of Jackson is now 2.18.1.
#240
Migrated the creator search implementation to findDefaultCreator
Changes similar to the following have been activated
FasterXML/jackson-module-kotlin#818
Fixed nullability of convertValue function argument
Minor refactoring
2.17.3-beta14
2.17.1-beta13
2.17.0-beta12
2.16.1-beta11
Enhancements
Updated kotlinx-metadata-jvm
to 0.9.0
.
Minor initialization performance degradation to fix a destructive change in the API
.
#218
2.16.1-beta10
Enhancements
Some minor refactoring
Breaking changes
The ValueClassDeserializer
has been renamed to WrapsNullableValueClassDeserializer
Despite its name, there was no need to use this class other than as a value class
to wrap nullables.
Therefore, it has been modified to use a special name.
2.16.0-beta9
Enhancements
Enhanced deserialization support for value class wrapping nullable
If the argument is a value class
and non-null
that wraps nullable
and the input is explicit null
, deserialization would previously have failed.
On the other hand, from now on the wrapped null
will be used.
It is also now possible for users to customize this behavior by implementing a ValueClassDeserializer
.
#196
Breaking changes
The exception thrown by the KotlinValueInstantiator
is now InvalidNullException
And the attached message has been changed to default to InvalidNullException
.
#195
Bigfixes
Fix handling of vararg deserialization
When vararg
arguments were used during deserialization, there was a problem with them being treated like non-null
arrays.
Now it is handled as follows.
- Marked as not
isRequired
. - If the input is
undefined
, an empty array is used by default
#197
Fixed a problem where the Nulls setting was ignored if the input was undefined
Previously, in Kogera
, if the input was undefined
and no default argument was set, the nullValueProvider
was not called and the value of JsonSetter(nulls = )
was ignored.
This behavior differed from that of kotlin-module
in that it did not generate the error expected for primitive types.
Therefore, a change has been made to always call nullValueProvider
if the input is undefined
.
Note that this change changes the behavior when undefined
input is received if you are using a JsonDeserializer
that implements absentValue
to return a non-null
value.
#200
Ported
Ported changes made to jackson-module-kotlin
.
2.16.0-beta8
Enhancements
Fix deserialization method of value class
Internal implementation changes have been made regarding deserialization of value class
.
This allows the following functionality to be used
- Deserializer specification by
JsonDeserialize
annotation - Allow
absentValue
set to deserializer to returnvalue class
- Injection of
value class
byJacksonInject
Note that an error will now occur if you have set an absentValue
or other value class
that is unboxed
.
Access checks to ValueCreator
are now performed earlier
Remove unnecessary judgment when a value is missing during deserialization.
This is expected to improve deserialization performance, albeit slightly.
#186
Bigfixes
Implement readResolve
for serializable objects
Fixed a problem where some KDoc
links were broken
2.16.0-beta7
Enhancements
Update library versions
First, the version of Jackson
is now 2.16.0.
Also, kotlinx-metadata-jvm
has been updated to 0.7.0, and along with it, the version of Kotlin
is now 1.8.22
.
The minimum Kotlin
version for this project is the lowest Kotlin
version required by kotlinx-metadata-jvm
.
#175
Reduced resource usage when registering the same KotlinModule instance to multiple mappers
Only one instance of the internal support classes are now created for each instance of KotlinModule
.
This improves resource efficiency and initialization performance when registering KotlinModule
to multiple Mapper
s.
See #173 for details.
Cache sizes may need to be reviewed for hard use cases, as internal processing caches will also be shared.
Also note that calling the set
method on a KotlinModule
can destroy the functionality of the KotlinModule
.
Updating kotlinter
.
To update kotlinter
, some changes have been made to internal package names, etc.
This change does not affect the published API
.
#170
#171
#172
Breaking changes
Consolidate cache size to one property.
The initialCacheSize
/maxCacheSize
properties have been removed and merged into cacheSize: KotlinModule.CacheSize
.
#176
Bigfixes
Implement readResolve
for object
which implements Serializable
.
The problem of multiple instances of object
being created during the JDK
deserialization process has been fixed.
#174
2.15.3-beta6
Enhancements
Improve efficiency of reflection cache
The problem of infrequently used caches being retained has been eliminated, and the maximum number of records to be retained as a cache has been reduced.
See #164 for details.
Please note that the reflectionCacheSize
property has been removed and split into initialCacheSize
and maxCacheSize
.
Improved efficiency of strictNullCheck
Previously strictNullCheck
was done by Kogera
s own Converter
, but now JsonSetter(contentNulls = FAIL)
is used.
This makes null
checking more efficient and error messages clearer (from now on InvalidNullException
will be thrown).
If you have implemented findSetterInfo
by your own AnnotationIntrospector
, or if your JsonSetter
annotation has a non-DEFAULT
value for contentNulls
, the strictNullCheck
may not work as intended.
Also, although unconfirmed, there is a possibility that the behavior may change when the Converter
(Deserializer
) is no longer used.
#159