Created by: bbdouglas
PR checklist
-
Read the contribution guidelines. -
Ran the shell script under ./bin/
to update Petstore sample so that CIs can verify the change. (For instance, only need to run./bin/{LANG}-petstore.sh
,./bin/openapi3/{LANG}-petstore.sh
if updating the {LANG} (e.g. php, ruby, python, etc) code generator or {LANG} client's mustache templates). Windows batch files can be found in.\bin\windows\
. If contributing template-only or documentation-only changes which will change sample output, be sure to build the project first. -
Filed the PR against the correct branch: master
,4.1.x
,5.0.x
. Default:master
. -
Copied the technical committee to review the pull request if your PR is targeting a particular programming language.
Description of the PR
This is a set of mustache templates to create a new Java library called "native" that is backed by the standard Java 11 HTTPClient class.
The majority of files are only lightly edited from the default Java templates. The model classes, for example, are entirely untouched. The main two edits are:
- APIClient.mustache
- api.mustache
It follows the pattern used by Jersey, where the APIClient acts as a mechanism for configuring the clients along with a small repository of utility functions. The individual api classes are created from the settings and helper classes held by the APIClient, and are immutable and thread-safe. Object serialization/deserialization is handled by Jackson, as is common in the other libraries.
We at Yelp currently use these templates to generate clientlibs used in our production microservices architecture. This library lacks some of the features seen in other openapi-generator libraries, but represents a fully functional subset for our use case. Additional features could be added on as needed. Here is a summary of the limitations of the current clientlibs:
- No Validation
- No Auth
- No HTML Forms
- Only native Java dates
- Only application/json mimetype
resolves #3433 (closed)