Skip to content

Client for OAS 3.1 spec can not be generated on windows #1047

New issue

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

Open
Postremus opened this issue Mar 14, 2025 · 4 comments
Open

Client for OAS 3.1 spec can not be generated on windows #1047

Postremus opened this issue Mar 14, 2025 · 4 comments
Labels
area:client This item is related to the client extension

Comments

@Postremus
Copy link
Contributor

When trying to generate client for an openapi 3.1 spec, i get following error on windows.

This can be reproduced using e.g. the petstore openapi 3.1 spec from https://petstore31.swagger.io/
Related to swagger-api/swagger-parser#2136

Can you maybe implement a workaround for this until the upstream bug is fixed?

[INFO] --- quarkus-maven-plugin:3.19.3:generate-code (default) @ openapi-gen-windows ---
[INFO] Generating with dryRun=false
[ERROR] Error resolving schema #/components/schemas/Pets
java.net.URISyntaxException: Illegal character in opaque part at index 2: C:\workspaces\mpp\projects\openapi-gen-windows\src\main\openapi\openapi.yml
at java.net.URI$Parser.fail (URI.java:2995)
at java.net.URI$Parser.checkChars (URI.java:3166)
at java.net.URI$Parser.parse (URI.java:3202)
at java.net.URI. (URI.java:645)
at io.swagger.v3.parser.reference.ReferenceUtils.resolve (ReferenceUtils.java:29)
at io.swagger.v3.parser.reference.ReferenceVisitor.resolveSchemaRef (ReferenceVisitor.java:227)
at io.swagger.v3.parser.reference.ReferenceVisitor.visitSchema (ReferenceVisitor.java:141)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseSchema (OpenAPI31Traverser.java:801)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseMediaType (OpenAPI31Traverser.java:603)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseMap (OpenAPI31Traverser.java:947)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseResponse (OpenAPI31Traverser.java:299)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseMap (OpenAPI31Traverser.java:947)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseResponses (OpenAPI31Traverser.java:270)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseOperation (OpenAPI31Traverser.java:237)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traversePathItem (OpenAPI31Traverser.java:394)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseMap (OpenAPI31Traverser.java:947)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traversePaths (OpenAPI31Traverser.java:197)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverseOpenApi (OpenAPI31Traverser.java:124)
at io.swagger.v3.parser.reference.OpenAPI31Traverser.traverse (OpenAPI31Traverser.java:65)
at io.swagger.v3.parser.reference.OpenAPIDereferencer31.dereference (OpenAPIDereferencer31.java:74)
at io.swagger.v3.parser.OpenAPIV3Parser.resolve (OpenAPIV3Parser.java:227)
at io.swagger.v3.parser.OpenAPIV3Parser.readContents (OpenAPIV3Parser.java:183)
at io.swagger.v3.parser.OpenAPIV3Parser.readLocation (OpenAPIV3Parser.java:97)
at io.swagger.parser.OpenAPIParser.readLocation (OpenAPIParser.java:16)
at org.openapitools.codegen.config.CodegenConfigurator.toContext (CodegenConfigurator.java:686)
at org.openapitools.codegen.config.CodegenConfigurator.toClientOptInput (CodegenConfigurator.java:744)
at io.quarkiverse.openapi.generator.deployment.wrapper.OpenApiClientGeneratorWrapper.generate (OpenApiClientGeneratorWrapper.java:335)
at io.quarkiverse.openapi.generator.deployment.codegen.OpenApiGeneratorCodeGenBase.generate (OpenApiGeneratorCodeGenBase.java:341)
at io.quarkiverse.openapi.generator.deployment.codegen.OpenApiGeneratorCodeGenBase.trigger (OpenApiGeneratorCodeGenBase.java:158)
at io.quarkus.deployment.CodeGenerator.lambda$trigger$4 (CodeGenerator.java:206)
at io.quarkus.deployment.CodeGenerator.callWithClassloader (CodeGenerator.java:181)
at io.quarkus.deployment.CodeGenerator.trigger (CodeGenerator.java:203)
at io.quarkus.deployment.CodeGenerator.initAndRun (CodeGenerator.java:80)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at io.quarkus.maven.GenerateCodeMojo.generateCode (GenerateCodeMojo.java:92)
at io.quarkus.maven.GenerateCodeMojo.doExecute (GenerateCodeMojo.java:59)
at io.quarkus.maven.QuarkusBootstrapMojo.execute (QuarkusBootstrapMojo.java:171)
at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:370)
at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:171)
at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:163)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:299)
at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:193)
at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:106)
at org.apache.maven.cli.MavenCli.execute (MavenCli.java:963)
at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:296)
at org.apache.maven.cli.MavenCli.main (MavenCli.java:199)
at jdk.internal.reflect.DirectMethodHandleAccessor.invoke (DirectMethodHandleAccessor.java:103)
at java.lang.reflect.Method.invoke (Method.java:580)
at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:282)
at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:225)
at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406)
at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347)

@ricardozanini ricardozanini added the area:client This item is related to the client extension label Mar 20, 2025
@ricardozanini
Copy link
Member

ricardozanini commented Mar 20, 2025

Unfortunately, we can't do a workaround for this problem since we rely on their parser. There's a backlog task to move to Apicurio instead. Unfortunately, I don't have the time to make this change atm.

@mbard
Copy link

mbard commented Apr 17, 2025

I have the same issue

@Postremus
Copy link
Contributor Author

@ricardozanini I was able to debug this problem a bit btw.

If I manually convert the path
C:\path\to\openapi.yml
towards
/path/to/openapi.yml
the client gets generated.

(as stated in the linked issue)

Should be done
In OpenApiClientGeneratorWrapper
at
this.configurator.setInputSpec(specFilePath.toString());

@ricardozanini
Copy link
Member

@Postremus mind opening a PR then?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
area:client This item is related to the client extension
Projects
None yet
Development

No branches or pull requests

3 participants