You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (Jira)" <ji...@apache.org> on 2026/10/06 16:46:00 UTC
[jira] [Updated] (CAMEL-24938) camel-tooling-model: do not write deprecationNote to the catalog when it is empty
[ https://issues.apache.org/jira/browse/CAMEL-24938?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen updated CAMEL-24938:
--------------------------------
Fix Version/s: 4.24.0
> 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
> Assignee: shashank
> Priority: Minor
> Fix For: 4.24.0
>
>
> {{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)