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

Claus Ibsen updated CAMEL-17202:
--------------------------------
    Summary: camel-rest-openapi - If two openapi spec uses the same path only 
one rest endpoint is created  (was: If two openapi spec uses the same path only 
one rest endpoint is created)

> camel-rest-openapi - If two openapi spec uses the same path only one rest 
> endpoint is created
> ---------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-17202
>                 URL: https://issues.apache.org/jira/browse/CAMEL-17202
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-rest-openapi
>    Affects Versions: 3.13.0
>            Reporter: Henrik Karlsson
>            Priority: Major
>             Fix For: 3.14.0
>
>
> If two openapi spec uses the same method, basePath and uriTemplate the 
> componentEndpointUri will be the same. Then the second endpoint is created 
> the first one  is found in the camel context and the host property is 
> overwritten. This causes all calls to these operations in routes goes to the 
> second api.
> API One:
> host: [https://api.one.com|https://api.one.com/]
> method: GET
> basePath: /api
> uriTemplate: /users/\{email}
> title: api-one
> version: 1.0.2
> API Two:
> host: [https://api.two.com|https://api.one.com/]
> method: GET
> basePath: /api
> uriTemplate: /users/\{email}
> title: api-two
> version: 2.0.1
> In RestOpenApiEndpoint.createProducerFor() the componentEndpointUri is 
> created like this:
> {code:java}
> final String componentEndpointUri = "rest:" + method + ":" + basePath + ":" + 
> uriTemplate {code}
> For both of the operations described above the componentEndpointUri will be
> {noformat}
> "rest:GET:/api:/users/{email}"{noformat}
> When the camelContext.getEndpoint is called with this uri for API Two the 
> endpoint for created for API One is returned instead of creating a new and 
> the host parameter is set to '[https://api.two.com'.|https://api.two.com'./]
> To solve this I've added title and version from the openapi spec as query 
> parameters to the componentEndpointUri:
> {code:java}
> final String componentEndpointUri = "rest:" + method + ":" + basePath + ":" + 
> uriTemplate
>     + "?title=" + openapi.info.title + "&version=" + openapi.info.version; 
> {code}
> Title and version are required in OpenAPI 3.x so they should always be 
> available.



--
This message was sent by Atlassian Jira
(v8.20.1#820001)

Reply via email to