You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Andrea Cosentino (Jira)" <ji...@apache.org> on 2026/06/09 11:56:00 UTC

[jira] [Work started] (CAMEL-23716) camel-salesforce - align Exchange header constant names with Camel naming convention

     [ https://issues.apache.org/jira/browse/CAMEL-23716?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Work on CAMEL-23716 started by Andrea Cosentino.
------------------------------------------------
> camel-salesforce - align Exchange header constant names with Camel naming convention
> ------------------------------------------------------------------------------------
>
>                 Key: CAMEL-23716
>                 URL: https://issues.apache.org/jira/browse/CAMEL-23716
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-salesforce
>            Reporter: Andrea Cosentino
>            Assignee: Andrea Cosentino
>            Priority: Major
>             Fix For: 4.21.0
>
>
> The Salesforce header constants in {{org.apache.camel.component.salesforce.SalesforceEndpointConfig}} use camelCase string values that do not follow the Camel naming convention, and the camel-salesforce module ships no component-specific HeaderFilterStrategy. As a result these names fall outside the {{CAMEL_FILTER_STARTS_WITH = {"Camel", "camel"}}} set used by the standard HeaderFilterStrategy implementations, so they are not stripped by the default Camel / HTTP header filtering when an exchange flows between transports. {{AbstractSalesforceProcessor.getParameter()}} resolves an incoming header ahead of the endpoint configuration, so a header present on the exchange supersedes the route-time URI parameter.
> The most commonly-set constants drive the REST query / search / Apex dispatch:
> * {{SOBJECT_QUERY = "sObjectQuery"}} - SOQL query passed to {{restClient.query()}} / {{queryAll()}}
> * {{SOBJECT_SEARCH = "sObjectSearch"}} - SOSL search passed to {{restClient.search()}}
> * {{SOBJECT_NAME = "sObjectName"}} / {{SOBJECT_ID = "sObjectId"}} - target object / record for CRUD
> * {{APEX_URL = "apexUrl"}} / {{APEX_METHOD = "apexMethod"}} - Apex REST endpoint + HTTP method passed to {{restClient.apexCall()}}
> * {{APEX_QUERY_PARAM_PREFIX = "apexQueryParam."}} - prefix collected into the Apex call query parameters
> The same applies to the remaining string-value constants in {{SalesforceEndpointConfig}} (sObjectIds, sObjectFields, sObjectIdName, sObjectIdValue, sObjectBlobFieldName, sObjectClass, streamQueryResult, compositeMethod, limit, allOrNone, eventName, eventSchemaId, eventSchemaFormat, contentType, jobId, batchId, resultId, queryLocator, locator, maxRecords, pkChunking*, reportId, includeDetails, reportMetadata, instanceId, defaultReplayId, fallBackReplayId, initialReplayIdMap, replayPreset, pubSubDeserializeType, pubSubPojoClass, approval, rawPath, rawMethod, rawQueryParameters, rawHttpHeaders, notFoundBehaviour, apiVersion, format, rawPayload).
> Rename to {{CamelSalesforce<Name>}} (and {{CamelSalesforceApexQueryParam.}} for the prefix constant) across all constants.
> h3. Fix shape
> Rename the *string value* of each producer-read header constant to {{Camel<Component><Name>}}; keep the Java field name unchanged so routes that reference the constants symbolically continue to compile and run. Update tests that use the literal string values; regenerate component catalog JSON and docs; add an upgrade-guide entry in {{camel-4x-upgrade-guide-4_21.adoc}} marked as a potential breaking change (and matching 4_18 / 4_14 for backports - the component exists on both maintenance branches).
> h3. References
> * Tracker: CAMEL-23577
> * Precedent (rename pattern): CAMEL-23526 (camel-cxf)
> * Alternative pattern (HeaderFilterStrategy approach): CAMEL-23532 (camel-vertx-websocket / camel-atmosphere-websocket / camel-iggy)



--
This message was sent by Atlassian Jira
(v8.20.10#820010)