Skip to content
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

[REQ] New Jakarta+Eclipse JAX-RS templates #6881

Open
bmarwell opened this issue Jul 7, 2020 · 13 comments
Open

[REQ] New Jakarta+Eclipse JAX-RS templates #6881

bmarwell opened this issue Jul 7, 2020 · 13 comments

Comments

@bmarwell
Copy link

bmarwell commented Jul 7, 2020

Is your feature request related to a problem? Please describe.

This feature requests is intended to get another, completely different implementation of the current jax-rs one.
The current implementation depends on io.swagger imports, as well as jackson as Json provider.

However, with microprofile, new vendor-agnostic APIs have arrived.

Describe the solution you'd like

The new implementation is implementation- and vendor-agnostic.
It is "just" a new set of templates which can easily be derived from the existing ones.

  • org.eclipse.microprofile.openapi.annotations instead of io.swagger.
  • javax.json instead of com.fasterxml.jackson.

Benefits:
Most applicaiton servers, like OpenLiberty, already ship those MicroProfile standards.
When not using this generator, we could ship our applications without jackson and/or swagger dependencies.

The new dependencies are:

    <dependency>
      <groupId>jakarta.validation</groupId>
      <artifactId>jakarta.validation-api</artifactId>
      <version>2.0.2</version>
      <scope>provided</scope>
    </dependency>
    <!-- JSON-B API -->
    <dependency>
      <groupId>jakarta.json.bind</groupId>
      <artifactId>jakarta.json.bind-api</artifactId>
      <version>1.0.2</version>
      <scope>provided</scope>
    </dependency>
    <!-- JSON API -->
    <dependency>
      <groupId>jakarta.json</groupId>
      <artifactId>jakarta.json-api</artifactId>
      <version>1.1.6</version>
      <scope>provided</scope>
    </dependency>
    <!-- OpenAPI -->
    <dependency>
      <groupId>org.eclipse.microprofile.openapi</groupId>
      <artifactId>microprofile-openapi-api</artifactId>
      <version>1.1.2</version>
      <scope>provided</scope>
    </dependency>

Optional:
Instead of javax, prefer the new jakarta namespace:

    <dependency>
      <groupId>jakarta.ws.rs</groupId>
      <artifactId>jakarta.ws.rs-api</artifactId>
      <version>2.1.6</version>
      <scope>provided</scope>
    </dependency>

Describe alternatives you've considered

Using the current "jax-rs" implementation which is in fact "non-jakarta jax-rs plus Jackson plus swagger".
Bloats the war file due to shipping jackson and swagger

Additional context

@bmarwell
Copy link
Author

bmarwell commented Jul 7, 2020

Example for a value class using jsonb and OpenAPI annotations:

package impl;

import org.eclipse.microprofile.openapi.annotations.media.Schema;

import javax.json.bind.annotation.JsonbProperty;

@Schema(
    name = "TaskStatus",
    description = "Current status of the requested task."
)
public class JobStatus {
  @JsonbProperty("current_step")
  @Schema(required = true, name = "current_step", example = "received")
  private final String currentStep;

  // constructor

  // getter

  // toString method
}

@yeekangc
Copy link

yeekangc commented Jul 7, 2020

@turkeylurkey

@asterisk360-admin
Copy link

there is any update of this enhancement?

@bmarwell
Copy link
Author

I would still like to see this as well. Currently I am recreating my classes by hand

@bmarwell
Copy link
Author

bmarwell commented Dec 1, 2020

@yeekangc @turkeylurkey can you ping someone to look at this?

@yeekangc
Copy link

yeekangc commented Dec 1, 2020

Taking a look, @bmarwell. Will see what can be done. Thanks.

@asterisk360-admin
Copy link

@bmarwell @yeekangc @turkeylurkey.
It would be great to generate the client using the microprofile-rest-client api.

@Emily-Jiang
Copy link

Any progress made on this one @yeekangc @turkeylurkey ?

@joschi
Copy link
Contributor

joschi commented Dec 18, 2021

Given the combined expertise of the people commenting in this issue, maybe one of you would like to contribute a generator: https://openapi-generator.tech/docs/new-generator

@bmarwell
Copy link
Author

it is even easier. You don't need a new generator, just a modified copy of some templates!

See: https://github.com/OpenAPITools/openapi-generator/tree/master/modules/openapi-generator/src/main/resources/JavaJaxRS

@igbluz
Copy link

igbluz commented Mar 1, 2022

Hi @bmarwell, @yeekangc @turkeylurkey I am also interested in using openapi-generator within the new OL 22.0.0.x Version with Microprofile 5. Actually there is missing the jakarta imports. Is there somebody doing some effort in adapting the templates? Shouldn't the community provide some templates compatible with JakartaEE? I am not an expert on openapi-generator enhancing, we just use it, but I'm willing to contribute. How can we assure that the right solution will be done?

@Krabbee
Copy link

Krabbee commented Apr 26, 2022

Hi, is there any updates on Jakarta upgrade?

@sans17
Copy link
Contributor

sans17 commented Sep 13, 2022

I see another issue open:
#13124

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

8 participants