Refactor: Unify DTOs for normal/verbose model #676
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Verbose DTOs, like
PhysicalPostalAddressVerboseDto
orLegalEntityVerboseDto
, are very tricky to integrate in our DTO interface hierarchy, because although they have the same properties, some properties have a completely different type (String
vs some genericTypeKeyNameVerboseDto
) and so don't allow easy sub-classing. As a workaroud we sometimes leave the type completely undefined (Any
) or the verbose classes stay completely unrelated to the normal classes.This PR proposes a solution:
With this a verbose DTO can be a subtype of its non-verbose version both containing full type information. In the Kotlin model the verbose property is a separate field (e.g. "typeVerbose") from which the key field (e.g. "type") is derived using a property getter. Just for the API model this separate field is renamed to the base name using
@JsonProperty
and@JsonIgnore
.The custom
DataClassUnwrappedJsonDeserializer
had to be adjusted that it now supports@JsonProperty
.This PR concludes #570