swagger-api / swagger-api/swagger-codegen
Unable to load RELATIVE ref: ../../models/BadRequest.yaml path: /
Open
Nobody has claimed this yet.
- Dominant language
- Mustache
- Stars
- 17.8k
- Forks
- 6k
- PR merge metrics
- No merged PRs in 30d
Description
Description
This works:
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '../../models/GetSessionListResponse.yaml'
This also work:
responses:
400:
$ref: './openapi/models/BadRequest.yaml'
But this don't work:
responses:
400:
$ref: '../../models/BadRequest.yaml'
19:09:07.732 [Thread-0] WARN io.swagger.v3.parser.OpenAPIV3Parser - Exception while resolving:
java.lang.RuntimeException: Unable to load RELATIVE ref: ../../models/BadRequest.yaml path: /
at io.swagger.v3.parser.util.RefUtils.readExternalRef(RefUtils.java:239)
at io.swagger.v3.parser.ResolverCache.loadRef(ResolverCache.java:119)
at io.swagger.v3.parser.processors.ExternalRefProcessor.processRefToExternalResponse(ExternalRefProcessor.java:344)
at io.swagger.v3.parser.processors.ResponseProcessor.processReferenceResponse(ResponseProcessor.java:84)
at io.swagger.v3.parser.processors.ResponseProcessor.processResponse(ResponseProcessor.java:41)
at io.swagger.v3.parser.processors.OperationProcessor.processOperation(OperationProcessor.java:56)
at io.swagger.v3.parser.processors.PathsProcessor.processPaths(PathsProcessor.java:84)
at io.swagger.v3.parser.OpenAPIResolver.resolve(OpenAPIResolver.java:49)
at io.swagger.v3.parser.OpenAPIV3Parser.resolve(OpenAPIV3Parser.java:172)
at io.swagger.v3.parser.OpenAPIV3Parser.readContents(OpenAPIV3Parser.java:153)
at io.swagger.v3.parser.OpenAPIV3Parser.readLocation(OpenAPIV3Parser.java:89)
at io.swagger.parser.OpenAPIParser.readLocation(OpenAPIParser.java:16)
at io.swagger.codegen.v3.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:517)
at io.swagger.codegen.v3.cli.cmd.Generate.run(Generate.java:376)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.RuntimeException: Could not find ../../models/BadRequest.yaml on the classpath
at io.swagger.v3.parser.util.ClasspathHelper.loadFileFromClasspath(ClasspathHelper.java:31)
at io.swagger.v3.parser.util.RefUtils.readExternalRef(RefUtils.java:233)
... 14 common frames omitted
19:09:07.737 [Thread-0] WARN io.swagger.v3.parser.OpenAPIV3Parser - Exception while resolving:
java.lang.RuntimeException: Unable to load RELATIVE ref: ../../models/BadRequest.yaml path: /
at io.swagger.v3.parser.util.RefUtils.readExternalRef(RefUtils.java:239)
at io.swagger.v3.parser.ResolverCache.loadRef(ResolverCache.java:119)
at io.swagger.v3.parser.processors.ExternalRefProcessor.processRefToExternalResponse(ExternalRefProcessor.java:344)
at io.swagger.v3.parser.processors.ResponseProcessor.processReferenceResponse(ResponseProcessor.java:84)
at io.swagger.v3.parser.processors.ResponseProcessor.processResponse(ResponseProcessor.java:41)
at io.swagger.v3.parser.processors.OperationProcessor.processOperation(OperationProcessor.java:56)
at io.swagger.v3.parser.processors.PathsProcessor.processPaths(PathsProcessor.java:84)
at io.swagger.v3.parser.OpenAPIResolver.resolve(OpenAPIResolver.java:49)
at io.swagger.v3.parser.OpenAPIV3Parser.resolve(OpenAPIV3Parser.java:172)
at io.swagger.v3.parser.OpenAPIV3Parser.readContents(OpenAPIV3Parser.java:153)
at io.swagger.v3.parser.OpenAPIV3Parser.readLocation(OpenAPIV3Parser.java:89)
at io.swagger.parser.OpenAPIParser.readLocation(OpenAPIParser.java:16)
at io.swagger.codegen.v3.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:526)
at io.swagger.codegen.v3.cli.cmd.Generate.run(Generate.java:376)
at java.base/java.lang.Thread.run(Thread.java:832)
Caused by: java.lang.RuntimeException: Could not find ../../models/BadRequest.yaml on the classpath
at io.swagger.v3.parser.util.ClasspathHelper.loadFileFromClasspath(ClasspathHelper.java:31)
at io.swagger.v3.parser.util.RefUtils.readExternalRef(RefUtils.java:233)
... 14 common frames omitted
Exception in thread "Thread-0" java.lang.NullPointerException: Cannot invoke "io.swagger.v3.oas.models.Components.getSchemas()" because the return value of "io.swagger.v3.oas.models.OpenAPI.getComponents()" is null
at io.swagger.codegen.v3.DefaultGenerator.generateModels(DefaultGenerator.java:334)
at io.swagger.codegen.v3.DefaultGenerator.generate(DefaultGenerator.java:779)
at io.swagger.codegen.v3.cli.cmd.Generate.run(Generate.java:378)
at java.base/java.lang.Thread.run(Thread.java:832)
Swagger-codegen version
swagger-codegen-cli-3.0.22.jar
Swagger declaration file content or url
openapi: 3.0.1
paths:
/system/getSessionList:
$ref: './openapi/paths/system/getSessionList.yaml'
paths/system/getSessionList.yaml:
get:
tags:
- system
summary: Get session list
description: Multiple values
operationId: getSessionList
responses:
200:
description: successful operation
content:
application/json:
schema:
$ref: '../../models/GetSessionListResponse.yaml'
400:
$ref: '../../models/BadRequest.yaml'
Command line used for generation
docker run --rm -v ${PWD}:/local -w /local openjdk java -jar swagger-codegen-cli.jar generate --input-spec /local/openapi.yaml --lang openapi-yaml --output /local/out/ -c /local/openapi-codegen-php.json
Steps to reproduce
Related issues/PRs
Suggest a fix/enhancement
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 io.swagger.v3.parser.util.RefUtils.readExternalRef and the ClasspathHelper.loadFileFromClasspath failure shown in the stack trace, then trace how ResolverCache.loadRef handles the nested path. Reproduce with the supplied Docker command and YAML files. Done means the relative response reference resolves without warnings and generation does not end with the reported NullPointerException.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- api, tooling
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Needs clarification
- Newbie friendliness
- 35/100