Skip to content

Relative references in $ref are not supported #74

@tnmtechnologies

Description

@tnmtechnologies

Version

4.5.8

Context

Relative references in $ref are not supported (see OpenAPI spec https://spec.openapis.org/oas/latest.html#relative-references-in-uris) while it worked well with previous OpenAPI library.

The following exception is thrown:

java.lang.UnsupportedOperationException: Can't resolve 'the relative reference to a OpenAPI file ', only internal refs are supported.
at io.vertx.json.schema.impl.JsonRef.resolveUri(JsonRef.java:344)
at io.vertx.json.schema.impl.JsonRef.resolve(JsonRef.java:211)
at io.vertx.json.schema.impl.SchemaRepositoryImpl.resolve(SchemaRepositoryImpl.java:243)
at io.vertx.openapi.contract.OpenAPIVersion.lambda$resolve$3(OpenAPIVersion.java:86)
at io.vertx.core.impl.ContextImpl.lambda$executeBlocking$1(ContextImpl.java:191)
at io.vertx.core.impl.ContextInternal.dispatch(ContextInternal.java:279)
at io.vertx.core.impl.ContextImpl.lambda$internalExecuteBlocking$2(ContextImpl.java:210)
at io.vertx.core.impl.TaskQueue.run(TaskQueue.java:76)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:833)

We work with more than one hundred of OpenAPI files. Most of them use relative references to components in other OpenAPI files.
They are provided by a third party.

It would be nice to support relative references from a configuration option.
It would avoid to update OpenAPI files in order to replace relative references by fake absolute ones and to add them by hand as additionalContractFiles in OpenAPIContract.from method.

Do you have a reproducer?

No

  • Link to github project/gist

Steps to reproduce

Extra

  • Anything that can be relevant such as OS version, JVM version

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions