[
https://issues.apache.org/jira/browse/CAMEL-23577?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=18089018#comment-18089018
]
Andrea Cosentino commented on CAMEL-23577:
------------------------------------------
All sub-tasks of the global Exchange-header-constant naming-convention sweep
are now Resolved. The final batch: jgroups (CAMEL-23510), irc (CAMEL-23629) and
undertow (CAMEL-23588) Fixed; the solr/gridfs naming tickets (CAMEL-23589 /
CAMEL-23586) resolved as duplicates of the work shipped under CAMEL-23597 /
CAMEL-23575. The sweep is complete across main, camel-4.18.x and camel-4.14.x,
with upgrade-guide entries in the canonical 4_21/4_18/4_14 guides on main.
Resolving as Fixed.
_Claude Code on behalf of Andrea Cosentino_
> align Exchange header constant names with Camel naming convention - global
> sweep
> --------------------------------------------------------------------------------
>
> Key: CAMEL-23577
> URL: https://issues.apache.org/jira/browse/CAMEL-23577
> Project: Camel
> Issue Type: Improvement
> Reporter: Andrea Cosentino
> Assignee: Andrea Cosentino
> Priority: Major
> Fix For: 4.21.0
>
>
> Tracking ticket for a project-wide consistency sweep aligning producer-side
> Exchange header constant *values* with the {{Camel<Component>*}} naming
> convention, following the pattern established in CAMEL-23526 ({{camel-cxf}}),
> CAMEL-23461 ({{camel-aws-bedrock}}), CAMEL-23522 ({{camel-mail}} JavaMail
> session properties), CAMEL-23532 ({{camel-vertx-websocket}} /
> {{camel-atmosphere-websocket}} / {{camel-iggy}}), CAMEL-23515
> ({{camel-nats}}), CAMEL-23516 ({{camel-xmpp}}), and CAMEL-23576
> ({{camel-jira}}).
> h3. Why
> The default {{HeaderFilterStrategy}} ({{DefaultHeaderFilterStrategy}})
> filters the {{Camel*}} / {{org.apache.camel.*}} namespace case-insensitively
> at transport boundaries. Producer-side header constants that drive *dispatch*
> (operation, target resource identifier, action) but whose string value is not
> in that namespace cannot benefit from this default filter, and route-author
> migration is more friction-prone than necessary. Renaming constant *values*
> to {{Camel<Component>*}} while keeping the Java field names unchanged makes
> the symbolic reference path migration-free; only routes using literal string
> values need adjustment, documented in the upgrade guide.
> h3. Fix shape
> For each component:
> * Rename the *string value* of each producer-read header constant to
> {{Camel<Component><Name>}}; keep the Java field name unchanged.
> * Producers continue to compile and run without change.
> * Update tests that use the literal string values.
> * Add an upgrade-guide entry in
> {{docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_21.adoc}} (and
> matching 4_18 / 4_14 for backports where the component existed in those
> branches).
> * Re-generate component catalog JSON and docs.
> An alternative fix shape, used by CAMEL-23532, is to introduce a dedicated
> {{HeaderFilterStrategy}} that filters the legacy values on inbound and rely
> on routes carrying a transformed header at the trust boundary. This is
> preferable when the legacy values are part of an externally-visible protocol
> contract (e.g. {{websocket.connectionKey}} in {{camel-undertow}}).
> h3. Sub-tasks (priority order)
> *Cluster A - auth / credential / signing exposure (urgent):*
> * {{camel-shiro}} - SHIRO_SECURITY_USERNAME / SHIRO_SECURITY_PASSWORD /
> SHIRO_SECURITY_TOKEN
> * {{camel-web3j}} - FROM_ADDRESS / TO_ADDRESS / VALUE /
> SIGNED_TRANSACTION_DATA / SHA3_HASH_OF_DATA_TO_SIGN / OPERATION + ~25 more
> RPC argument headers
> * {{camel-pdf}} - DECRYPTION_MATERIAL_HEADER_NAME /
> PROTECTION_POLICY_HEADER_NAME / PDF_DOCUMENT_HEADER_NAME /
> FILES_TO_MERGE_HEADER_NAME
> *Cluster B - OpenStack family:*
> * {{camel-openstack}} - OPERATION / ID / NAME / PASSWORD / ADMIN_PASSWORD /
> ACTION and all resource-identifier headers across keystone, nova, cinder,
> glance, neutron, swift
> *Cluster C - search engines (paired):*
> * {{camel-elasticsearch}} + {{camel-opensearch}} - PARAM_OPERATION /
> PARAM_INDEX_ID / PARAM_INDEX_NAME / PARAM_DOCUMENT_CLASS /
> PARAM_DOCUMENT_MODE / PARAM_WAIT_FOR_ACTIVE_SHARDS / PARAM_SCROLL /
> PARAM_SIZE / PARAM_FROM
> *Cluster D - GitHub (paired):*
> * {{camel-github}} + {{camel-github2}} - GITHUB_PULLREQUEST /
> GITHUB_INRESPONSETO / GITHUB_PULLREQUEST_HEAD_COMMIT_SHA / GITHUB_ISSUE_TITLE
> *Cluster E - Google cloud APIs:*
> * {{camel-google-functions}} / {{camel-google-secret-manager}} /
> {{camel-google-vision}} / {{camel-google-text-to-speech}} /
> {{camel-google-speech-to-text}} - OPERATION and deploy-side controls
> (ENTRY_POINT, RUNTIME, SOURCE_ARCHIVE_URL in functions)
> *Cluster F - miscellaneous data stores:*
> * {{camel-kafka}} - kafka.OVERRIDE_TOPIC / kafka.KEY / kafka.PARTITION_KEY /
> kafka.OVERRIDE_TIMESTAMP
> * {{camel-arangodb}} - ARANGO_KEY / RESULT_CLASS_TYPE
> * {{camel-mongodb-gridfs}} - GRIDFS_OPERATION / GRIDFS_OBJECT_ID /
> GRIDFS_METADATA / GRIDFS_CHUNKSIZE
> * {{camel-jt400}} - KEY for keyed-data-queue write
> *Cluster G - undertow websocket (CAMEL-23532 follow-on):*
> * {{camel-undertow}} - websocket.connectionKey / websocket.connectionKey.list
> / websocket.sendToAll
> *Cluster H - Solr prefix iterate-and-trust:*
> * {{camel-solr}} - SolrField. / SolrParam. prefixes
> *Cluster I - low priority:*
> * {{camel-milo}} - HEADER_AWAIT
> * {{camel-mail}} - delete / moveTo / copyTo consumer-side dispatch (companion
> to CAMEL-23522)
> h3. Reference precedents
> * CAMEL-23526 (camel-cxf): renamed constant values, Java fields unchanged
> * CAMEL-23532 (camel-vertx-websocket / camel-atmosphere-websocket /
> camel-iggy): added a dedicated HeaderFilterStrategy aligned with sibling
> components
> * CAMEL-23522 (camel-mail): gated risky-property mapping behind opt-in
> * CAMEL-23461 (camel-aws-bedrock): renamed one header value
> * CAMEL-23515 ({{camel-nats}}), CAMEL-23516 ({{camel-xmpp}}): dedicated
> HeaderFilterStrategy approach
> h3. Backport policy
> Defects in this family predate 4.x. Each sub-task should consider backports
> to {{camel-4.18.x}} and {{camel-4.14.x}} where the component exists on those
> branches. Backport decisions are recorded on the per-component sub-tasks
> rather than on this tracker.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)