apache / apache/camel-quarkus

rest-openapi code generation does not work with Gradle

Open
#7,078 2 comments 0 reactions 0 assignees View on GitHub
area/gradle area/rest-openapi bug
Dominant language
Java
Stars
302
Forks
232
Avg merge
1d 20h
Merged PRs (30d)
114

Description

### Bug description

There is a class loading issue. Seems resolving stuff via the Java `ServiceLoader` has some problems:

```
Caused by: java.util.ServiceConfigurationError: io.swagger.codegen.v3.CodegenConfig: Provider io.swagger.codegen.v3.generators.html.StaticHtmlCodegen could not be instantiated
at io.swagger.codegen.v3.CodegenConfigLoader.forName(CodegenConfigLoader.java:19)
at io.swagger.codegen.v3.config.CodegenConfigurator.loadCodegenConfig(CodegenConfigurator.java:673)
at io.swagger.codegen.v3.config.CodegenConfigurator.toClientOptInput(CodegenConfigurator.java:518)
at org.apache.camel.quarkus.component.rest.openapi.deployment.CamelQuarkusSwaggerCodegenProvider.trigger(CamelQuarkusSwaggerCodegenProvider.java:145)
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 java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
... 23 more
Caused by: java.lang.NoClassDefFoundError: org/commonmark/parser/Parser
at io.swagger.codegen.v3.utils.Markdown.(Markdown.java:15)
at io.swagger.codegen.v3.generators.html.StaticHtmlCodegen.(StaticHtmlCodegen.java:160)
at java.base/jdk.internal.reflect.DirectConstructorHandleAccessor.newInstance(DirectConstructorHandleAccessor.java:62)
... 32 more
Caused by: java.lang.ClassNotFoundException: org.commonmark.parser.Parser
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:569)
at io.quarkus.bootstrap.classloading.QuarkusClassLoader.loadClass(QuarkusClassLoader.java:517)
... 35 more
```

Contributor guide

No contributing guide indexed for this repository

Research direction

Start at CamelQuarkusSwaggerCodegenProvider.trigger and trace how the Gradle rest-openapi code-generation classloader resolves Swagger Codegen providers. Reproduce the failure using the stack trace and inspect the missing org.commonmark.parser.Parser dependency. Done means rest-openapi code generation works with Gradle without the ServiceLoader or ClassNotFoundException shown here.

Written by the indexing model from the issue text.

Assessment

Tech stack
java
Domain
build-system
Issue type
Bug
Difficulty
3/5
Estimated time
1-2 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.