Skip to content

[feature] [jaxrs-spec] Use tag by default to group paths#4939

Closed
shybovycha wants to merge 3 commits intoOpenAPITools:5.0.xfrom
shybovycha:enhancement-5.0.x/jaxrs-spec-use-tag-by-default-to-group-paths
Closed

[feature] [jaxrs-spec] Use tag by default to group paths#4939
shybovycha wants to merge 3 commits intoOpenAPITools:5.0.xfrom
shybovycha:enhancement-5.0.x/jaxrs-spec-use-tag-by-default-to-group-paths

Conversation

@shybovycha
Copy link
Copy Markdown
Contributor

@shybovycha shybovycha commented Jan 7, 2020

Introduction

There is one quite nifty but undocumented option, apis, which could be set in system properties. It defines which API groups should be generated. Given the undocumented internal behavior of grouping all operations by tags, this gives an easy way to migrate existing projects to Open-API with minimal changes by automatically generating API definitions and then generating API interfaces with operations automatically grouped according to the existing endpoints.

Hence I am creating a few PRs (#4937, #4938, #4939) addressing this hidden gem of openapi-generator.

This change

Using tag as the primary key to group paths and operations.

This comes extremely handy when used together with apis system property (or additionalProperties one, as in #4937 ) so the operations could be grouped into resources.

I tested it on our existing project together with swagger-maven-plugin (specifically this hack) to minimize the change when migrating the whole project to Open-API (mostly automatically).

This definitely is a breaking change (as the resources generated will have different names), so targeting 5.0.x.

PR checklist

  • Read the contribution guidelines.
  • If contributing template-only or documentation-only changes which will change sample output, build the project before.
  • Run the shell script(s) under ./bin/ (or Windows batch scripts under.\bin\windows) to update Petstore samples related to your fix. This is important, as CI jobs will verify all generator outputs of your HEAD commit, and these must match the expectations made by your contribution. You only need to run ./bin/{LANG}-petstore.sh, ./bin/openapi3/{LANG}-petstore.sh if updating the code or mustache templates for a language ({LANG}) (e.g. php, ruby, python, etc).
  • File the PR against the correct branch: master, 4.3.x, 5.0.x. Default: master.
  • Copy the technical committee to review the pull request if your PR is targeting a particular programming language.

@shybovycha shybovycha changed the title [enhancement] [jaxrs-spec] Use tag by default to group paths [feature] [jaxrs-spec] Use tag by default to group paths Jan 7, 2020
} else {
if (co.path.startsWith("/" + basePath)) {
co.path = co.path.substring(("/" + basePath).length());
String operationKey = tag;
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I like this idea, however I think it should be guarded by an option the way other generators are doing this (see useTags in SpringCodegen. It looks like defaulting to tags will also have a negative impact on user upgrades for those relying on the subresource behaviors (or groupings in general). I think it would be best to have the opt-in option for 5.0 and make it default at some point later, maybe 5.1?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

like this idea. this should make this more a workaround rather than a breaking change. will change my approach

@wing328 wing328 closed this May 11, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants