Skip to content

Latest commit

 

History

History
27 lines (22 loc) · 1.68 KB

KogeraSpecificImplementations.md

File metadata and controls

27 lines (22 loc) · 1.68 KB

In jackson-module-kogera, there are several intentional design changes that are destructive.
This page summarizes them.

Common

Change of hasRequiredMarker specification

The KotlinAnnotationIntrospector::hasRequiredMarker function in jackson-module-kotlin has several problems. In kogera, the specification has been revised as follows.

  • If required = true is specified in the JsonProperty annotation, the result is preferred.
    • This should not be overridden, as it will not be true unless explicitly specified by the user.
    • This implementation follows the basic policy of Jackson.
  • Processing on field that has accessors are skipped.
  • The FAIL_ON_NULL_FOR_PRIMITIVES option does not affect the results.
    • In kogera, the deserialization behavior is not affected by whether the argument is of type primitive or not.
  • The nullToEmpty option only affects deserialization.
    • As for JvmField, there was no way to distinguish between contexts, so that option affects serialization.

Stricter visibility and privatization of some codes

In jackson-module-kotlin, some code has been inadvertently released. If code is released inadvertently, it will be difficult to change it considering dependencies.

Therefore, in kogera, explicitApi is enabled and all but the minimum code is kept private. I will consider making the classes public again when we receive requests for them.

Remove old options and deprecated code

Because jackson-module-kotlin is a framework with a long history, some old code and options remain.
In kogera, those options have been removed.