javaspring-bootswagger

JaxrsOpenApiContextBuilder does not support jakarta


I am using below dependency in my project:-

<dependency>
            <groupId>io.swagger.core.v3</groupId>
            <artifactId>swagger-jaxrs2</artifactId>
            <version>2.2.22</version>
</dependency>

Below is the place where I am trying to generate swagger resources:-

OpenAPI oas = new OpenAPI();
        Info info = new Info();
        info.title("Swagger catalog-db-adapter bootstrap code");
        info.setVersion("1.0.2");

        SwaggerConfiguration oasConfig = new SwaggerConfiguration().openAPI(oas).prettyPrint(true)
                .resourcePackages(Stream.of("org.onap.so.adapters.catalogdb.rest").collect(Collectors.toSet()));

        try {
            new JaxrsOpenApiContextBuilder().application(this).openApiConfiguration(oasConfig).buildContext(true);
        } catch (OpenApiConfigurationException e) {
            throw new RuntimeException(e.getMessage(), e);
        }

But I get an error as JaxrsOpenApiContextBuilder still supports javax and not jakarta yet.Do we have any dependency other than I am using which contains import of jakarta instead of javax


Solution

  • Use the parallel set of Swagger artifacts built for Jakarta EE.

    <!-- https://mvnrepository.com/artifact/io.swagger.core.v3/swagger-jaxrs2-jakarta -->
    <dependency>
        <groupId>io.swagger.core.v3</groupId>
        <artifactId>swagger-jaxrs2-jakarta</artifactId>
        <version>2.2.22</version>
        <scope>runtime</scope>
    </dependency>
    

    To quote the Wiki:

    NOTE: Jakarta namespace support (since version 2.1.7)

    Since version 2.1.7 Swagger Core supports also Jakarta namespace, with a parallel set of artifacts with -jakarta suffix, providing the same functionality as the "standard" javax namespace ones.

    While behaviour described in this documentation is the same for both namespaces, artifact IDs, JEE / Jakarta EE versions and Jackson versions mentioned refer to javax namespace.

    If you are using jakarta namespace:

    when you read artifact IDs in the form: swagger-* (e.g. swagger-core), replace them with swagger--jakarta (e.g. swagger-core-jakarta) when you read javax. in package names, replace that with jakarta (e.g jakarta.ws.rs.GET) when JEE / Jakarta EE dependencies are provided in examples, replace their version with Jakarta EE 9 versions. When Jackson dependencies are provided in examples, add the jakarta classifier for artifacts supporting it. See Jackson release notes Jakarta namespace Swagger Core artifacts need Jackson 2.12+