We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Hi,
I have an OpenAPI description with relative $refs that fails to parse with any version larger than io.swagger.parser.v3:swagger-parser:2.0.28.
It worked until 2.0.28.
See below for the OpenAPI yaml files and the exception.
I have created a test-case that throws the below exception.
broken-ref/apis/foo.yaml broken-ref/examples/foo.example.yaml broken-ref/models/foo.model.yaml broken-ref/openapi30.yaml
#broken-ref/apis/foo.yaml openapi: 3.0.0 info: title: swagger parser bug, worked until 2.0.28 but not since 2.0.29 version: '1.0' paths: '/foo': post: summary: create foo description: Create a new foo. responses: '200': description: a Foo content: application/json: schema: $ref: '#/components/schemas/Foo' examples: Foo Bar: $ref: '#/components/examples/FooExample' requestBody: description: foo data required: true content: application/json: schema: $ref: '#/components/schemas/Foo' examples: Foo Bar: $ref: '#/components/examples/FooExample' components: schemas: Foo: $ref: ../models/foo.model.yaml examples: FooExample: $ref: ../examples/foo.example.yaml
# broken-ref/examples/foo.example.yaml value: foo: bar
#broken-ref/models/foo.model.yaml title: Foo type: object properties: foo: type: string
# broken-ref/openapi30.yaml openapi: 3.0.3 info: title: ref chain version: '1' paths: /foo: $ref: ./apis/foo.yaml#/paths/~1foo
[main] WARN io.swagger.v3.parser.OpenAPIV3Parser - Exception while resolving: java.lang.RuntimeException: Unable to load RELATIVE ref: foo.example path: /Users/hauner/Development/openapi/swagger-parser/modules/swagger-parser-v3/target/test-classes/broken-ref at io.swagger.v3.parser.util.RefUtils.readExternalRef(RefUtils.java:216) at io.swagger.v3.parser.ResolverCache.loadRef(ResolverCache.java:150) at io.swagger.v3.parser.processors.ExternalRefProcessor.processRefToExternalExample(ExternalRefProcessor.java:691) at io.swagger.v3.parser.processors.ExampleProcessor.processReferenceExample(ExampleProcessor.java:45) at io.swagger.v3.parser.processors.ExampleProcessor.processExample(ExampleProcessor.java:30) at io.swagger.v3.parser.processors.ComponentsProcessor.processExamples(ComponentsProcessor.java:183) at io.swagger.v3.parser.processors.ComponentsProcessor.processComponents(ComponentsProcessor.java:111) at io.swagger.v3.parser.OpenAPIResolver.resolve(OpenAPIResolver.java:73) at io.swagger.v3.parser.OpenAPIResolver.resolve(OpenAPIResolver.java:59) at io.swagger.v3.parser.OpenAPIV3Parser.resolve(OpenAPIV3Parser.java:226) at io.swagger.v3.parser.OpenAPIV3Parser.readContents(OpenAPIV3Parser.java:178) at io.swagger.v3.parser.OpenAPIV3Parser.readLocation(OpenAPIV3Parser.java:94) at io.swagger.v3.parser.test.BrokenRefTest.testBrokenRef(BrokenRefTest.java:18) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.base/java.lang.reflect.Method.invoke(Method.java:568) at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:86) at org.testng.internal.Invoker.invokeMethod(Invoker.java:643) at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:820) at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1128) at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129) at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112) at org.testng.TestRunner.privateRun(TestRunner.java:782) at org.testng.TestRunner.run(TestRunner.java:632) at org.testng.SuiteRunner.runTest(SuiteRunner.java:366) at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:361) at org.testng.SuiteRunner.privateRun(SuiteRunner.java:319) at org.testng.SuiteRunner.run(SuiteRunner.java:268) at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52) at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86) at org.testng.TestNG.runSuitesSequentially(TestNG.java:1244) at org.testng.TestNG.runSuitesLocally(TestNG.java:1169) at org.testng.TestNG.run(TestNG.java:1064) at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:66) at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:109) Caused by: java.lang.RuntimeException: Could not find foo.example on the classpath at io.swagger.v3.parser.util.ClasspathHelper.loadFileFromClasspath(ClasspathHelper.java:31) at io.swagger.v3.parser.util.RefUtils.readExternalRef(RefUtils.java:210) ... 35 more
The text was updated successfully, but these errors were encountered:
Thanks for reporting this and for the test. Fixed by #1877
Sorry, something went wrong.
gracekarina
Successfully merging a pull request may close this issue.
Hi,
I have an OpenAPI description with relative $refs that fails to parse with any version larger than io.swagger.parser.v3:swagger-parser:2.0.28.
It worked until 2.0.28.
See below for the OpenAPI yaml files and the exception.
I have created a test-case that throws the below exception.
The text was updated successfully, but these errors were encountered: