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

Claus Ibsen updated CAMEL-24992:
--------------------------------
    Fix Version/s: 4.23.0

> camel-yaml-dsl-validator: say when a rest-openapi call has no value for a 
> path parameter of its operation
> ---------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-24992
>                 URL: https://issues.apache.org/jira/browse/CAMEL-24992
>             Project: Camel
>          Issue Type: Improvement
>          Components: camel-yaml-dsl
>            Reporter: Claus Ibsen
>            Assignee: Claus Ibsen
>            Priority: Major
>             Fix For: 4.23.0
>
>
> Split from CAMEL-24986, whose runtime half is merged. This is the half that 
> prevents the mistake rather than explaining it.
> A {{rest-openapi}} producer calls an operation whose path holds a parameter:
> {code:yaml}
> - to:
>     uri: rest-openapi
>     parameters:
>       specificationUri: stock-api.json
>       operationId: reserveStock
> {code}
> The specification says {{/stock/\{sku\}/reserve}}, so the call needs a header 
> named {{sku}}. When no step before the call sets it, the request goes out 
> with {{\{sku\}}} in the path and the service answers 404. CAMEL-24986 makes 
> the runtime say which parameter it was; this issue is about saying it before 
> the route runs.
> The validator already reads the specification beside the route: 
> {{OpenApiVerbs}} parses it for CAMEL-24844 phase B, to know which operations 
> are a GET and therefore carry no body. The same parse gives the path 
> parameters of each operation, and the walk that phase A does over the steps 
> of a route can see whether any step before the call sets a header of that 
> name.
> h3. Why it is worth doing
> The runtime message arrives after the route has run, and a model's loop is 
> read, write, validate, fix - it does not run the application between edits. 
> The measured effect of moving a message from the runtime to the validator is 
> large: the rung that phase A and B targeted went from 0/5 in four consecutive 
> benchmark series to 4/5 in the first series after the check landed.
> h3. Where it should stay quiet
> Only when the specification is read and the operation is known. A header set 
> by something the walk cannot follow - a bean, a processor, a route that calls 
> this one - has to leave the check silent, the way the body flow walk already 
> stops at anything it cannot prove.



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

Reply via email to