Federico Mariani created CAMEL-24115:
----------------------------------------

             Summary: 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


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)

Reply via email to