[
https://issues.apache.org/jira/browse/CAMEL-24115?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen updated CAMEL-24115:
--------------------------------
Fix Version/s: 4.22.0
> camel-rest-openapi: operations without operationId validate against generated
> GENOPID_* ids but dispatch to direct:null at runtime
> ----------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24115
> URL: https://issues.apache.org/jira/browse/CAMEL-24115
> Project: Camel
> Issue Type: Bug
> Components: camel-rest-openapi
> Affects Versions: 4.21.0
> Reporter: Federico Mariani
> Assignee: Claus Ibsen
> Priority: Major
> Labels: code-review
> Fix For: 4.22.0
>
>
> h3. Problem
> CAMEL-20979 (commit 7ec5d50566b5) made
> {{DefaultRestOpenapiProcessorStrategy.validateOpenApi()}} substitute a
> generated id ({{GENOPID_<VERB><sanitized path>}}) when {{operationId}} is
> missing, explicitly so users can add routes for specs they cannot modify. But
> nothing writes the generated id back onto the {{Operation}}: the runtime
> dispatch in {{process()}} uses {{operation.getOperationId()}} directly
> (DefaultRestOpenapiProcessorStrategy.java:203 and :252), which is {{null}}
> for these operations ->
> {{camelContext.hasEndpoint/getEndpoint("direct:null")}}.
> h3. Failure scenario
> Spec with {{GET /users}} and no {{operationId}}:
> * {{missingOperation=fail}} (default): startup fails telling the user to add
> {{direct:GENOPID_GET.users}}; the user adds exactly that route; validation
> passes; every request then resolves {{direct:null}} ->
> {{DirectConsumerNotAvailableException}} -> HTTP 500.
> * {{missingOperation=mock/ignore}}: the user-defined GENOPID route is
> silently never invoked - {{hasEndpoint("direct:null")}} is always null, so
> the mock/ignore branch always wins.
> h3. History
> 7ec5d50566b5 only patched {{validateOpenApi}}; its test
> ({{RestOpenapiProcessorStrategyTest}}) asserts only the validation message,
> never runtime dispatch.
> h3. Fix direction
> Compute the effective operation id once (e.g. in
> {{RestOpenApiProcessor.afterPropertiesConfigured}} when building
> {{RestOpenApiConsumerPath}}, or set the generated id on the {{Operation}})
> and use it in both validation and dispatch.
> ----
> _This issue was researched and filed by Claude Code on behalf of [~croway]
> (GitHub: Croway), as part of a deep code review of camel-rest-openapi and
> camel-openapi-java on main (4.22.0-SNAPSHOT). Full findings document
> available on request._
--
This message was sent by Atlassian Jira
(v8.20.10#820010)