FasterXML / jackson-annotations

Core annotations (annotations that only depend on jackson-core) for Jackson data processor
https://github.com/FasterXML/jackson
Apache License 2.0
1.03k stars 331 forks source link

Rename ambiguous `JsonProperty.Access.*` constants #233

Open overheadhunter opened 1 year ago

overheadhunter commented 1 year ago

I'd like to request a rather trivial change, however it is API-breaking, so I fully understand this can only be done for the next major version:

Today, I got confused by @JsonProperty(value = "...", access = JsonProperty.Access.WRITE_ONLY). I'm in a context, where I read from and write to a json file. So "write" means "serialize" and "read" means "deserialize" in my context.

However, the above constants WRITE_ONLY and READ_ONLY are named from the object mapper's perspective writing values to the java object ("setting") or reading values from java objects ("getting").

In other words: The constant names are highly dependent from the perspective, to say the least. Therefore I'm suggesting to rename them as follows:

old new
AUTO AUTO
READ_ONLY SERIALIZE_ONLY
WRITE_ONLY DESERIALIZE_ONLY
READ_WRITE ANY

(Jackson 2.15.2)

cowtowncoder commented 1 year ago

I''ll keep this as an open request but will note that chances of it getting done ever are slim. The reason being that there are no plans to change compatibility of annotations between 2.x and 3.x, meaning that intent is to -- unlike b/w 1.x and 2.x -- to have same set of annotations, packages and semantics working across Jackson 2.x and 3.x.

This is not to say I disagree with assessment that existing names were not chosen well (my fault). Just that from practical POV the gain is unlikely worth the breakage.