Currently, for objects with "additionalProperties": true, the following code gets generated:
private Map<String, Object> additionalProperties = new LinkedHashMap<~>();
@JsonAnyGetter
public Map<String, Object> getAdditionalProperties() { /* ... */ }
@JsonAnySetter
public void setAdditionalProperty(String name, Object value) { /* ... */ }
For state schema evolution, some stream processing frameworks like Flink require POJOs to follow the Java beans naming conventions for getters and setters, e.g., see:
For the case at hand this means that, to avoid trouble, the following setter should be generated:
public void setAdditionalProperties(Map<String, Object> properties) { /* ... */ }
Proposed Solution
It that makes sense in general, by default we could add the missing/canonical setter setAdditionalProperties (acting on the entire set of properties) alongside the current one setAdditionalProperty (acting on individual properties).
Alternatively users could manage that themselves by either providing a custom factory for the additionalProperties or by simply ignoring any unknown properties (via @JsonIgnore).
Problem Statement
Currently, for objects with
"additionalProperties": true
, the following code gets generated:For state schema evolution, some stream processing frameworks like Flink require POJOs to follow the Java beans naming conventions for getters and setters, e.g., see:
For the case at hand this means that, to avoid trouble, the following setter should be generated:
Proposed Solution
It that makes sense in general, by default we could add the missing/canonical setter
setAdditionalProperties
(acting on the entire set of properties) alongside the current onesetAdditionalProperty
(acting on individual properties).Alternatively users could manage that themselves by either providing a custom factory for the
additionalProperties
or by simply ignoring any unknown properties (via@JsonIgnore
).