Claus Ibsen created CAMEL-24938:
-----------------------------------
Summary: camel-tooling-model: do not write deprecationNote to the
catalog when it is empty
Key: CAMEL-24938
URL: https://issues.apache.org/jira/browse/CAMEL-24938
Project: Camel
Issue Type: Improvement
Components: tooling
Reporter: Claus Ibsen
{{JsonMapper}} writes {{deprecationNote}} for every option whether or not there
is one:
{code:java}
prop.put("deprecationNote", option.getDeprecationNote());
{code}
An option that carries {{@Metadata}} gets the annotation default {{""}}, so the
generated JSON holds {{"deprecationNote": ""}} - a field that says something
about deprecation, on an option that is not deprecated. An option with no
{{@Metadata}} has null and the entry is left out, so whether the field appears
has nothing to do with deprecation and everything to do with whether the option
happens to be annotated.
Counted on main:
* *11125* entries of {{"deprecationNote": ""}} across *803* files under
components and core
* of those, *5352* in *403* component JSONs, about *120 KiB* of catalog that
says nothing
The neighbouring flags already do it the other way - {{supportFileReference}},
{{largeInput}}, {{inputLanguage}}, {{important}} and {{endpointIdentity}} are
written only when set, each with the comment "only include if supported to not
regen all files". {{deprecationNote}} predates that convention.
Proposal: write it only when it is not empty, the same way. {{deprecated:
false}} stays as it is - that one is a real tri-state that readers use.
The change is one line in {{JsonMapper.asJsonObject}}, plus a full
regeneration: every one of those 11125 entries disappears in one commit. That
is a large diff of generated files and no behaviour change - a reader that asks
for {{deprecationNote}} gets null instead of an empty string, which the model
classes already handle, since that is what an unannotated option does today.
Found while reviewing https://github.com/apache/camel/pull/26762, where adding
{{@Metadata(supportSimpleExpression = true)}} to one option made it grow an
empty {{deprecationNote}} - the annotation was blamed, but the convention is
the cause.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)