OpenAPITools / OpenAPITools/openapi-generator
[BUG][JAVA] $ref not working correctly
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 26.8k
- Forks
- 7.7k
- PR merge metrics
- PR metrics pending
Description
Bug Report Checklist
- Have you provided a full/minimal spec to reproduce the issue?
- Have you validated the input using an OpenAPI validator (example)?
- Have you tested with the latest master to confirm the issue still exists?
- Have you searched for related issues/PRs?
- What's the actual output vs expected output?
- [Optional] Sponsorship to speed up the bug fix or feature request (example)
Description
We have the following swagger folder structure in our project:
- api
- endpoints
- schemas
- common-elements (git submodule)
- default-endpoints
- Healthcheck.yml
- default-schemas
DefaultHeaders.yml
Error.yml
- main_api.yml
Now in the Healthcheck file we have the following code which is referencing stuff in the common-elements git submodule:
500:
description: Error on TCS side
headers:
cobaActivityID:
$ref: "../common-elements/headers/DefaultHeaders.yaml#/Response/cobaActivityID"
cobaMachineName:
$ref: "../common-elements/headers/DefaultHeaders.yaml#/Response/cobaMachineName"
content:
application/json;charset=utf-8:
schema:
$ref: "../common-elements/schemas/Error.yaml#/Error"
With this setup we get the following error on generation and even on the teamcity build it is not working.
[WARNING] Exception while resolving:
java.lang.RuntimeException: Unable to load RELATIVE ref: ./common-elements/default-endpoints/common-elements/default-schemas/Error.yaml path: C:\dev\bitbucket\test\api
When we change $ref: "../common-elements/schemas/Error.yaml#/Error" for $ref: "./schemas/Error.yaml#/Error" it is working. But we only need to change it for the schema.
I need your help now. What is wrong here and what would be the correct referencing of the files?
openapi-generator version
5.3.0
Generation Details
mvn clean generate-sources
Steps to reproduce
See above
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the shown Healthcheck YAML, the referenced DefaultHeaders.yaml and Error.yaml files, and the main_api.yml entry point. Reproduce the path-resolution warning with mvn clean generate-sources using openapi-generator 5.3.0, then compare how the header and schema references are resolved. Done means the documented relative references resolve correctly during generation.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api, tooling
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 25/100