[Bug]: OpenAPI 3.1 same-file $ref resolution reports illegal path when raw local path contains spaces
Nobody has claimed this yet.
Assessment
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Newbie friendliness
- 74/100
Research direction
Start with OpenAPIV3Parser.readLocation(...) and the reference-resolution path through Visitor.readURI, ReferenceVisitor.resolveRef, and OpenAPIDereferencer31.dereference. Run the focused test OpenAPIV31ParserUriTest#resolveSameFileReferenceFromRawPathWithSpaces with the provided Maven command; done means the same-file reference resolves without an Illegal character in path error.
Written by the indexing model from the issue text.
Description
Description
OpenAPIV3Parser.readLocation(...) parses an OpenAPI 3.1 document from a raw local filesystem path containing spaces, but same-file $ref resolution records an Illegal character in path error.
The spec is a single file. It does not use sibling or external spec files.
The failing case is a response $ref within the same OpenAPI document:
paths:
/examples:
get:
responses:
'200':
$ref: '#/components/responses/ExampleResponse'
components:
responses:
ExampleResponse:
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/Example'
When the file is parsed from a raw path like:
/tmp/openapi path with spaces.../openapi.yaml
the parser reports Illegal character in path.
Affected Version
Current master / 2.1.46-SNAPSHOT.
Earliest version the bug appears in (if known):
I have also reproduced similar raw-path-with-spaces behavior against released 2.1.x versions, so this does not appear to be a recent regression.
Steps to Reproduce
- Create an OpenAPI 3.1 file in a directory whose path contains spaces.
- Include a same-file response
$ref, such as#/components/responses/ExampleResponse. - Parse it with
OpenAPIV3Parser.readLocation(...)using the raw filesystem path.
Minimal repro branch:
https://github.com/salockhart/swagger-parser/tree/feat/openapi31-space-path-ref-repro
Relevant commit:
d47f782d test: reproduce OpenAPI 3.1 path with spaces ref issue
Focused test command:
mvn -pl modules/swagger-parser-v3 -am \
-Dtest=OpenAPIV31ParserUriTest#resolveSameFileReferenceFromRawPathWithSpaces \
-DfailIfNoTests=false \
-Dsurefire.failIfNoSpecifiedTests=false \
test
Expected Behavior
A raw local path accepted by OpenAPIV3Parser.readLocation(...) should not produce an Illegal character in path error while resolving same-file OpenAPI 3.1 references.
Alternatively, if raw local paths are not intended to be supported when they contain spaces, the parser should fail clearly or document that callers must pass a URI-safe file URL.
Actual Behavior
The parser returns an OpenAPI model, but the parse result contains an error message like:
Illegal character in path at index ...: /tmp/openapi path with spaces.../openapi.yaml
The error is emitted while resolving same-file OpenAPI 3.1 refs.
Logs / Stack Traces
The focused repro test currently fails with:
java.lang.AssertionError: expected [null] but found [Illegal character in path at index ...: /tmp/openapi path with spaces.../openapi.yaml]
The stack trace points through OpenAPI 3.1 reference resolution, including:
io.swagger.v3.parser.reference.Visitor.readURI
io.swagger.v3.parser.reference.ReferenceVisitor.resolveRef
io.swagger.v3.parser.reference.ReferenceVisitor.visitResponse
io.swagger.v3.parser.reference.OpenAPIDereferencer31.dereference
io.swagger.v3.parser.OpenAPIV3Parser.readLocation
Environment
- Java version: reproduced locally with Temurin 25.0.3
- Build tool: Maven
- OS: macOS
Additional Context
Adjacent but not exact existing issues:
- https://github.com/swagger-api/swagger-parser/issues/1572
- https://github.com/swagger-api/swagger-parser/issues/2159
- https://github.com/swagger-api/swagger-parser/issues/2136
Checklist
- I have searched the existing issues and this is not a duplicate.
- I have provided sufficient information for maintainers to reproduce the issue.
- Dominant language
- Java
- Stars
- 867
- Forks
- 560
- Avg merge
- 2d 21h
- Merged PRs (30d)
- 7
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.
More from swagger-api/swagger-parser
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
swagger-api/swagger-parser#2386 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 72/100
swagger-api/swagger-parser#2168 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 65/100
swagger-api/swagger-parser#1922 · 2 comments · 1 reaction ·
-
[Bug]: Regression: resolveFully fails when components key does not match external file basename OpenBug
Difficulty 4/5 3-5 days Newbie friendliness 58/100
swagger-api/swagger-parser#2399 · 3 comments ·
-
Bug
Difficulty 4/5 3-5 days Newbie friendliness 48/100
swagger-api/swagger-parser#2395 ·
All issues in swagger-api/swagger-parser
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
infinispan/infinispan#18150 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
opensearch-project/k-NN#3597 ·
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
-
bug
Difficulty 2/5 1-3 hours Newbie friendliness 82/100